Index: openacs-4/packages/acs-core-docs/www/acs-admin.html
===================================================================
RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/acs-admin.html,v
diff -u -r1.38 -r1.38.4.1
--- openacs-4/packages/acs-core-docs/www/acs-admin.html	17 Jul 2006 05:38:31 -0000	1.38
+++ openacs-4/packages/acs-core-docs/www/acs-admin.html	3 Feb 2008 12:07:37 -0000	1.38.4.1
@@ -1 +1,2 @@
-<html><head><meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"><title>Part�II.�Administrator's Guide</title><meta name="generator" content="DocBook XSL Stylesheets V1.70.1"><link rel="home" href="index.html" title="OpenACS Core Documentation"><link rel="up" href="index.html" title="OpenACS Core Documentation"><link rel="previous" href="release-notes.html" title="OpenACS Release Notes"><link rel="next" href="install-overview.html" title="Chapter�2.�Installation Overview"><link rel="stylesheet" href="openacs.css" type="text/css"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><a href="http://openacs.org"><img src="/doc/images/alex.jpg" border="0" alt="Alex logo"></a><table width="100%" summary="Navigation header" border="0"><tr><td width="20%" align="left"><a accesskey="p" href="release-notes.html">Prev</a> </td><th width="60%" align="center"></th><td width="20%" align="right"> <a accesskey="n" href="install-overview.html">Next</a></td></tr></table><hr></div><div class="part" lang="en"><div class="titlepage"><div><div><h1 class="title"><a name="acs-admin"></a>Part�II.�Administrator's Guide</h1></div></div></div><div class="toc"><p><b>Table of Contents</b></p><dl><dt><span class="chapter"><a href="install-overview.html">2. Installation Overview</a></span></dt><dd><dl><dt><span class="sect1"><a href="install-steps.html">Basic Steps</a></span></dt><dt><span class="sect1"><a href="individual-programs.html">Prerequisite Software</a></span></dt></dl></dd><dt><span class="chapter"><a href="complete-install.html">3. Complete Installation</a></span></dt><dd><dl><dt><span class="sect1"><a href="unix-installation.html">Install a Unix-like system and supporting software</a></span></dt><dt><span class="sect1"><a href="oracle.html">Install Oracle 8.1.7</a></span></dt><dt><span class="sect1"><a href="postgres.html">Install PostgreSQL</a></span></dt><dt><span class="sect1"><a href="aolserver4.html">Install AOLserver 4</a></span></dt><dt><span class="sect1"><a href="openacs.html">Install OpenACS 5.2.3rc1</a></span></dt><dt><span class="sect1"><a href="win2k-installation.html">OpenACS Installation Guide for Windows2000</a></span></dt><dt><span class="sect1"><a href="mac-installation.html">OpenACS Installation Guide for Mac OS X</a></span></dt></dl></dd><dt><span class="chapter"><a href="configuring-new-site.html">4. Configuring a new OpenACS Site</a></span></dt><dd><dl><dt><span class="sect1"><a href="configuring-install-packages.html">Installing OpenACS packages</a></span></dt><dt><span class="sect1"><a href="configuring-mounting-packages.html">Mounting OpenACS packages</a></span></dt><dt><span class="sect1"><a href="configuring-configuring-packages.html">Configuring an OpenACS package</a></span></dt><dt><span class="sect1"><a href="configuring-configuring-permissions.html">Setting Permissions on an OpenACS package</a></span></dt><dt><span class="sect1"><a href="how-do-I.html">How Do I?</a></span></dt></dl></dd><dt><span class="chapter"><a href="upgrade.html">5. Upgrading</a></span></dt><dd><dl><dt><span class="sect1"><a href="upgrade-overview.html">Overview</a></span></dt><dt><span class="sect1"><a href="upgrade-4.5-to-4.6.html">Upgrading 4.5 or higher to 4.6.3</a></span></dt><dt><span class="sect1"><a href="upgrade-4.6.3-to-5.html">Upgrading OpenACS 4.6.3 to 5.0</a></span></dt><dt><span class="sect1"><a href="upgrade-5-0-dot.html">Upgrading an OpenACS 5.0.0 or greater installation</a></span></dt><dt><span class="sect1"><a href="upgrade-openacs-files.html">Upgrading the OpenACS files</a></span></dt><dt><span class="sect1"><a href="upgrade-supporting.html">Upgrading Platform components</a></span></dt></dl></dd><dt><span class="chapter"><a href="maintenance-web.html">6. Production Environments</a></span></dt><dd><dl><dt><span class="sect1"><a href="install-openacs-keepalive.html">Starting and Stopping an OpenACS instance.</a></span></dt><dt><span class="sect1"><a href="install-openacs-inittab.html">AOLserver keepalive with inittab</a></span></dt><dt><span class="sect1"><a href="install-next-add-server.html">Running multiple services on one machine</a></span></dt><dt><span class="sect1"><a href="high-avail.html">High Availability/High Performance Configurations</a></span></dt><dt><span class="sect1"><a href="maintenance-deploy.html">Staged Deployment for Production Networks</a></span></dt><dt><span class="sect1"><a href="install-ssl.html">Installing SSL Support for an OpenACS service</a></span></dt><dt><span class="sect1"><a href="analog-setup.html">Set up Log Analysis Reports</a></span></dt><dt><span class="sect1"><a href="uptime.html">External uptime validation</a></span></dt><dt><span class="sect1"><a href="maint-performance.html">Diagnosing Performance Problems</a></span></dt></dl></dd><dt><span class="chapter"><a href="database-management.html">7. Database Management</a></span></dt><dd><dl><dt><span class="sect1"><a href="remote-postgres.html">Running a PostgreSQL database on another server</a></span></dt><dt><span class="sect1"><a href="install-openacs-delete-tablespace.html">Deleting a tablespace</a></span></dt><dt><span class="sect1"><a href="install-next-nightly-vacuum.html">Vacuum Postgres nightly</a></span></dt></dl></dd><dt><span class="chapter"><a href="backup-recovery.html">8. Backup and Recovery</a></span></dt><dd><dl><dt><span class="sect1"><a href="install-next-backups.html">Backup Strategy</a></span></dt><dt><span class="sect1"><a href="snapshot-backup.html">Manual backup and recovery</a></span></dt><dt><span class="sect1"><a href="automated-backup.html">Automated Backup</a></span></dt><dt><span class="sect1"><a href="backups-with-cvs.html">Using CVS for backup-recovery</a></span></dt></dl></dd><dt><span class="appendix"><a href="install-redhat.html">A. Install Red Hat 8/9</a></span></dt><dt><span class="appendix"><a href="install-more-software.html">B. Install additional supporting software</a></span></dt><dd><dl><dt><span class="sect1"><a href="openacs-unpack.html">Unpack the OpenACS tarball</a></span></dt><dt><span class="sect1"><a href="install-cvs.html">Initialize CVS (OPTIONAL)</a></span></dt><dt><span class="sect1"><a href="psgml-for-emacs.html">Add PSGML commands to emacs init file (OPTIONAL)</a></span></dt><dt><span class="sect1"><a href="install-daemontools.html">Install Daemontools (OPTIONAL)</a></span></dt><dt><span class="sect1"><a href="install-qmail.html">Install qmail (OPTIONAL)</a></span></dt><dt><span class="sect1"><a href="analog-install.html">Install Analog web file analyzer</a></span></dt><dt><span class="sect1"><a href="install-nspam.html">Install nspam</a></span></dt><dt><span class="sect1"><a href="install-full-text-search-tsearch2.html">Install Full Text Search using Tsearch2</a></span></dt><dt><span class="sect1"><a href="install-full-text-search-openfts.html">Install Full Text Search using OpenFTS (deprecated see tsearch2)</a></span></dt><dt><span class="sect1"><a href="install-nsopenssl.html">Install nsopenssl</a></span></dt><dt><span class="sect1"><a href="install-tclwebtest.html">Install tclwebtest.</a></span></dt><dt><span class="sect1"><a href="install-php.html">Install PHP for use in AOLserver</a></span></dt><dt><span class="sect1"><a href="install-squirrelmail.html">Install Squirrelmail for use as a webmail system for OpenACS</a></span></dt><dt><span class="sect1"><a href="install-pam-radius.html">Install PAM Radius for use as external authentication</a></span></dt><dt><span class="sect1"><a href="install-ldap-radius.html">Install LDAP for use as external authentication</a></span></dt><dt><span class="sect1"><a href="aolserver.html">Install AOLserver 3.3oacs1</a></span></dt></dl></dd><dt><span class="appendix"><a href="credits.html">C. Credits</a></span></dt><dd><dl><dt><span class="section"><a href="install-origins.html">Where did this document come from?</a></span></dt><dt><span class="section"><a href="os-install.html">Linux Install Guides</a></span></dt><dt><span class="section"><a href="os-security.html">Security Information</a></span></dt><dt><span class="section"><a href="install-resources.html">Resources</a></span></dt></dl></dd></dl></div></div><div class="navfooter"><hr><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="release-notes.html">Prev</a> </td><td width="20%" align="center"><a accesskey="h" href="index.html">Home</a></td><td width="40%" align="right"> <a accesskey="n" href="install-overview.html">Next</a></td></tr><tr><td width="40%" align="left">OpenACS Release Notes </td><td width="20%" align="center"><a accesskey="u" href="index.html">Up</a></td><td width="40%" align="right"> Chapter�2.�Installation Overview</td></tr></table><hr><address><a href="mailto:docs@openacs.org">docs@openacs.org</a></address></div><a name="comments"></a><center><a href="http://openacs.org/doc/current/acs-admin.html#comments">View comments on this page at openacs.org</a></center></body></html>
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html><head><meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"><title>Part�II.�Administrator's Guide</title><meta name="generator" content="DocBook XSL Stylesheets V1.60.1"><link rel="home" href="index.html" title="OpenACS Core Documentation"><link rel="up" href="index.html" title="OpenACS Core Documentation"><link rel="previous" href="release-notes.html" title="OpenACS Release Notes"><link rel="next" href="install-overview.html" title="Chapter�2.�Installation Overview"><link rel="stylesheet" href="openacs.css" type="text/css"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><a href="http://openacs.org"><img src="/doc/images/alex.jpg" border="0" alt="Alex logo"></a><table width="100%" summary="Navigation header" border="0"><tr><td width="20%" align="left"><a accesskey="p" href="release-notes.html">Prev</a> </td><th width="60%" align="center"></th><td width="20%" align="right"> <a accesskey="n" href="install-overview.html">Next</a></td></tr></table><hr></div><div class="part" lang="en"><div class="titlepage"><div><div><h1 class="title"><a name="acs-admin"></a>Administrator's Guide</h1></div></div><div></div></div><div class="toc"><p><b>Table of Contents</b></p><dl><dt>2. <a href="install-overview.html">Installation Overview</a></dt><dd><dl><dt><a href="install-steps.html">Basic Steps</a></dt><dt><a href="individual-programs.html">Prerequisite Software</a></dt></dl></dd><dt>3. <a href="complete-install.html">Complete Installation</a></dt><dd><dl><dt><a href="unix-installation.html">Install a Unix-like system and supporting software</a></dt><dt><a href="oracle.html">Install Oracle 8.1.7</a></dt><dt><a href="postgres.html">Install PostgreSQL</a></dt><dt><a href="aolserver4.html">Install AOLserver 4</a></dt><dt><a href="openacs.html">Install OpenACS 5.4.0</a></dt><dt><a href="win2k-installation.html">OpenACS Installation Guide for Windows2000</a></dt><dt><a href="mac-installation.html">OpenACS Installation Guide for Mac OS X</a></dt></dl></dd><dt>4. <a href="configuring-new-site.html">Configuring a new OpenACS Site</a></dt><dd><dl><dt><a href="configuring-install-packages.html">Installing OpenACS packages</a></dt><dt><a href="configuring-mounting-packages.html">Mounting OpenACS packages</a></dt><dt><a href="configuring-configuring-packages.html">Configuring an OpenACS package</a></dt><dt><a href="configuring-configuring-permissions.html">Setting Permissions on an OpenACS package</a></dt><dt><a href="how-do-I.html">How Do I?</a></dt></dl></dd><dt>5. <a href="upgrade.html">Upgrading</a></dt><dd><dl><dt><a href="upgrade-overview.html">Overview</a></dt><dt><a href="upgrade-4.5-to-4.6.html">Upgrading 4.5 or higher to 4.6.3</a></dt><dt><a href="upgrade-4.6.3-to-5.html">Upgrading OpenACS 4.6.3 to 5.0</a></dt><dt><a href="upgrade-5-0-dot.html">Upgrading an OpenACS 5.0.0 or greater installation</a></dt><dt><a href="upgrade-openacs-files.html">Upgrading the OpenACS files</a></dt><dt><a href="upgrade-supporting.html">Upgrading Platform components</a></dt></dl></dd><dt>6. <a href="maintenance-web.html">Production Environments</a></dt><dd><dl><dt><a href="install-openacs-keepalive.html">Starting and Stopping an OpenACS instance.</a></dt><dt><a href="install-openacs-inittab.html">AOLserver keepalive with inittab</a></dt><dt><a href="install-next-add-server.html">Running multiple services on one machine</a></dt><dt><a href="high-avail.html">High Availability/High Performance Configurations</a></dt><dt><a href="maintenance-deploy.html">Staged Deployment for Production Networks</a></dt><dt><a href="install-ssl.html">Installing SSL Support for an OpenACS service</a></dt><dt><a href="analog-setup.html">Set up Log Analysis Reports</a></dt><dt><a href="uptime.html">External uptime validation</a></dt><dt><a href="maint-performance.html">Diagnosing Performance Problems</a></dt></dl></dd><dt>7. <a href="database-management.html">Database Management</a></dt><dd><dl><dt><a href="remote-postgres.html">Running a PostgreSQL database on another server</a></dt><dt><a href="install-openacs-delete-tablespace.html">Deleting a tablespace</a></dt><dt><a href="install-next-nightly-vacuum.html">Vacuum Postgres nightly</a></dt></dl></dd><dt>8. <a href="backup-recovery.html">Backup and Recovery</a></dt><dd><dl><dt><a href="install-next-backups.html">Backup Strategy</a></dt><dt><a href="snapshot-backup.html">Manual backup and recovery</a></dt><dt><a href="automated-backup.html">Automated Backup</a></dt><dt><a href="backups-with-cvs.html">Using CVS for backup-recovery</a></dt></dl></dd><dt>A. <a href="install-redhat.html">Install Red Hat 8/9</a></dt><dt>B. <a href="install-more-software.html">Install additional supporting software</a></dt><dd><dl><dt><a href="openacs-unpack.html">Unpack the OpenACS tarball</a></dt><dt><a href="install-cvs.html">Initialize CVS (OPTIONAL)</a></dt><dt><a href="psgml-for-emacs.html">Add PSGML commands to emacs init file (OPTIONAL)</a></dt><dt><a href="install-daemontools.html">Install Daemontools (OPTIONAL)</a></dt><dt><a href="install-qmail.html">Install qmail (OPTIONAL)</a></dt><dt><a href="analog-install.html">Install Analog web file analyzer</a></dt><dt><a href="install-nspam.html">Install nspam</a></dt><dt><a href="install-full-text-search-tsearch2.html">Install Full Text Search using Tsearch2</a></dt><dt><a href="install-full-text-search-openfts.html">Install Full Text Search using OpenFTS (deprecated see tsearch2)</a></dt><dt><a href="install-nsopenssl.html">Install nsopenssl</a></dt><dt><a href="install-tclwebtest.html">Install tclwebtest.</a></dt><dt><a href="install-php.html">Install PHP for use in AOLserver</a></dt><dt><a href="install-squirrelmail.html">Install Squirrelmail for use as a webmail system for OpenACS</a></dt><dt><a href="install-pam-radius.html">Install PAM Radius for use as external authentication</a></dt><dt><a href="install-ldap-radius.html">Install LDAP for use as external authentication</a></dt><dt><a href="aolserver.html">Install AOLserver 3.3oacs1</a></dt></dl></dd><dt>C. <a href="credits.html">Credits</a></dt><dd><dl><dt><a href="install-origins.html">Where did this document come from?</a></dt><dt><a href="os-install.html">Linux Install Guides</a></dt><dt><a href="os-security.html">Security Information</a></dt><dt><a href="install-resources.html">Resources</a></dt></dl></dd></dl></div></div><div class="navfooter"><hr><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="release-notes.html">Prev</a> </td><td width="20%" align="center"><a accesskey="h" href="index.html">Home</a></td><td width="40%" align="right"> <a accesskey="n" href="install-overview.html">Next</a></td></tr><tr><td width="40%" align="left">OpenACS Release Notes </td><td width="20%" align="center"><a accesskey="u" href="index.html">Up</a></td><td width="40%" align="right"> Chapter�2.�Installation Overview</td></tr></table><hr><address><a href="mailto:docs@openacs.org">docs@openacs.org</a></address></div><a name="comments"></a><center><a href="http://openacs.org/doc/current/acs-admin.html#comments">View comments on this page at openacs.org</a></center></body></html>
Index: openacs-4/packages/acs-core-docs/www/acs-package-dev.html
===================================================================
RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/acs-package-dev.html,v
diff -u -r1.26 -r1.26.4.1
--- openacs-4/packages/acs-core-docs/www/acs-package-dev.html	17 Jul 2006 05:38:31 -0000	1.26
+++ openacs-4/packages/acs-core-docs/www/acs-package-dev.html	3 Feb 2008 12:07:38 -0000	1.26.4.1
@@ -1,4 +1,5 @@
-<html><head><meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"><title>Part�III.�For OpenACS Package Developers</title><meta name="generator" content="DocBook XSL Stylesheets V1.70.1"><link rel="home" href="index.html" title="OpenACS Core Documentation"><link rel="up" href="index.html" title="OpenACS Core Documentation"><link rel="previous" href="install-resources.html" title="Resources"><link rel="next" href="tutorial.html" title="Chapter�9.�Development Tutorial"><link rel="stylesheet" href="openacs.css" type="text/css"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><a href="http://openacs.org"><img src="/doc/images/alex.jpg" border="0" alt="Alex logo"></a><table width="100%" summary="Navigation header" border="0"><tr><td width="20%" align="left"><a accesskey="p" href="install-resources.html">Prev</a> </td><th width="60%" align="center"></th><td width="20%" align="right"> <a accesskey="n" href="tutorial.html">Next</a></td></tr></table><hr></div><div class="part" lang="en"><div class="titlepage"><div><div><h1 class="title"><a name="acs-package-dev"></a>Part�III.�For OpenACS Package Developers</h1></div></div></div><div class="partintro" lang="en"><div></div><p>Tutorials and reference material for creating new OpenACS packages.
-      </p><div class="toc"><p><b>Table of Contents</b></p><dl><dt><span class="chapter"><a href="tutorial.html">9. Development Tutorial</a></span></dt><dd><dl><dt><span class="sect1"><a href="tutorial-newpackage.html">Creating an Application Package</a></span></dt><dt><span class="sect1"><a href="tutorial-database.html">Setting Up Database Objects</a></span></dt><dt><span class="sect1"><a href="tutorial-pages.html">Creating Web Pages</a></span></dt><dt><span class="sect1"><a href="tutorial-debug.html">Debugging and Automated Testing</a></span></dt></dl></dd><dt><span class="chapter"><a href="tutorial-advanced.html">10. Advanced Topics</a></span></dt><dd><dl><dt><span class="sect1"><a href="tutorial-specs.html">Write the Requirements and Design Specs</a></span></dt><dt><span class="sect1"><a href="tutorial-cvs.html">Add the new package to CVS</a></span></dt><dt><span class="sect1"><a href="tutorial-etp-templates.html">OpenACS Edit This Page Templates</a></span></dt><dt><span class="sect1"><a href="tutorial-comments.html">Adding Comments</a></span></dt><dt><span class="sect1"><a href="tutorial-admin-pages.html">Admin Pages</a></span></dt><dt><span class="sect1"><a href="tutorial-categories.html">Categories</a></span></dt><dt><span class="sect1"><a href="profile-code.html">Profile your code</a></span></dt><dt><span class="sect1"><a href="tutorial-distribute.html">Prepare the package for distribution.</a></span></dt><dt><span class="sect1"><a href="tutorial-upgrades.html">Distributing upgrades of your package</a></span></dt><dt><span class="sect1"><a href="tutorial-notifications.html">Notifications</a></span></dt><dt><span class="sect1"><a href="tutorial-hierarchical.html">Hierarchical data</a></span></dt><dt><span class="sect1"><a href="tutorial-vuh.html">Using .vuh files for pretty urls</a></span></dt><dt><span class="sect1"><a href="tutorial-css-layout.html">Laying out a page with CSS instead of tables</a></span></dt><dt><span class="sect1"><a href="tutorial-html-email.html">Sending HTML email from your application</a></span></dt><dt><span class="sect1"><a href="tutorial-caching.html">Basic Caching</a></span></dt><dt><span class="sect1"><a href="tutorial-schedule-procs.html">Scheduled Procedures</a></span></dt><dt><span class="sect1"><a href="tutorial-wysiwyg-editor.html">Enabling WYSIWYG</a></span></dt><dt><span class="sect1"><a href="tutorial-parameters.html">Adding in parameters for your package</a></span></dt><dt><span class="sect1"><a href="tutorial-upgrade-scripts.html">Writing upgrade scripts</a></span></dt><dt><span class="sect1"><a href="tutorial-second-database.html">Connect to a second database</a></span></dt><dt><span class="sect1"><a href="tutorial-future-topics.html">Future Topics</a></span></dt></dl></dd><dt><span class="chapter"><a href="dev-guide.html">11. Development Reference</a></span></dt><dd><dl><dt><span class="sect1"><a href="packages.html">OpenACS Packages</a></span></dt><dt><span class="sect1"><a href="objects.html">OpenACS Data Models and the Object System</a></span></dt><dt><span class="sect1"><a href="request-processor.html">The Request Processor</a></span></dt><dt><span class="sect1"><a href="db-api.html">The OpenACS Database Access API</a></span></dt><dt><span class="sect1"><a href="templates.html">Using Templates in OpenACS</a></span></dt><dt><span class="sect1"><a href="permissions.html">Groups, Context, Permissions</a></span></dt><dt><span class="sect1"><a href="subsites.html">Writing OpenACS Application Pages</a></span></dt><dt><span class="sect1"><a href="parties.html">Parties in OpenACS</a></span></dt><dt><span class="sect1"><a href="permissions-tediously-explained.html">OpenACS Permissions Tediously Explained</a></span></dt><dt><span class="sect1"><a href="object-identity.html">Object Identity</a></span></dt><dt><span class="sect1"><a href="programming-with-aolserver.html">Programming with AOLserver</a></span></dt><dt><span class="sect1"><a href="form-builder.html">Using Form Builder: building html forms dynamically</a></span></dt></dl></dd><dt><span class="chapter"><a href="eng-standards.html">12. Engineering Standards</a></span></dt><dd><dl><dt><span class="sect1"><a href="style-guide.html">OpenACS Style Guide</a></span></dt><dt><span class="sect1"><a href="cvs-guidelines.html">
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html><head><meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"><title>Part�III.�For OpenACS Package Developers</title><meta name="generator" content="DocBook XSL Stylesheets V1.60.1"><link rel="home" href="index.html" title="OpenACS Core Documentation"><link rel="up" href="index.html" title="OpenACS Core Documentation"><link rel="previous" href="install-resources.html" title="Resources"><link rel="next" href="tutorial.html" title="Chapter�9.�Development Tutorial"><link rel="stylesheet" href="openacs.css" type="text/css"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><a href="http://openacs.org"><img src="/doc/images/alex.jpg" border="0" alt="Alex logo"></a><table width="100%" summary="Navigation header" border="0"><tr><td width="20%" align="left"><a accesskey="p" href="install-resources.html">Prev</a> </td><th width="60%" align="center"></th><td width="20%" align="right"> <a accesskey="n" href="tutorial.html">Next</a></td></tr></table><hr></div><div class="part" lang="en"><div class="titlepage"><div><div><h1 class="title"><a name="acs-package-dev"></a>For OpenACS Package Developers</h1></div></div><div></div></div><div class="partintro" lang="en"><div><div></div><div></div></div><p>Tutorials and reference material for creating new OpenACS packages.
+      </p><div class="toc"><p><b>Table of Contents</b></p><dl><dt>9. <a href="tutorial.html">Development Tutorial</a></dt><dd><dl><dt><a href="tutorial-newpackage.html">Creating an Application Package</a></dt><dt><a href="tutorial-database.html">Setting Up Database Objects</a></dt><dt><a href="tutorial-pages.html">Creating Web Pages</a></dt><dt><a href="tutorial-debug.html">Debugging and Automated Testing</a></dt></dl></dd><dt>10. <a href="tutorial-advanced.html">Advanced Topics</a></dt><dd><dl><dt><a href="tutorial-specs.html">Write the Requirements and Design Specs</a></dt><dt><a href="tutorial-cvs.html">Add the new package to CVS</a></dt><dt><a href="tutorial-etp-templates.html">OpenACS Edit This Page Templates</a></dt><dt><a href="tutorial-comments.html">Adding Comments</a></dt><dt><a href="tutorial-admin-pages.html">Admin Pages</a></dt><dt><a href="tutorial-categories.html">Categories</a></dt><dt><a href="profile-code.html">Profile your code</a></dt><dt><a href="tutorial-distribute.html">Prepare the package for distribution.</a></dt><dt><a href="tutorial-upgrades.html">Distributing upgrades of your package</a></dt><dt><a href="tutorial-notifications.html">Notifications</a></dt><dt><a href="tutorial-hierarchical.html">Hierarchical data</a></dt><dt><a href="tutorial-vuh.html">Using .vuh files for pretty urls</a></dt><dt><a href="tutorial-css-layout.html">Laying out a page with CSS instead of tables</a></dt><dt><a href="tutorial-html-email.html">Sending HTML email from your application</a></dt><dt><a href="tutorial-caching.html">Basic Caching</a></dt><dt><a href="tutorial-schedule-procs.html">Scheduled Procedures</a></dt><dt><a href="tutorial-wysiwyg-editor.html">Enabling WYSIWYG</a></dt><dt><a href="tutorial-parameters.html">Adding in parameters for your package</a></dt><dt><a href="tutorial-upgrade-scripts.html">Writing upgrade scripts</a></dt><dt><a href="tutorial-second-database.html">Connect to a second database</a></dt><dt><a href="tutorial-future-topics.html">Future Topics</a></dt></dl></dd><dt>11. <a href="dev-guide.html">Development Reference</a></dt><dd><dl><dt><a href="packages.html">OpenACS Packages</a></dt><dt><a href="objects.html">OpenACS Data Models and the Object System</a></dt><dt><a href="request-processor.html">The Request Processor</a></dt><dt><a href="db-api.html">The OpenACS Database Access API</a></dt><dt><a href="templates.html">Using Templates in OpenACS</a></dt><dt><a href="permissions.html">Groups, Context, Permissions</a></dt><dt><a href="subsites.html">Writing OpenACS Application Pages</a></dt><dt><a href="parties.html">Parties in OpenACS</a></dt><dt><a href="permissions-tediously-explained.html">OpenACS Permissions Tediously Explained</a></dt><dt><a href="object-identity.html">Object Identity</a></dt><dt><a href="programming-with-aolserver.html">Programming with AOLserver</a></dt><dt><a href="form-builder.html">Using Form Builder: building html forms dynamically</a></dt></dl></dd><dt>12. <a href="eng-standards.html">Engineering Standards</a></dt><dd><dl><dt><a href="style-guide.html">OpenACS Style Guide</a></dt><dt><a href="cvs-guidelines.html">
     CVS Guidelines
-  </a></span></dt><dt><span class="sect1"><a href="eng-standards-versioning.html">Release Version Numbering</a></span></dt><dt><span class="sect1"><a href="eng-standards-constraint-naming.html">Constraint naming standard</a></span></dt><dt><span class="sect1"><a href="eng-standards-filenaming.html">ACS File Naming and Formatting Standards</a></span></dt><dt><span class="sect1"><a href="eng-standards-plsql.html">PL/SQL Standards</a></span></dt><dt><span class="sect1"><a href="variables.html">Variables</a></span></dt><dt><span class="sect1"><a href="automated-testing-best-practices.html">Automated Testing</a></span></dt></dl></dd><dt><span class="chapter"><a href="doc-standards.html">13. Documentation Standards</a></span></dt><dd><dl><dt><span class="sect1"><a href="docbook-primer.html">OpenACS Documentation Guide</a></span></dt><dt><span class="sect1"><a href="psgml-mode.html">Using PSGML mode in Emacs</a></span></dt><dt><span class="sect1"><a href="nxml-mode.html">Using nXML mode in Emacs</a></span></dt><dt><span class="sect1"><a href="filename.html">Detailed Design Documentation Template</a></span></dt><dt><span class="sect1"><a href="requirements-template.html">System/Application Requirements Template</a></span></dt></dl></dd><dt><span class="chapter"><a href="i18n.html">14. Internationalization</a></span></dt><dd><dl><dt><span class="sect1"><a href="i18n-overview.html">Internationalization and Localization Overview</a></span></dt><dt><span class="sect1"><a href="i18n-introduction.html">How Internationalization/Localization works in OpenACS</a></span></dt><dt><span class="sect1"><a href="i18n-convert.html">How to Internationalize a Package</a></span></dt><dt><span class="sect1"><a href="i18n-design.html">Design Notes</a></span></dt><dt><span class="sect1"><a href="i18n-translators.html">Translator's Guide</a></span></dt></dl></dd><dt><span class="appendix"><a href="cvs-tips.html">D. Using CVS with an OpenACS Site</a></span></dt></dl></div></div></div><div class="navfooter"><hr><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="install-resources.html">Prev</a> </td><td width="20%" align="center"><a accesskey="h" href="index.html">Home</a></td><td width="40%" align="right"> <a accesskey="n" href="tutorial.html">Next</a></td></tr><tr><td width="40%" align="left">Resources </td><td width="20%" align="center"><a accesskey="u" href="index.html">Up</a></td><td width="40%" align="right"> Chapter�9.�Development Tutorial</td></tr></table><hr><address><a href="mailto:docs@openacs.org">docs@openacs.org</a></address></div><a name="comments"></a><center><a href="http://openacs.org/doc/current/acs-package-dev.html#comments">View comments on this page at openacs.org</a></center></body></html>
+  </a></dt><dt><a href="eng-standards-versioning.html">Release Version Numbering</a></dt><dt><a href="eng-standards-constraint-naming.html">Constraint naming standard</a></dt><dt><a href="eng-standards-filenaming.html">ACS File Naming and Formatting Standards</a></dt><dt><a href="eng-standards-plsql.html">PL/SQL Standards</a></dt><dt><a href="variables.html">Variables</a></dt><dt><a href="automated-testing-best-practices.html">Automated Testing</a></dt></dl></dd><dt>13. <a href="doc-standards.html">Documentation Standards</a></dt><dd><dl><dt><a href="docbook-primer.html">OpenACS Documentation Guide</a></dt><dt><a href="psgml-mode.html">Using PSGML mode in Emacs</a></dt><dt><a href="nxml-mode.html">Using nXML mode in Emacs</a></dt><dt><a href="filename.html">Detailed Design Documentation Template</a></dt><dt><a href="requirements-template.html">System/Application Requirements Template</a></dt></dl></dd><dt>14. <a href="i18n.html">Internationalization</a></dt><dd><dl><dt><a href="i18n-overview.html">Internationalization and Localization Overview</a></dt><dt><a href="i18n-introduction.html">How Internationalization/Localization works in OpenACS</a></dt><dt><a href="i18n-convert.html">How to Internationalize a Package</a></dt><dt><a href="i18n-design.html">Design Notes</a></dt><dt><a href="i18n-translators.html">Translator's Guide</a></dt></dl></dd></dl></div></div>CVS Section missing</div><div class="navfooter"><hr><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="install-resources.html">Prev</a> </td><td width="20%" align="center"><a accesskey="h" href="index.html">Home</a></td><td width="40%" align="right"> <a accesskey="n" href="tutorial.html">Next</a></td></tr><tr><td width="40%" align="left">Resources </td><td width="20%" align="center"><a accesskey="u" href="index.html">Up</a></td><td width="40%" align="right"> Chapter�9.�Development Tutorial</td></tr></table><hr><address><a href="mailto:docs@openacs.org">docs@openacs.org</a></address></div><a name="comments"></a><center><a href="http://openacs.org/doc/current/acs-package-dev.html#comments">View comments on this page at openacs.org</a></center></body></html>
Index: openacs-4/packages/acs-core-docs/www/acs-plat-dev.html
===================================================================
RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/acs-plat-dev.html,v
diff -u -r1.24 -r1.24.4.1
--- openacs-4/packages/acs-core-docs/www/acs-plat-dev.html	17 Jul 2006 05:38:31 -0000	1.24
+++ openacs-4/packages/acs-core-docs/www/acs-plat-dev.html	3 Feb 2008 12:07:38 -0000	1.24.4.1
@@ -1 +1,2 @@
-<html><head><meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"><title>Part�IV.�For OpenACS Platform Developers</title><meta name="generator" content="DocBook XSL Stylesheets V1.70.1"><link rel="home" href="index.html" title="OpenACS Core Documentation"><link rel="up" href="index.html" title="OpenACS Core Documentation"><link rel="previous" href="cvs-tips.html" title="Appendix�D.�Using CVS with an OpenACS Site"><link rel="next" href="kernel-doc.html" title="Chapter�15.�Kernel Documentation"><link rel="stylesheet" href="openacs.css" type="text/css"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><a href="http://openacs.org"><img src="/doc/images/alex.jpg" border="0" alt="Alex logo"></a><table width="100%" summary="Navigation header" border="0"><tr><td width="20%" align="left"><a accesskey="p" href="cvs-tips.html">Prev</a> </td><th width="60%" align="center"></th><td width="20%" align="right"> <a accesskey="n" href="kernel-doc.html">Next</a></td></tr></table><hr></div><div class="part" lang="en"><div class="titlepage"><div><div><h1 class="title"><a name="acs-plat-dev"></a>Part�IV.�For OpenACS Platform Developers</h1></div></div></div><div class="toc"><p><b>Table of Contents</b></p><dl><dt><span class="chapter"><a href="kernel-doc.html">15. Kernel Documentation</a></span></dt><dd><dl><dt><span class="sect1"><a href="kernel-overview.html">Overview</a></span></dt><dt><span class="sect1"><a href="object-system-requirements.html">Object Model Requirements</a></span></dt><dt><span class="sect1"><a href="object-system-design.html">Object Model Design</a></span></dt><dt><span class="sect1"><a href="permissions-requirements.html">Permissions Requirements</a></span></dt><dt><span class="sect1"><a href="permissions-design.html">Permissions Design</a></span></dt><dt><span class="sect1"><a href="groups-requirements.html">Groups Requirements</a></span></dt><dt><span class="sect1"><a href="groups-design.html">Groups Design</a></span></dt><dt><span class="sect1"><a href="subsites-requirements.html">Subsites Requirements</a></span></dt><dt><span class="sect1"><a href="subsites-design.html">Subsites Design Document</a></span></dt><dt><span class="sect1"><a href="apm-requirements.html">Package Manager Requirements</a></span></dt><dt><span class="sect1"><a href="apm-design.html">Package Manager Design</a></span></dt><dt><span class="sect1"><a href="db-api-detailed.html">Database Access API</a></span></dt><dt><span class="sect1"><a href="i18n-requirements.html">OpenACS Internationalization Requirements</a></span></dt><dt><span class="sect1"><a href="security-requirements.html">Security Requirements</a></span></dt><dt><span class="sect1"><a href="security-design.html">Security Design</a></span></dt><dt><span class="sect1"><a href="security-notes.html">Security Notes</a></span></dt><dt><span class="sect1"><a href="rp-requirements.html">Request Processor Requirements</a></span></dt><dt><span class="sect1"><a href="rp-design.html">Request Processor Design</a></span></dt><dt><span class="sect1"><a href="tcl-doc.html">Documenting Tcl Files: Page Contracts and Libraries</a></span></dt><dt><span class="sect1"><a href="bootstrap-acs.html">Bootstrapping OpenACS</a></span></dt><dt><span class="sect1"><a href="ext-auth-requirements.html">External Authentication Requirements</a></span></dt></dl></dd><dt><span class="chapter"><a href="releasing-openacs.html">16. Releasing OpenACS</a></span></dt><dd><dl><dt><span class="section"><a href="releasing-openacs-core.html">OpenACS Core and .LRN</a></span></dt><dt><span class="section"><a href="update-repository.html">How to Update the OpenACS.org repository</a></span></dt><dt><span class="section"><a href="releasing-package.html">How to package and release an OpenACS Package</a></span></dt><dt><span class="section"><a href="update-translations.html">How to Update the translations</a></span></dt></dl></dd></dl></div></div><div class="navfooter"><hr><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="cvs-tips.html">Prev</a> </td><td width="20%" align="center"><a accesskey="h" href="index.html">Home</a></td><td width="40%" align="right"> <a accesskey="n" href="kernel-doc.html">Next</a></td></tr><tr><td width="40%" align="left">Appendix�D.�Using CVS with an OpenACS Site </td><td width="20%" align="center"><a accesskey="u" href="index.html">Up</a></td><td width="40%" align="right"> Chapter�15.�Kernel Documentation</td></tr></table><hr><address><a href="mailto:docs@openacs.org">docs@openacs.org</a></address></div><a name="comments"></a><center><a href="http://openacs.org/doc/current/acs-plat-dev.html#comments">View comments on this page at openacs.org</a></center></body></html>
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html><head><meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"><title>Part�IV.�For OpenACS Platform Developers</title><meta name="generator" content="DocBook XSL Stylesheets V1.60.1"><link rel="home" href="index.html" title="OpenACS Core Documentation"><link rel="up" href="index.html" title="OpenACS Core Documentation"><link rel="previous" href="i18n-translators.html" title="Translator's Guide"><link rel="next" href="kernel-doc.html" title="Chapter�15.�Kernel Documentation"><link rel="stylesheet" href="openacs.css" type="text/css"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><a href="http://openacs.org"><img src="/doc/images/alex.jpg" border="0" alt="Alex logo"></a><table width="100%" summary="Navigation header" border="0"><tr><td width="20%" align="left"><a accesskey="p" href="i18n-translators.html">Prev</a> </td><th width="60%" align="center"></th><td width="20%" align="right"> <a accesskey="n" href="kernel-doc.html">Next</a></td></tr></table><hr></div><div class="part" lang="en"><div class="titlepage"><div><div><h1 class="title"><a name="acs-plat-dev"></a>For OpenACS Platform Developers</h1></div></div><div></div></div><div class="toc"><p><b>Table of Contents</b></p><dl><dt>15. <a href="kernel-doc.html">Kernel Documentation</a></dt><dd><dl><dt><a href="kernel-overview.html">Overview</a></dt><dt><a href="object-system-requirements.html">Object Model Requirements</a></dt><dt><a href="object-system-design.html">Object Model Design</a></dt><dt><a href="permissions-requirements.html">Permissions Requirements</a></dt><dt><a href="permissions-design.html">Permissions Design</a></dt><dt><a href="groups-requirements.html">Groups Requirements</a></dt><dt><a href="groups-design.html">Groups Design</a></dt><dt><a href="subsites-requirements.html">Subsites Requirements</a></dt><dt><a href="subsites-design.html">Subsites Design Document</a></dt><dt><a href="apm-requirements.html">Package Manager Requirements</a></dt><dt><a href="apm-design.html">Package Manager Design</a></dt><dt><a href="db-api-detailed.html">Database Access API</a></dt><dt><a href="i18n-requirements.html">OpenACS Internationalization Requirements</a></dt><dt><a href="security-requirements.html">Security Requirements</a></dt><dt><a href="security-design.html">Security Design</a></dt><dt><a href="security-notes.html">Security Notes</a></dt><dt><a href="rp-requirements.html">Request Processor Requirements</a></dt><dt><a href="rp-design.html">Request Processor Design</a></dt><dt><a href="tcl-doc.html">Documenting Tcl Files: Page Contracts and Libraries</a></dt><dt><a href="bootstrap-acs.html">Bootstrapping OpenACS</a></dt><dt><a href="ext-auth-requirements.html">External Authentication Requirements</a></dt></dl></dd><dt>16. <a href="releasing-openacs.html">Releasing OpenACS</a></dt><dd><dl><dt><a href="releasing-openacs-core.html">OpenACS Core and .LRN</a></dt><dt><a href="update-repository.html">How to Update the OpenACS.org repository</a></dt><dt><a href="releasing-package.html">How to package and release an OpenACS Package</a></dt><dt><a href="update-translations.html">How to Update the translations</a></dt></dl></dd></dl></div></div><div class="navfooter"><hr><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="i18n-translators.html">Prev</a> </td><td width="20%" align="center"><a accesskey="h" href="index.html">Home</a></td><td width="40%" align="right"> <a accesskey="n" href="kernel-doc.html">Next</a></td></tr><tr><td width="40%" align="left">Translator's Guide </td><td width="20%" align="center"><a accesskey="u" href="index.html">Up</a></td><td width="40%" align="right"> Chapter�15.�Kernel Documentation</td></tr></table><hr><address><a href="mailto:docs@openacs.org">docs@openacs.org</a></address></div><a name="comments"></a><center><a href="http://openacs.org/doc/current/acs-plat-dev.html#comments">View comments on this page at openacs.org</a></center></body></html>
Index: openacs-4/packages/acs-core-docs/www/analog-install.html
===================================================================
RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/analog-install.html,v
diff -u -r1.17 -r1.17.4.1
--- openacs-4/packages/acs-core-docs/www/analog-install.html	17 Jul 2006 05:38:31 -0000	1.17
+++ openacs-4/packages/acs-core-docs/www/analog-install.html	3 Feb 2008 12:07:38 -0000	1.17.4.1
@@ -1,20 +1,21 @@
-<html><head><meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"><title>Install Analog web file analyzer</title><meta name="generator" content="DocBook XSL Stylesheets V1.70.1"><link rel="home" href="index.html" title="OpenACS Core Documentation"><link rel="up" href="install-more-software.html" title="Appendix�B.�Install additional supporting software"><link rel="previous" href="install-qmail.html" title="Install qmail (OPTIONAL)"><link rel="next" href="install-nspam.html" title="Install nspam"><link rel="stylesheet" href="openacs.css" type="text/css"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><a href="http://openacs.org"><img src="/doc/images/alex.jpg" border="0" alt="Alex logo"></a><table width="100%" summary="Navigation header" border="0"><tr><td width="20%" align="left"><a accesskey="p" href="install-qmail.html">Prev</a> </td><th width="60%" align="center">Appendix�B.�Install additional supporting software</th><td width="20%" align="right"> <a accesskey="n" href="install-nspam.html">Next</a></td></tr></table><hr></div><div class="sect1" lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="analog-install"></a>Install Analog web file analyzer</h2></div></div></div><p>Download the Analog <a href="individual-programs.html#analog-download">source tarball</a> in
-<code class="computeroutput">/tmp</code>.  Unpack, compile, and install analog.</p><pre class="screen">[root aolserver]# <strong class="userinput"><code>cd /usr/local/src</code></strong>
-[root src]# <strong class="userinput"><code>tar xzf /tmp/analog-5.32.tar.gz</code></strong>
-[root src]# <strong class="userinput"><code>cd analog-5.32</code></strong>
-[root analog-5.32]# <strong class="userinput"><code>make</code></strong>
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html><head><meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"><title>Install Analog web file analyzer</title><meta name="generator" content="DocBook XSL Stylesheets V1.60.1"><link rel="home" href="index.html" title="OpenACS Core Documentation"><link rel="up" href="install-more-software.html" title="Appendix�B.�Install additional supporting software"><link rel="previous" href="install-qmail.html" title="Install qmail (OPTIONAL)"><link rel="next" href="install-nspam.html" title="Install nspam"><link rel="stylesheet" href="openacs.css" type="text/css"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><a href="http://openacs.org"><img src="/doc/images/alex.jpg" border="0" alt="Alex logo"></a><table width="100%" summary="Navigation header" border="0"><tr><td width="20%" align="left"><a accesskey="p" href="install-qmail.html">Prev</a> </td><th width="60%" align="center">Appendix�B.�Install additional supporting software</th><td width="20%" align="right"> <a accesskey="n" href="install-nspam.html">Next</a></td></tr></table><hr></div><div class="sect1" lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="analog-install"></a>Install Analog web file analyzer</h2></div></div><div></div></div><p>Download the Analog <a href="individual-programs.html#analog-download">source tarball</a> in
+<tt class="computeroutput">/tmp</tt>.  Unpack, compile, and install analog.</p><pre class="screen">[root aolserver]# <b class="userinput"><tt>cd /usr/local/src</tt></b>
+[root src]# <b class="userinput"><tt>tar xzf /tmp/analog-5.32.tar.gz</tt></b>
+[root src]# <b class="userinput"><tt>cd analog-5.32</tt></b>
+[root analog-5.32]# <b class="userinput"><tt>make</tt></b>
 cd src &amp;&amp; make
 make[1]: Entering directory `/usr/local/src/analog-5.32/src'
 <span class="emphasis"><em>(many lines omitted)</em></span>
 ***IMPORTANT: You must read the licence before using analog
 ***
 make[1]: Leaving directory `/usr/local/src/analog-5.32/src'
-[root analog-5.32]# <strong class="userinput"><code>cd ..</code></strong>
-[root src]#<strong class="userinput"><code> mv analog-5.32 /usr/share/</code></strong>
+[root analog-5.32]# <b class="userinput"><tt>cd ..</tt></b>
+[root src]#<b class="userinput"><tt> mv analog-5.32 /usr/share/</tt></b>
 [root src]#
 <span class="action"><span class="action">cd /usr/local/src
 tar xzf /tmp/analog-5.32.tar.gz
 cd analog-5.32
 make
 cd ..
-mv analog-5.32 /usr/share/</span></span></pre><p>See also <a href="analog-setup.html" title="Set up Log Analysis Reports">the section called &#8220;Set up Log Analysis Reports&#8221;</a></p></div><div class="navfooter"><hr><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="install-qmail.html">Prev</a> </td><td width="20%" align="center"><a accesskey="h" href="index.html">Home</a></td><td width="40%" align="right"> <a accesskey="n" href="install-nspam.html">Next</a></td></tr><tr><td width="40%" align="left">Install qmail (OPTIONAL) </td><td width="20%" align="center"><a accesskey="u" href="install-more-software.html">Up</a></td><td width="40%" align="right"> Install nspam</td></tr></table><hr><address><a href="mailto:docs@openacs.org">docs@openacs.org</a></address></div><a name="comments"></a><center><a href="http://openacs.org/doc/current/analog-install.html#comments">View comments on this page at openacs.org</a></center></body></html>
+mv analog-5.32 /usr/share/</span></span></pre><p>See also <a href="analog-setup.html" title="Set up Log Analysis Reports">Section�, &#8220;Set up Log Analysis Reports&#8221;</a></p></div><div class="navfooter"><hr><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="install-qmail.html">Prev</a> </td><td width="20%" align="center"><a accesskey="h" href="index.html">Home</a></td><td width="40%" align="right"> <a accesskey="n" href="install-nspam.html">Next</a></td></tr><tr><td width="40%" align="left">Install qmail (OPTIONAL) </td><td width="20%" align="center"><a accesskey="u" href="install-more-software.html">Up</a></td><td width="40%" align="right"> Install nspam</td></tr></table><hr><address><a href="mailto:docs@openacs.org">docs@openacs.org</a></address></div><a name="comments"></a><center><a href="http://openacs.org/doc/current/analog-install.html#comments">View comments on this page at openacs.org</a></center></body></html>
Index: openacs-4/packages/acs-core-docs/www/analog-setup.html
===================================================================
RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/analog-setup.html,v
diff -u -r1.9 -r1.9.4.1
--- openacs-4/packages/acs-core-docs/www/analog-setup.html	17 Jul 2006 05:38:31 -0000	1.9
+++ openacs-4/packages/acs-core-docs/www/analog-setup.html	3 Feb 2008 12:07:38 -0000	1.9.4.1
@@ -1,31 +1,32 @@
-<html><head><meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"><title>Set up Log Analysis Reports</title><meta name="generator" content="DocBook XSL Stylesheets V1.70.1"><link rel="home" href="index.html" title="OpenACS Core Documentation"><link rel="up" href="maintenance-web.html" title="Chapter�6.�Production Environments"><link rel="previous" href="install-ssl.html" title="Installing SSL Support for an OpenACS service"><link rel="next" href="uptime.html" title="External uptime validation"><link rel="stylesheet" href="openacs.css" type="text/css"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><a href="http://openacs.org"><img src="/doc/images/alex.jpg" border="0" alt="Alex logo"></a><table width="100%" summary="Navigation header" border="0"><tr><td width="20%" align="left"><a accesskey="p" href="install-ssl.html">Prev</a> </td><th width="60%" align="center">Chapter�6.�Production Environments</th><td width="20%" align="right"> <a accesskey="n" href="uptime.html">Next</a></td></tr></table><hr></div><div class="sect1" lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="analog-setup"></a>Set up Log Analysis Reports</h2></div></div></div><p>Analog is a program with processes webserver access logs,
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html><head><meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"><title>Set up Log Analysis Reports</title><meta name="generator" content="DocBook XSL Stylesheets V1.60.1"><link rel="home" href="index.html" title="OpenACS Core Documentation"><link rel="up" href="maintenance-web.html" title="Chapter�6.�Production Environments"><link rel="previous" href="install-ssl.html" title="Installing SSL Support for an OpenACS service"><link rel="next" href="uptime.html" title="External uptime validation"><link rel="stylesheet" href="openacs.css" type="text/css"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><a href="http://openacs.org"><img src="/doc/images/alex.jpg" border="0" alt="Alex logo"></a><table width="100%" summary="Navigation header" border="0"><tr><td width="20%" align="left"><a accesskey="p" href="install-ssl.html">Prev</a> </td><th width="60%" align="center">Chapter�6.�Production Environments</th><td width="20%" align="right"> <a accesskey="n" href="uptime.html">Next</a></td></tr></table><hr></div><div class="sect1" lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="analog-setup"></a>Set up Log Analysis Reports</h2></div></div><div></div></div><p>Analog is a program with processes webserver access logs,
       performs DNS lookup, and outputs HTML reports.  Analog should
       <a href="analog-install.html" title="Install Analog web file analyzer">already be
       installed.</a>  A modified configuration file is included in
-      the OpenACS tarball.</p><div class="orderedlist"><ol type="1"><li><pre class="screen">[root src]# <strong class="userinput"><code>su - $OPENACS_SERVICE_NAME</code></strong>
-[$OPENACS_SERVICE_NAME $OPENACS_SERVICE_NAME]$ <strong class="userinput"><code>cd /var/lib/aolserver/$OPENACS_SERVICE_NAME</code></strong>
-[$OPENACS_SERVICE_NAME $OPENACS_SERVICE_NAME]$ <strong class="userinput"><code>mkdir www/log</code></strong>
-[$OPENACS_SERVICE_NAME $OPENACS_SERVICE_NAME]$ <strong class="userinput"><code>cp -r /usr/share/analog-5.32/images www/log/</code></strong>
+      the OpenACS tarball.</p><div class="orderedlist"><ol type="1"><li><pre class="screen">[root src]# <b class="userinput"><tt>su - $OPENACS_SERVICE_NAME</tt></b>
+[$OPENACS_SERVICE_NAME $OPENACS_SERVICE_NAME]$ <b class="userinput"><tt>cd /var/lib/aolserver/$OPENACS_SERVICE_NAME</tt></b>
+[$OPENACS_SERVICE_NAME $OPENACS_SERVICE_NAME]$ <b class="userinput"><tt>mkdir www/log</tt></b>
+[$OPENACS_SERVICE_NAME $OPENACS_SERVICE_NAME]$ <b class="userinput"><tt>cp -r /usr/share/analog-5.32/images www/log/</tt></b>
 [$OPENACS_SERVICE_NAME $OPENACS_SERVICE_NAME]$ <span class="action"><span class="action">
 su - $OPENACS_SERVICE_NAME
 cd /var/lib/aolserver/$OPENACS_SERVICE_NAME
 cp /var/lib/aolserver/$OPENACS_SERVICE_NAME/packages/acs-core-docs/www/files/analog.cfg.txt etc/analog.cfg
 mkdir www/log
 cp -r /usr/share/analog-5.32/images www/log/</span></span></pre><p>Edit
-<code class="computeroutput">/var/lib/aolserver/$OPENACS_SERVICE_NAME/etc/analog.cfg</code> and change the variable in <code class="computeroutput">HOSTNAME "[my
-organisation]"</code> to reflect your website title.  If you
+<tt class="computeroutput">/var/lib/aolserver/$OPENACS_SERVICE_NAME/etc/analog.cfg</tt> and change the variable in <tt class="computeroutput">HOSTNAME &quot;[my
+organisation]&quot;</tt> to reflect your website title.  If you
 don't want the traffic log to be publicly visible, change
-<code class="computeroutput">OUTFILE /var/lib/aolserver/$OPENACS_SERVICE_NAME/www/log/traffic.html</code> to use a private
-directory. You'll also need to edit all instances of service0 to your $OPENACS_SERVICE_NAME.</p></li><li><p>Run it.</p><pre class="screen">[$OPENACS_SERVICE_NAME $OPENACS_SERVICE_NAME]$ <strong class="userinput"><code>/usr/share/analog-5.32/analog -G -g/var/lib/aolserver/$OPENACS_SERVICE_NAME/etc/analog.cfg</code></strong>
+<tt class="computeroutput">OUTFILE /var/lib/aolserver/$OPENACS_SERVICE_NAME/www/log/traffic.html</tt> to use a private
+directory. You'll also need to edit all instances of service0 to your $OPENACS_SERVICE_NAME.</p></li><li><p>Run it.</p><pre class="screen">[$OPENACS_SERVICE_NAME $OPENACS_SERVICE_NAME]$ <b class="userinput"><tt>/usr/share/analog-5.32/analog -G -g/var/lib/aolserver/$OPENACS_SERVICE_NAME/etc/analog.cfg</tt></b>
 /usr/share/analog-5.32/analog: analog version 5.32/Unix
 /usr/share/analog-5.32/analog: Warning F: Failed to open DNS input file
   /home/$OPENACS_SERVICE_NAME/dnscache: ignoring it
   (For help on all errors and warnings, see docs/errors.html)
 /usr/share/analog-5.32/analog: Warning R: Turning off empty Search Word Report
-[$OPENACS_SERVICE_NAME $OPENACS_SERVICE_NAME]$</pre><p>Verify that it works by browing to <code class="computeroutput">http://yourserver.test:8000/log/traffic.html</code></p></li><li><p>Automate this by creating a file in
-          <code class="computeroutput">/etc/cron.daily</code>.</p><pre class="screen">[$OPENACS_SERVICE_NAME $OPENACS_SERVICE_NAME]$ <strong class="userinput"><code>exit</code></strong>
+[$OPENACS_SERVICE_NAME $OPENACS_SERVICE_NAME]$</pre><p>Verify that it works by browing to <tt class="computeroutput">http://yourserver.test:8000/log/traffic.html</tt></p></li><li><p>Automate this by creating a file in
+          <tt class="computeroutput">/etc/cron.daily</tt>.</p><pre class="screen">[$OPENACS_SERVICE_NAME $OPENACS_SERVICE_NAME]$ <b class="userinput"><tt>exit</tt></b>
 logout
 
-[root root]# <strong class="userinput"><code>emacs /etc/cron.daily/analog</code></strong></pre><p>Put this into the file:</p><pre class="programlisting">#!/bin/sh
+[root root]# <b class="userinput"><tt>emacs /etc/cron.daily/analog</tt></b></pre><p>Put this into the file:</p><pre class="programlisting">#!/bin/sh
 
-/usr/share/analog-5.32/analog -G -g/var/lib/aolserver/<span class="replaceable"><span class="replaceable">$OPENACS_SERVICE_NAME</span></span>/etc/analog.cfg</pre><pre class="screen">[root root]# <strong class="userinput"><code>chmod 755 /etc/cron.daily/analog</code></strong></pre><p>Test it by running the script.</p><pre class="screen">[root root]# <strong class="userinput"><code>sh /etc/cron.daily/analog</code></strong></pre><p>Browse to <code class="computeroutput">http://<span class="replaceable"><span class="replaceable">yourserver.test</span></span>/log/traffic.html</code></p></li></ol></div></div><div class="navfooter"><hr><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="install-ssl.html">Prev</a> </td><td width="20%" align="center"><a accesskey="h" href="index.html">Home</a></td><td width="40%" align="right"> <a accesskey="n" href="uptime.html">Next</a></td></tr><tr><td width="40%" align="left">Installing SSL Support for an OpenACS service </td><td width="20%" align="center"><a accesskey="u" href="maintenance-web.html">Up</a></td><td width="40%" align="right"> External uptime validation</td></tr></table><hr><address><a href="mailto:docs@openacs.org">docs@openacs.org</a></address></div><a name="comments"></a><center><a href="http://openacs.org/doc/current/analog-setup.html#comments">View comments on this page at openacs.org</a></center></body></html>
+/usr/share/analog-5.32/analog -G -g/var/lib/aolserver/<span class="replaceable"><span class="replaceable">$OPENACS_SERVICE_NAME</span></span>/etc/analog.cfg</pre><pre class="screen">[root root]# <b class="userinput"><tt>chmod 755 /etc/cron.daily/analog</tt></b></pre><p>Test it by running the script.</p><pre class="screen">[root root]# <b class="userinput"><tt>sh /etc/cron.daily/analog</tt></b></pre><p>Browse to <tt class="computeroutput">http://<span class="replaceable"><span class="replaceable">yourserver.test</span></span>/log/traffic.html</tt></p></li></ol></div></div><div class="navfooter"><hr><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="install-ssl.html">Prev</a> </td><td width="20%" align="center"><a accesskey="h" href="index.html">Home</a></td><td width="40%" align="right"> <a accesskey="n" href="uptime.html">Next</a></td></tr><tr><td width="40%" align="left">Installing SSL Support for an OpenACS service </td><td width="20%" align="center"><a accesskey="u" href="maintenance-web.html">Up</a></td><td width="40%" align="right"> External uptime validation</td></tr></table><hr><address><a href="mailto:docs@openacs.org">docs@openacs.org</a></address></div><a name="comments"></a><center><a href="http://openacs.org/doc/current/analog-setup.html#comments">View comments on this page at openacs.org</a></center></body></html>
Index: openacs-4/packages/acs-core-docs/www/aolserver.html
===================================================================
RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/aolserver.html,v
diff -u -r1.45 -r1.45.4.1
--- openacs-4/packages/acs-core-docs/www/aolserver.html	17 Jul 2006 05:38:31 -0000	1.45
+++ openacs-4/packages/acs-core-docs/www/aolserver.html	3 Feb 2008 12:07:38 -0000	1.45.4.1
@@ -1,4 +1,5 @@
-<html><head><meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"><title>Install AOLserver 3.3oacs1</title><meta name="generator" content="DocBook XSL Stylesheets V1.70.1"><link rel="home" href="index.html" title="OpenACS Core Documentation"><link rel="up" href="install-more-software.html" title="Appendix�B.�Install additional supporting software"><link rel="previous" href="install-ldap-radius.html" title="Install LDAP for use as external authentication"><link rel="next" href="credits.html" title="Appendix�C.�Credits"><link rel="stylesheet" href="openacs.css" type="text/css"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><a href="http://openacs.org"><img src="/doc/images/alex.jpg" border="0" alt="Alex logo"></a><table width="100%" summary="Navigation header" border="0"><tr><td width="20%" align="left"><a accesskey="p" href="install-ldap-radius.html">Prev</a> </td><th width="60%" align="center">Appendix�B.�Install additional supporting software</th><td width="20%" align="right"> <a accesskey="n" href="credits.html">Next</a></td></tr></table><hr></div><div class="sect1" lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="aolserver"></a>Install AOLserver 3.3oacs1</h2></div></div></div><div class="authorblurb"><p>by <a href="mailto:vinod@kurup.com" target="_top">Vinod Kurup</a></p>
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html><head><meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"><title>Install AOLserver 3.3oacs1</title><meta name="generator" content="DocBook XSL Stylesheets V1.60.1"><link rel="home" href="index.html" title="OpenACS Core Documentation"><link rel="up" href="install-more-software.html" title="Appendix�B.�Install additional supporting software"><link rel="previous" href="install-ldap-radius.html" title="Install LDAP for use as external authentication"><link rel="next" href="credits.html" title="Appendix�C.�Credits"><link rel="stylesheet" href="openacs.css" type="text/css"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><a href="http://openacs.org"><img src="/doc/images/alex.jpg" border="0" alt="Alex logo"></a><table width="100%" summary="Navigation header" border="0"><tr><td width="20%" align="left"><a accesskey="p" href="install-ldap-radius.html">Prev</a> </td><th width="60%" align="center">Appendix�B.�Install additional supporting software</th><td width="20%" align="right"> <a accesskey="n" href="credits.html">Next</a></td></tr></table><hr></div><div class="sect1" lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="aolserver"></a>Install AOLserver 3.3oacs1</h2></div></div><div></div></div><div class="authorblurb"><p>by <a href="mailto:vinod@kurup.com" target="_top">Vinod Kurup</a></p>
           OpenACS docs are written by the named authors, and may be edited
           by OpenACS documentation staff.
         </div><p>We recommend the use of <a href="aolserver4.html" title="Install AOLserver 4">AOLserver 4.0.1</a> or later.  These instructions are retained as a resource.</p><p>
@@ -8,8 +9,8 @@
     instead of from source. If you have the time to debug these
     and submit what you did, that's great, but if not, you
     should stick to installing from source. 
-  </p><div class="orderedlist"><ol type="1"><li><a name="aolserver-tarball"></a><p><b>Unpack the Aolserver tarball.�</b>Download the <a href="individual-programs.html#source-aolserver">aolserver tarball</a> and unpack it.</p><pre class="screen">[root root]# <strong class="userinput"><code>cd /usr/local/src</code></strong>
-[root src]# <strong class="userinput"><code>wget --passive http://uptime.openacs.org/aolserver-openacs/aolserver3.3oacs1.tar.gz</code></strong>
+  </p><div class="orderedlist"><ol type="1"><li><a name="aolserver-tarball"></a><p><b>Unpack the Aolserver tarball.�</b>Download the <a href="individual-programs.html#source-aolserver">aolserver tarball</a> and unpack it.</p><pre class="screen">[root root]# <b class="userinput"><tt>cd /usr/local/src</tt></b>
+[root src]# <b class="userinput"><tt>wget --passive http://uptime.openacs.org/aolserver-openacs/aolserver3.3oacs1.tar.gz</tt></b>
 --15:38:08--  http://uptime.openacs.org/aolserver-openacs/aolserver3.3oacs1.tar.gz
            =&gt; `aolserver3.3oacs1.tar.gz'
 Resolving uptime.openacs.org... done.
@@ -20,41 +21,41 @@
 100%[====================================&gt;] 3,858,074     66.56K/s    ETA 00:00
 
 15:39:05 (66.56 KB/s) - `aolserver3.3oacs1.tar.gz' saved [3858074/3858074]
-[root src]# <strong class="userinput"><code>tar xzf aolserver3.3oacs1.tar.gz</code></strong>
+[root src]# <b class="userinput"><tt>tar xzf aolserver3.3oacs1.tar.gz</tt></b>
 [root src]#
 <span class="action"><span class="action">cd /usr/local/src
 wget --passive http://uptime.openacs.org/aolserver-openacs/aolserver3.3oacs1.tar.gz
-tar xzf aolserver3.3oacs1.tar.gz</span></span></pre><p>This section also relies on some OpenACS files, which you can get with <a href="openacs-unpack.html" title="Unpack the OpenACS tarball">the section called &#8220;Unpack the OpenACS tarball&#8221;</a>.</p></li><li><a name="install-aolserver-compile"></a><p><b>Compile AOLserver.�</b>Compile and install AOLserver.  First, prepare the installation directory and the source code.  The message about BUILD-MODULES can be ignored.</p><pre class="screen">root@yourserver root]# <strong class="userinput"><code>mkdir -p /usr/local/aolserver</code></strong>
-[root root]# <strong class="userinput"><code>cd /usr/local/src/aolserver</code></strong>
-[root aolserver]# <strong class="userinput"><code>./conf-clean</code></strong>
+tar xzf aolserver3.3oacs1.tar.gz</span></span></pre><p>This section also relies on some OpenACS files, which you can get with <a href="openacs-unpack.html" title="Unpack the OpenACS tarball">Section�, &#8220;Unpack the OpenACS tarball&#8221;</a>.</p></li><li><a name="install-aolserver-compile"></a><p><b>Compile AOLserver.�</b>Compile and install AOLserver.  First, prepare the installation directory and the source code.  The message about BUILD-MODULES can be ignored.</p><pre class="screen">root@yourserver root]# <b class="userinput"><tt>mkdir -p /usr/local/aolserver</tt></b>
+[root root]# <b class="userinput"><tt>cd /usr/local/src/aolserver</tt></b>
+[root aolserver]# <b class="userinput"><tt>./conf-clean</tt></b>
 cat: BUILD-MODULES: No such file or directory
 Done.
 [root aolserver]#<span class="action"><span class="action">mkdir -p /usr/local/aolserver
 cd /usr/local/src/aolserver
 ./conf-clean</span></span></pre><p>
           If you are using Oracle, edit
-          <code class="computeroutput">conf-db</code> and change
-          <code class="computeroutput">postgresql</code> to
-          <code class="computeroutput">oracle</code>, or to the word
-          <code class="computeroutput">both</code> if you want both drivers
+          <tt class="computeroutput">conf-db</tt> and change
+          <tt class="computeroutput">postgresql</tt> to
+          <tt class="computeroutput">oracle</tt>, or to the word
+          <tt class="computeroutput">both</tt> if you want both drivers
           installed.  In order to get nsoracle to compile, you may
           need to su - oracle, and then su (without the -) root to set
           the environment variables properly.
-        </p><p><code class="computeroutput">conf-inst</code> should contain the
+        </p><p><tt class="computeroutput">conf-inst</tt> should contain the
           location where AOLserver is to be installed.  Overwrite the
-          tarball's default value with our default value, <code class="computeroutput">/usr/local/aolserver</code>:</p><pre class="screen">[root aolserver]# <strong class="userinput"><code>echo "/usr/local/aolserver" &gt; conf-inst</code></strong>
-[root aolserver]#</pre><p><code class="computeroutput">conf-make</code> should contain the
+          tarball's default value with our default value, <tt class="computeroutput">/usr/local/aolserver</tt>:</p><pre class="screen">[root aolserver]# <b class="userinput"><tt>echo &quot;/usr/local/aolserver&quot; &gt; conf-inst</tt></b>
+[root aolserver]#</pre><p><tt class="computeroutput">conf-make</tt> should contain the
           name of the GNU Make command on your system. It defaults to
-          <code class="computeroutput">gmake</code>.  Debian users: <code class="computeroutput"><strong class="userinput"><code>ln -s /usr/bin/make /usr/bin/gmake</code></strong></code>.</p><p>Set an environment variable that the nspostgres driver
+          <tt class="computeroutput">gmake</tt>.  Debian users: <tt class="computeroutput"><b class="userinput"><tt>ln -s /usr/bin/make /usr/bin/gmake</tt></b></tt>.</p><p>Set an environment variable that the nspostgres driver
       Makefile needs to compile correctly and run
-          <code class="computeroutput">conf</code>, which compiles
+          <tt class="computeroutput">conf</tt>, which compiles
           AOLserver, the default modules, and the database driver, and
           installs them.</p><p>Debian users, see
           warning above, but if you do use apt-get for AOLserver
           3.3+ad13 and postgresql from apt-get may need to 
-          make these symlinks: <code class="computeroutput">ln -s
-          /usr/include/postgresql/ /usr/include/pgsql</code>
-          and <code class="computeroutput">ln -s /usr/lib/postgresql /usr/local/pgsql</code>)</p><pre class="screen">[root aolserver]# <strong class="userinput"><code>export POSTGRES=/usr/local/pgsql; ./conf</code></strong>
+          make these symlinks: <tt class="computeroutput">ln -s
+          /usr/include/postgresql/ /usr/include/pgsql</tt>
+          and <tt class="computeroutput">ln -s /usr/lib/postgresql /usr/local/pgsql</tt>)</p><pre class="screen">[root aolserver]# <b class="userinput"><tt>export POSTGRES=/usr/local/pgsql; ./conf</tt></b>
 Building in /usr/local/aolserver
 with the following modules:
 aolserver
@@ -76,27 +77,27 @@
 ==================================================================
 Done Building Sat Mar  8 10:31:35 PST 2003
 [root aolserver]# </pre><p>
-          This takes about 5 minutes. It builds aolserver, several modules, and the database driver.  (Upgraders, note that the postgres database driver has changed from postgres.so to nspostgres.so).  All of the results are logged to files in <code class="computeroutput">/usr/local/src/aolserver/log</code>.  If you run into problems running AOLserver, check these files for build errors.</p></li><li><a name="aolserver-db-wrapper"></a><p><b>Add a database-specific wrapper script.�</b>This script
+          This takes about 5 minutes. It builds aolserver, several modules, and the database driver.  (Upgraders, note that the postgres database driver has changed from postgres.so to nspostgres.so).  All of the results are logged to files in <tt class="computeroutput">/usr/local/src/aolserver/log</tt>.  If you run into problems running AOLserver, check these files for build errors.</p></li><li><a name="aolserver-db-wrapper"></a><p><b>Add a database-specific wrapper script.�</b>This script
 	  sets database environment variables before starting
 	  AOLserver; this allows the AOLserver instance can
 	  communicate with the database.  There is one script each for
 	  Oracle and PostgreSQL.  They don't conflict, so if you plan
-	  to use both databases, install both.</p><div class="itemizedlist"><ul type="disc"><li><p>Oracle</p><pre class="screen">[root aolserver]# <strong class="userinput"><code>cd /usr/local/aolserver/bin</code></strong>
-[root bin]# <strong class="userinput"><code>cp /var/tmp/openacs-5.2.3rc1/packages/acs-core-docs/www/files/nsd-oracle.txt ./nsd-oracle</code></strong>
-[root bin]# <strong class="userinput"><code>chmod 750 nsd-oracle</code></strong>
+	  to use both databases, install both.</p><div class="itemizedlist"><ul type="disc"><li><p>Oracle</p><pre class="screen">[root aolserver]# <b class="userinput"><tt>cd /usr/local/aolserver/bin</tt></b>
+[root bin]# <b class="userinput"><tt>cp /var/tmp/openacs-5.4.0/packages/acs-core-docs/www/files/nsd-oracle.txt ./nsd-oracle</tt></b>
+[root bin]# <b class="userinput"><tt>chmod 750 nsd-oracle</tt></b>
 [root bin]#
 <span class="action"><span class="action">cd /usr/local/aolserver/bin
-cp /var/tmp/openacs-5.2.3rc1/packages/acs-core-docs/www/files/nsd-oracle.txt ./nsd-oracle
-chmod 750 nsd-oracle</span></span></pre></li><li><p>PostgreSQL</p><pre class="screen">[root aolserver]# <strong class="userinput"><code>cd /usr/local/aolserver/bin</code></strong>
-[root bin]# <strong class="userinput"><code>cp /var/tmp/openacs-5.2.3rc1/packages/acs-core-docs/www/files/nsd-postgres.txt ./nsd-postgres</code></strong>
-[root bin]# <strong class="userinput"><code>chmod 755 nsd-postgres</code></strong>
+cp /var/tmp/openacs-5.4.0/packages/acs-core-docs/www/files/nsd-oracle.txt ./nsd-oracle
+chmod 750 nsd-oracle</span></span></pre></li><li><p>PostgreSQL</p><pre class="screen">[root aolserver]# <b class="userinput"><tt>cd /usr/local/aolserver/bin</tt></b>
+[root bin]# <b class="userinput"><tt>cp /var/tmp/openacs-5.4.0/packages/acs-core-docs/www/files/nsd-postgres.txt ./nsd-postgres</tt></b>
+[root bin]# <b class="userinput"><tt>chmod 755 nsd-postgres</tt></b>
 [root bin]#
 <span class="action"><span class="action">cd /usr/local/aolserver/bin
-cp /var/tmp/openacs-5.2.3rc1/packages/acs-core-docs/www/files/nsd-postgres.txt ./nsd-postgres
+cp /var/tmp/openacs-5.4.0/packages/acs-core-docs/www/files/nsd-postgres.txt ./nsd-postgres
 chmod 755 nsd-postgres</span></span></pre></li></ul></div></li><li><a name="install-tdom"></a><p><b>Install tDOM.�</b>Download the <a href="individual-programs.html#source-tdom">tDOM
         tarball</a>, unpack it, adjust the configuration file to match our patched
-        distribution of aolserver, and compile it.</p><pre class="screen">[root root]# <strong class="userinput"><code>cd /usr/local/src</code></strong>
-[root src]# <strong class="userinput"><code>wget --passive http://www.tdom.org/tDOM-0.7.8.tar.gz</code></strong>
+        distribution of aolserver, and compile it.</p><pre class="screen">[root root]# <b class="userinput"><tt>cd /usr/local/src</tt></b>
+[root src]# <b class="userinput"><tt>wget --passive http://www.tdom.org/tDOM-0.7.8.tar.gz</tt></b>
 --16:40:58--  http://www.tdom.org/tDOM-0.7.8.tar.gz
            =&gt; `tDOM-0.7.8.tar.gz'
 Resolving www.tdom.org... done.
@@ -108,35 +109,35 @@
 
 16:41:04 (138.06 KB/s) - `tDOM-0.7.8.tar.gz' saved [826613/826613]
 
-[root src]# <strong class="userinput"><code>tar xzf tDOM-0.7.8.tar.gz</code></strong>
-[root src]# <strong class="userinput"><code>cd tDOM-0.7.8/unix</code></strong>
+[root src]# <b class="userinput"><tt>tar xzf tDOM-0.7.8.tar.gz</tt></b>
+[root src]# <b class="userinput"><tt>cd tDOM-0.7.8/unix</tt></b>
 [root unix]#
 <span class="action"><span class="action">cd /usr/local/src
 wget --passive http://www.tdom.org/tDOM-0.7.8.tar.gz
 tar xzf tDOM-0.7.8.tar.gz
 cd tDOM-0.7.8/unix</span></span> </pre><p>Edit the file CONFIG and change this section:</p><pre class="programlisting"># ----------------------------------------------------
-# aolsrc="/usr/src/aolserver-3.4"
+# aolsrc=&quot;/usr/src/aolserver-3.4&quot;
 # ../configure --enable-threads --disable-tdomalloc \
 #   --with-aolserver=$aolsrc \
 #   --with-tcl=$aolsrc/tcl8.3.4/unix </pre><p>to</p><pre class="programlisting"># ----------------------------------------------------
-aolsrc="/usr/local/src/aolserver/aolserver"
+aolsrc=&quot;/usr/local/src/aolserver/aolserver&quot;
 ../configure --enable-threads --disable-tdomalloc \
   --with-aolserver=$aolsrc \
-  --with-tcl=$aolsrc/tcl8.3.2/unix</pre><p>And configure and compile:</p><pre class="screen">[root unix]# <strong class="userinput"><code>sh CONFIG</code></strong>
+  --with-tcl=$aolsrc/tcl8.3.2/unix</pre><p>And configure and compile:</p><pre class="screen">[root unix]# <b class="userinput"><tt>sh CONFIG</tt></b>
 creating cache ./config.cache
 checking for memmove... yes
   <span class="emphasis"><em>(many lines omitted)</em></span>
 creating Makefile
 creating tdomConfig.sh
-[root unix]# <strong class="userinput"><code>make</code></strong>
+[root unix]# <b class="userinput"><tt>make</tt></b>
 gcc -pipe -DHAVE_UNISTD_H=1 -DHAVE_LIMITS_H=1 -DTCL_THREADS=1
 -DHAVE_GETCWD=1 -DHAVE_OPENDIR=1 -DHAVE_STRSTR=1 -DHAVE_STRTOL=1 
   <span class="emphasis"><em>(many lines omitted)</em></span>
           -Wl,-rpath,/usr/local/lib -o tcldomsh;\
 fi
-[root unix]# <strong class="userinput"><code>cp libtdom0.7.8.so /usr/local/aolserver/bin/</code></strong>
-[root unix]# <strong class="userinput"><code>cd /usr/local/aolserver/bin/</code></strong>
-[root bin]# <strong class="userinput"><code>ln -s libtdom0.7.8.so libtdom.so</code></strong>
+[root unix]# <b class="userinput"><tt>cp libtdom0.7.8.so /usr/local/aolserver/bin/</tt></b>
+[root unix]# <b class="userinput"><tt>cd /usr/local/aolserver/bin/</tt></b>
+[root bin]# <b class="userinput"><tt>ln -s libtdom0.7.8.so libtdom.so</tt></b>
 [root bin]#
 
 <span class="action"><span class="action">sh CONFIG
@@ -146,16 +147,16 @@
 ln -s libtdom0.7.8.so libtdom.so</span></span></pre></li><li><p><a href="install-nsopenssl.html" title="Install nsopenssl">Install nsopenssl</a>
       (OPTIONAL)</p></li><li><p><a href="install-full-text-search-openfts.html#install-openfts" title="Install OpenFTS module">Install Full Text Search with OpenFTS</a> (OPTIONAL)</p></li><li><p><a href="install-nspam.html" title="Install nspam">Install nspam</a> (OPTIONAL)</p></li><li><a name="install-aolserver-permissions"></a><p><b>Test AOLserver.�</b>In order to test AOLserver, we'll run it using the
       sample-config.tcl file provided in the AOLserver distribution,
-      under the nobody user and <code class="computeroutput">web</code>
+      under the nobody user and <tt class="computeroutput">web</tt>
       group.  The sample-config.tcl configuration writes to the
       default log locations, so we need to give it permission to do so
-      or it will fail.  Grant the <code class="computeroutput">web</code>
+      or it will fail.  Grant the <tt class="computeroutput">web</tt>
       group permission to write to
-      <code class="computeroutput">/usr/local/aolserver/log</code> and
-      <code class="computeroutput">/usr/local/aolserver/servers</code>.</p><pre class="screen">[root root]# <strong class="userinput"><code>cd /usr/local/aolserver</code></strong>
-[root aolserver]# <strong class="userinput"><code>chown -R root.web log servers</code></strong>
-[root aolserver]# <strong class="userinput"><code>chmod -R g+w log servers</code></strong>
-[root aolserver]# <strong class="userinput"><code>ls -l</code></strong>
+      <tt class="computeroutput">/usr/local/aolserver/log</tt> and
+      <tt class="computeroutput">/usr/local/aolserver/servers</tt>.</p><pre class="screen">[root root]# <b class="userinput"><tt>cd /usr/local/aolserver</tt></b>
+[root aolserver]# <b class="userinput"><tt>chown -R root.web log servers</tt></b>
+[root aolserver]# <b class="userinput"><tt>chmod -R g+w log servers</tt></b>
+[root aolserver]# <b class="userinput"><tt>ls -l</tt></b>
 total 32
 drwxr-sr-x    2 root     root         4096 Mar  8 12:57 bin
 drwxr-xr-x    3 root     root         4096 Mar  8 10:34 include
@@ -170,12 +171,12 @@
 chown -R root.web log servers
 chmod -R g+w log servers
 ls -l</span></span></pre><p>Note: AOLserver4.x does not include a default start page, so we create one for this test. Type 
-        <strong class="userinput"><code>echo "Welcome to AOLserver" &gt; /usr/local/aolserver40r8/servers/server1/pages/index.html</code></strong>
+        <b class="userinput"><tt>echo &quot;Welcome to AOLserver&quot; &gt; /usr/local/aolserver40r8/servers/server1/pages/index.html</tt></b>
       </p><p>Now, we'll run a quick test to ensure AOLserver is running
           correctly. We'll use the sample config file provided with
           AOLserver. This file will attempt to guess your IP address and
           hostname. It will then start up the server at port 8000 of that
-          IP address.</p><pre class="screen">[root aolserver]# <strong class="userinput"><code>./bin/nsd -t sample-config.tcl -u nobody -g web</code></strong>
+          IP address.</p><pre class="screen">[root aolserver]# <b class="userinput"><tt>./bin/nsd -t sample-config.tcl -u nobody -g web</tt></b>
 [root aolserver]# [08/Mar/2003:15:07:18][31175.8192][-main-] Notice: config.tcl: starting to read config file...
 [08/Mar/2003:15:07:18][31175.8192][-main-] Warning: config.tcl: nsssl not loaded -- key/cert files do not exist.
 [08/Mar/2003:15:07:18][31175.8192][-main-] Warning: config.tcl: nscp not loaded
@@ -184,32 +185,32 @@
 config file.</pre><p>The first warning, about nsssl, can be ignored.  We won't be using nsssl; we'll be using nsopenssl instead, and we haven't fully configured it yet.  The nscp warning refers to the fact that, without a user and password in the config file, the administrative panel of AOLserver won't load.  We don't plan to use it and can ignore that error as well.  Any other warning or error is unexpected and probably a problem.</p><p>
 
           Test to see if AOLserver is working by starting
-          <code class="computeroutput">Mozilla</code> or
-          <code class="computeroutput">Lynx</code> <span class="emphasis"><em>on the same
+          <tt class="computeroutput">Mozilla</tt> or
+          <tt class="computeroutput">Lynx</tt> <span class="emphasis"><em>on the same
           computer</em></span> and surfing over to your web page.  If
           you browse from another computer and the sample config file
           didn't guess your hostname or ip correctly, you'll get a
           false negative test.
 
-        </p><pre class="screen">[root aolserver]# <strong class="userinput"><code>lynx localhost:8000</code></strong></pre><p>
+        </p><pre class="screen">[root aolserver]# <b class="userinput"><tt>lynx localhost:8000</tt></b></pre><p>
 
-          You should see a "Welcome to AOLserver" page. If this
+          You should see a &quot;Welcome to AOLserver&quot; page. If this
           doesn't work, try going to
-          <code class="computeroutput">http://127.0.0.1:8000/</code>. If this
+          <tt class="computeroutput">http://127.0.0.1:8000/</tt>. If this
           still doesn't work, check out the <a href="aolserver.html#install-aolserver-troubleshooting">Troubleshooting AOLserver</a> section below.  Note that you will not be able to browse to the web page from another machine, because AOLserver is only listening to the local address.
 
-        </p><p>Shutdown the test server:</p><pre class="screen">[root aolserver]# <strong class="userinput"><code>killall nsd</code></strong>
+        </p><p>Shutdown the test server:</p><pre class="screen">[root aolserver]# <b class="userinput"><tt>killall nsd</tt></b>
 [root aolserver]#</pre><p>
 
-          The <code class="computeroutput">killall</code> command will kill
-          all processes with the name <code class="computeroutput">nsd</code>,
+          The <tt class="computeroutput">killall</tt> command will kill
+          all processes with the name <tt class="computeroutput">nsd</tt>,
           but clearly this is not a good tool to use for managing your
           services in general. We cover this topic in the <a href="install-openacs-keepalive.html">Keep AOLserver alive</a> section.
 
         </p></li><li><a name="install-aolserver-troubleshooting"></a><p><b>Troubleshooting.�</b>If you can't view the welcome page, it's likely there's a
       problem with your server configuration. Start by viewing your
       AOLserver log, which is in
-      <code class="computeroutput">/usr/local/aolserver/log/server.log</code>.
+      <tt class="computeroutput">/usr/local/aolserver/log/server.log</tt>.
       You should also try to find lines of the form:
     </p><pre class="screen">
 [01/Jun/2000:12:11:20][5914.4051][-nssock-] Notice: nssock: listening on http://localhost.localdomain:8000 (127.0.0.1:8000)
@@ -218,12 +219,12 @@
       If you can find these lines, try entering the URL the server is
       listening on. If you cannot find these lines, there must be an error
       somewhere in the file. Search for lines beginning with the word
-      <code class="computeroutput">Error</code> instead of
-      <code class="computeroutput">Notice</code>.
+      <tt class="computeroutput">Error</tt> instead of
+      <tt class="computeroutput">Notice</tt>.
 
     </p><p>
 
-      The <code class="computeroutput">sample-config.tcl</code> file grabs
+      The <tt class="computeroutput">sample-config.tcl</tt> file grabs
       your address and hostname from your OS settings.
 
     </p><pre class="screen">
@@ -233,7 +234,7 @@
       If you get an error that nssock can't get the requested address, you
       can set these manually. If you type 0.0.0.0, AOLserver will try to
       listen on all available addresses.  <span class="emphasis"><em>Note</em></span>:
-      <code class="computeroutput">ns_info address</code> doesn't appear
+      <tt class="computeroutput">ns_info address</tt> doesn't appear
       to be supported in current versions of AOLserver.
 
     </p><pre class="screen">
Index: openacs-4/packages/acs-core-docs/www/aolserver4.html
===================================================================
RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/aolserver4.html,v
diff -u -r1.20 -r1.20.4.1
--- openacs-4/packages/acs-core-docs/www/aolserver4.html	17 Jul 2006 05:38:31 -0000	1.20
+++ openacs-4/packages/acs-core-docs/www/aolserver4.html	3 Feb 2008 12:07:38 -0000	1.20.4.1
@@ -1,53 +1,54 @@
-<html><head><meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"><title>Install AOLserver 4</title><meta name="generator" content="DocBook XSL Stylesheets V1.70.1"><link rel="home" href="index.html" title="OpenACS Core Documentation"><link rel="up" href="complete-install.html" title="Chapter�3.�Complete Installation"><link rel="previous" href="postgres.html" title="Install PostgreSQL"><link rel="next" href="openacs.html" title="Install OpenACS 5.2.3rc1"><link rel="stylesheet" href="openacs.css" type="text/css"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><a href="http://openacs.org"><img src="/doc/images/alex.jpg" border="0" alt="Alex logo"></a><table width="100%" summary="Navigation header" border="0"><tr><td width="20%" align="left"><a accesskey="p" href="postgres.html">Prev</a> </td><th width="60%" align="center">Chapter�3.�Complete Installation</th><td width="20%" align="right"> <a accesskey="n" href="openacs.html">Next</a></td></tr></table><hr></div><div class="sect1" lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="aolserver4"></a>Install AOLserver 4</h2></div></div></div><div class="authorblurb"><p>by <a href="mailto:sussdorff@sussdorff.de" target="_top">Malte Sussdorff</a></p>
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html><head><meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"><title>Install AOLserver 4</title><meta name="generator" content="DocBook XSL Stylesheets V1.60.1"><link rel="home" href="index.html" title="OpenACS Core Documentation"><link rel="up" href="complete-install.html" title="Chapter�3.�Complete Installation"><link rel="previous" href="postgres.html" title="Install PostgreSQL"><link rel="next" href="openacs.html" title="Install OpenACS 5.4.0"><link rel="stylesheet" href="openacs.css" type="text/css"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><a href="http://openacs.org"><img src="/doc/images/alex.jpg" border="0" alt="Alex logo"></a><table width="100%" summary="Navigation header" border="0"><tr><td width="20%" align="left"><a accesskey="p" href="postgres.html">Prev</a> </td><th width="60%" align="center">Chapter�3.�Complete Installation</th><td width="20%" align="right"> <a accesskey="n" href="openacs.html">Next</a></td></tr></table><hr></div><div class="sect1" lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="aolserver4"></a>Install AOLserver 4</h2></div></div><div></div></div><div class="authorblurb"><p>by <a href="mailto:sussdorff@sussdorff.de" target="_top">Malte Sussdorff</a></p>
           OpenACS docs are written by the named authors, and may be edited
           by OpenACS documentation staff.
-        </div><div class="orderedlist"><ol type="1"><li><p><b>Check suitability of previously installed TCL.�</b>Start tcl (type <strong class="userinput"><code>tclsh</code></strong> or find it using <strong class="userinput"><code>which tclsh</code></strong>).
-        </p><pre class="screen">[root root]% <strong class="userinput"><code>info exists tcl_platform(threaded)</code></strong>
+        </div><div class="orderedlist"><ol type="1"><li><p><b>Check suitability of previously installed TCL.�</b>Start tcl (type <b class="userinput"><tt>tclsh</tt></b> or find it using <b class="userinput"><tt>which tclsh</tt></b>).
+        </p><pre class="screen">[root root]% <b class="userinput"><tt>info exists tcl_platform(threaded)</tt></b>
 1
-[root root]% <strong class="userinput"><code>info patchlevel</code></strong>
+[root root]% <b class="userinput"><tt>info patchlevel</tt></b>
 8.4.7
 [root root]%
 <span class="action"><span class="action">tclsh
 info exists tcl_platform(threaded)
 info patchlevel
-</span></span></pre><p>If the first command returns anything other than <code class="computeroutput">1</code>, 
+</span></span></pre><p>If the first command returns anything other than <tt class="computeroutput">1</tt>, 
         then tcl is not threaded. If tcl is threaded and the version is 8.4 or higher, then installing
         tcl from source is optional.
       </p><p><a name="tcl-download"></a><b>Retrieve TCL 8.4 (or higher).�</b>Download and install TCL 8.4 from source</p><p>Note for Debian users: you can apt-get install
       tcl8.4-dev if you have the right version (stable users will need
       to add tcl8.4 to their sources.list file as described on the
       <a href="postgres.html" title="Install PostgreSQL">Install Postgres</a> page). You'll
       have to use /usr/lib/tcl8.4/ instead of /usr/local/lib when you
-      try to find the tcl libraries, however.</p><p>If you have not installed TCL already, download the latest TCL version from Sourceforge</p><p><span class="bold"><strong>Debian:</strong></span>
-        <code class="computeroutput"><span class="action"><span class="action">apt-get install
-            tcl8.4 tcl8.4-dev</span></span></code> and proceed to
+      try to find the tcl libraries, however.</p><p>If you have not installed TCL already, download the latest TCL version from Sourceforge</p><p><span class="bold"><b>Debian:</b></span>
+        <tt class="computeroutput"><span class="action"><span class="action">apt-get install
+            tcl8.4 tcl8.4-dev</span></span></tt> and proceed to
         the next step.  In that step, replace
-      <code class="computeroutput">--with-tcl=/usr/local/lib/</code> with
-        <code class="computeroutput">--with-tcl=/usr/lib/tcl8.4</code>.</p><p>Remember that you have to be root if you want to follow these instructions. On Mac OS X type <strong class="userinput"><code>sudo su -</code></strong> to become root.</p><p>Alternatively use <strong class="userinput"><code>curl -L -O</code></strong> instead of <strong class="userinput"><code>wget</code></strong> (especially on Mac OS X).</p><pre class="screen">[root root]# <strong class="userinput"><code>cd /usr/local/src</code></strong>
-[root src]# <strong class="userinput"><code>wget http://heanet.dl.sourceforge.net/sourceforge/tcl/tcl8.4.9-src.tar.gz</code></strong>
-[root src]# <strong class="userinput"><code>tar xfz tcl8.4.9-src.tar.gz</code></strong>
-[root src]# <strong class="userinput"><code>cd tcl8.4.9/unix</code></strong>
-[root unix]# <strong class="userinput"><code>./configure --enable-threads</code></strong>
-[root unix]# <strong class="userinput"><code>make install</code></strong>
+      <tt class="computeroutput">--with-tcl=/usr/local/lib/</tt> with
+        <tt class="computeroutput">--with-tcl=/usr/lib/tcl8.4</tt>.</p><p>Remember that you have to be root if you want to follow these instructions. On Mac OS X type <b class="userinput"><tt>sudo su -</tt></b> to become root.</p><p>Alternatively use <b class="userinput"><tt>curl -L -O</tt></b> instead of <b class="userinput"><tt>wget</tt></b> (especially on Mac OS X).</p><pre class="screen">[root root]# <b class="userinput"><tt>cd /usr/local/src</tt></b>
+[root src]# <b class="userinput"><tt>wget http://heanet.dl.sourceforge.net/sourceforge/tcl/tcl8.4.9-src.tar.gz</tt></b>
+[root src]# <b class="userinput"><tt>tar xfz tcl8.4.9-src.tar.gz</tt></b>
+[root src]# <b class="userinput"><tt>cd tcl8.4.9/unix</tt></b>
+[root unix]# <b class="userinput"><tt>./configure --enable-threads</tt></b>
+[root unix]# <b class="userinput"><tt>make install</tt></b>
 [root root]# 
 <span class="action"><span class="action">cd /usr/local/src
 wget http://heanet.dl.sourceforge.net/sourceforge/tcl/tcl8.4.9-src.tar.gz
 tar xfz tcl8.4.9-src.tar.gz
 cd tcl8.4.9/unix
 ./configure --enable-threads
 make install</span></span>
-      </pre></li><li><a name="aolserver4-download"></a><p><b>Retrieve AOLserver.�</b>Download the aolserver from CVS.</p><pre class="screen">[root root]# <strong class="userinput"><code>cd /usr/local/src</code></strong>
-[root src]# <strong class="userinput"><code>mkdir aolserver40r10</code></strong>
-[root src]# <strong class="userinput"><code>cd aolserver40r10</code></strong>
-[root aolserver]# <strong class="userinput"><code>cvs -z3 -d:pserver:anonymous@cvs.sourceforge.net:/cvsroot/aolserver login</code></strong>
-[root aolserver]# <strong class="userinput"><code>cvs -z3 -d:pserver:anonymous@cvs.sourceforge.net:/cvsroot/aolserver co  -r aolserver_v40_r10 aolserver</code></strong>
-[root aolserver]# <strong class="userinput"><code>cvs -z3 -d:pserver:anonymous@cvs.sourceforge.net:/cvsroot/aolserver co nscache</code></strong>
-[root aolserver]# <strong class="userinput"><code>cvs -z3 -d:pserver:anonymous@cvs.sourceforge.net:/cvsroot/aolserver co nspostgres</code></strong>
-[root aolserver]# <strong class="userinput"><code>cvs -z3 -d:pserver:anonymous@cvs.sourceforge.net:/cvsroot/aolserver co nssha1</code></strong>
-[root aolserver]# <strong class="userinput"><code>cvs -z3 -d:pserver:anonymous@cvs.sourceforge.net:/cvsroot/aolserver co -r v2_7 nsoracle</code></strong>
-[root aolserver]# <strong class="userinput"><code>wget http://www.tdom.org/tDOM-0.7.8.tar.gz</code></strong>
-[root aolserver]# <strong class="userinput"><code>tar xvfz tDOM-0.7.8.tar.gz</code></strong>
-[root aolserver]# <strong class="userinput"><code>cvs -z3 -d:pserver:anonymous@cvs.sourceforge.net:/cvsroot/tcllib co -r tcllib-1-8 tcllib</code></strong>
+      </pre></li><li><a name="aolserver4-download"></a><p><b>Retrieve AOLserver.�</b>Download the aolserver from CVS.</p><pre class="screen">[root root]# <b class="userinput"><tt>cd /usr/local/src</tt></b>
+[root src]# <b class="userinput"><tt>mkdir aolserver40r10</tt></b>
+[root src]# <b class="userinput"><tt>cd aolserver40r10</tt></b>
+[root aolserver]# <b class="userinput"><tt>cvs -z3 -d:pserver:anonymous@cvs.sourceforge.net:/cvsroot/aolserver login</tt></b>
+[root aolserver]# <b class="userinput"><tt>cvs -z3 -d:pserver:anonymous@cvs.sourceforge.net:/cvsroot/aolserver co  -r aolserver_v40_r10 aolserver</tt></b>
+[root aolserver]# <b class="userinput"><tt>cvs -z3 -d:pserver:anonymous@cvs.sourceforge.net:/cvsroot/aolserver co nscache</tt></b>
+[root aolserver]# <b class="userinput"><tt>cvs -z3 -d:pserver:anonymous@cvs.sourceforge.net:/cvsroot/aolserver co nspostgres</tt></b>
+[root aolserver]# <b class="userinput"><tt>cvs -z3 -d:pserver:anonymous@cvs.sourceforge.net:/cvsroot/aolserver co nssha1</tt></b>
+[root aolserver]# <b class="userinput"><tt>cvs -z3 -d:pserver:anonymous@cvs.sourceforge.net:/cvsroot/aolserver co -r v2_7 nsoracle</tt></b>
+[root aolserver]# <b class="userinput"><tt>wget http://www.tdom.org/tDOM-0.7.8.tar.gz</tt></b>
+[root aolserver]# <b class="userinput"><tt>tar xvfz tDOM-0.7.8.tar.gz</tt></b>
+[root aolserver]# <b class="userinput"><tt>cvs -z3 -d:pserver:anonymous@cvs.sourceforge.net:/cvsroot/tcllib co -r tcllib-1-8 tcllib</tt></b>
 [root root]# 
 <span class="action"><span class="action">cd /usr/local/src
 mkdir aolserver40r10
@@ -59,31 +60,31 @@
 cvs -z3 -d:pserver:anonymous@cvs.sourceforge.net:/cvsroot/aolserver co -r v2_7 nsoracle
 wget http://www.tdom.org/files/tDOM-0.8.0.tar.gz
 tar xvfz tDOM-0.8.0.tar.gz
-cvs -z3 -d:pserver:anonymous@cvs.sourceforge.net:/cvsroot/tcllib co -r tcllib-1-8 tcllib</span></span></pre></li><li><a name="aolserver4-install"></a><p><b>Configure, compile and install AOLserver.�</b>Many people need to run more than one version of AOLserver in parallel.  This section accomodates future upgrades by installing AOLserver 4 in <code class="computeroutput">/usr/local/aolserver40r9</code>.</p><pre class="screen">[root aolserver]# <strong class="userinput"><code>cd /usr/local/src/aolserver40r10/aolserver</code></strong>
-[root aolserver]# <strong class="userinput"><code>./configure --prefix=/usr/local/aolserver40r10 --with-tcl=/usr/local/lib/</code></strong>
-[root aolserver]# <strong class="userinput"><code>make install</code></strong>
+cvs -z3 -d:pserver:anonymous@cvs.sourceforge.net:/cvsroot/tcllib co -r tcllib-1-8 tcllib</span></span></pre></li><li><a name="aolserver4-install"></a><p><b>Configure, compile and install AOLserver.�</b>Many people need to run more than one version of AOLserver in parallel.  This section accomodates future upgrades by installing AOLserver 4 in <tt class="computeroutput">/usr/local/aolserver40r9</tt>.</p><pre class="screen">[root aolserver]# <b class="userinput"><tt>cd /usr/local/src/aolserver40r10/aolserver</tt></b>
+[root aolserver]# <b class="userinput"><tt>./configure --prefix=/usr/local/aolserver40r10 --with-tcl=/usr/local/lib/</tt></b>
+[root aolserver]# <b class="userinput"><tt>make install</tt></b>
 <span class="action"><span class="action">cd /usr/local/src/aolserver40r10/aolserver
 ./configure --prefix=/usr/local/aolserver40r10 --with-tcl=/usr/local/lib/
 make install
-</span></span></pre><p>If you are using gcc 4 or later, see <a href="http://openacs.org/forums/message-view?message_id=309814" target="_top">http://openacs.org/forums/message-view?message_id=309814</a></p><p>If this is the only version of AOLserver in use, or is the default version, create a symlink.  If not, then be sure to use <code class="computeroutput">/usr/local/aolserver40r10</code> instead of <code class="computeroutput">/usr/local/aolserver</code> in the steps below and check both scripts and makefiles to ensure they use the correct path.</p><pre class="screen">[root aolserver]# <strong class="userinput"><code>ln -s /usr/local/aolserver40r10 /usr/local/aolserver</code></strong></pre></li><li><a name="aolserver4-modules-install"></a><p><b>Configure, compile and install the modules.�</b>
-          </p><div class="orderedlist"><ol type="a"><li><p><a name="aolserver4-nscache-install"></a>Install nscache</p><pre class="screen">[root aolserver]# <strong class="userinput"><code>cd /usr/local/src/aolserver40r10/nscache</code></strong>
-[root nscache]# <strong class="userinput"><code>make install AOLSERVER=/usr/local/aolserver</code></strong></pre></li><li><p><a name="aolserver4-nsoracle-install"></a>Install nsoracle (if you want to use Oracle)</p><pre class="screen">[root nscache]# <strong class="userinput"><code>cd ../nsoracle</code></strong>
-[root nsoracle]# <strong class="userinput"><code>make install AOLSERVER=/usr/local/aolserver</code></strong></pre><p>OpenACS looks for the Oracle driver at
+</span></span></pre><p>If you are using gcc 4 or later, see <a href="http://openacs.org/forums/message-view?message_id=309814" target="_top">http://openacs.org/forums/message-view?message_id=309814</a></p><p>If this is the only version of AOLserver in use, or is the default version, create a symlink.  If not, then be sure to use <tt class="computeroutput">/usr/local/aolserver40r10</tt> instead of <tt class="computeroutput">/usr/local/aolserver</tt> in the steps below and check both scripts and makefiles to ensure they use the correct path.</p><pre class="screen">[root aolserver]# <b class="userinput"><tt>ln -s /usr/local/aolserver40r10 /usr/local/aolserver</tt></b></pre></li><li><a name="aolserver4-modules-install"></a><p><b>Configure, compile and install the modules.�</b>
+          </p><div class="orderedlist"><ol type="a"><li><p><a name="aolserver4-nscache-install"></a>Install nscache</p><pre class="screen">[root aolserver]# <b class="userinput"><tt>cd /usr/local/src/aolserver40r10/nscache</tt></b>
+[root nscache]# <b class="userinput"><tt>make install AOLSERVER=/usr/local/aolserver</tt></b></pre></li><li><p><a name="aolserver4-nsoracle-install"></a>Install nsoracle (if you want to use Oracle)</p><pre class="screen">[root nscache]# <b class="userinput"><tt>cd ../nsoracle</tt></b>
+[root nsoracle]# <b class="userinput"><tt>make install AOLSERVER=/usr/local/aolserver</tt></b></pre><p>OpenACS looks for the Oracle driver at
             /usr/local/aolserver/bin/ora8.so, but some versions of
             nsoracle may create nsoracle.so instead. In that case, you
-            can symlink (<strong class="userinput"><code>ln -s nsoracle.so ora8.so</code></strong>) to fix it. </p></li><li><p><a name="aolserver4-nspostgres-install"></a>Install nspostgres (if you want to use Postgres)</p><pre class="screen">[root nscache]# <strong class="userinput"><code>cd ../nspostgres</code></strong>
-[root nspostgres]# <strong class="userinput"><code>export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/pgsql/lib:/usr/local/aolserver/lib</code></strong>
-[root nspostgres]# <strong class="userinput"><code>make install POSTGRES=LSB ACS=1 INST=/usr/local/aolserver  AOLSERVER=/usr/local/aolserver</code></strong>
+            can symlink (<b class="userinput"><tt>ln -s nsoracle.so ora8.so</tt></b>) to fix it. </p></li><li><p><a name="aolserver4-nspostgres-install"></a>Install nspostgres (if you want to use Postgres)</p><pre class="screen">[root nscache]# <b class="userinput"><tt>cd ../nspostgres</tt></b>
+[root nspostgres]# <b class="userinput"><tt>export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/pgsql/lib:/usr/local/aolserver/lib</tt></b>
+[root nspostgres]# <b class="userinput"><tt>make install POSTGRES=LSB ACS=1 INST=/usr/local/aolserver  AOLSERVER=/usr/local/aolserver</tt></b>
               </pre><p>If you get errors like:</p><pre class="programlisting">nspostgres.c: In function `Ns_PgTableList':
-nspostgres.c:679: warning: passing arg 3 of `Tcl_DStringAppend' as signed due to prototype</pre><p>then PostGreSQL is probably not in the standard location.  The location of PostGreSQL is very dependent on which method was used to install it.  To correct the problem, replace <code class="computeroutput">LSB</code> with the path to the path to your PostGreSQL installation.  Often this is <code class="computeroutput">/usr/local/pgsql</code>.</p><p>You can use the
-              <code class="computeroutput">ldd</code> command to verify
+nspostgres.c:679: warning: passing arg 3 of `Tcl_DStringAppend' as signed due to prototype</pre><p>then PostGreSQL is probably not in the standard location.  The location of PostGreSQL is very dependent on which method was used to install it.  To correct the problem, replace <tt class="computeroutput">LSB</tt> with the path to the path to your PostGreSQL installation.  Often this is <tt class="computeroutput">/usr/local/pgsql</tt>.</p><p>You can use the
+              <tt class="computeroutput">ldd</tt> command to verify
               that all libraries are linked in: 
-                <strong class="userinput"><code>ldd /usr/local/src/aolserver40r10/nspostgres/nspostgres.so</code></strong>
-              </p><p>If you run into problems with libpq.a do the following (and repeat the step above)</p><pre class="screen">[root nspostgres]# <strong class="userinput"><code>ranlib /usr/local/pgsql/lib/libpq.a</code></strong></pre><p>If you run into problems with the linker, edit the Makefile. Add <code class="computeroutput">-lnsdb</code> to the <code class="computeroutput">MODLIBS</code> var.</p><pre class="programlisting">MODLIBS = -L$(PGLIB) -lpq <span class="bold"><strong>-lnsdb</strong></span></pre></li><li><p><a name="aolserver4-nssha1-install"></a>Install nssha1</p><pre class="screen">[root nspostgres]# <strong class="userinput"><code>cd ../nssha1</code></strong></pre><p>Now install nssha1:</p><pre class="screen">[root nssha1]# <strong class="userinput"><code>make install AOLSERVER=/usr/local/aolserver</code></strong></pre><p>If the make fails you will have to edit nssha1.c. Comment out the following 2 lines (lines 139-140):        </p><pre class="programlisting"><span class="bold"><strong>//</strong></span> typedef unsigned int u_int32_t;
-<span class="bold"><strong>//</strong></span> typedef unsigned char u_int8_t;</pre></li><li><p><a name="aolserver4-tdom-install"></a>Install tDOM</p><pre class="screen">[root nssha1]# <strong class="userinput"><code>cd ../tDOM-0.8.0/unix</code></strong></pre><p>Edit the <code class="computeroutput">CONFIG</code> file. Uncomment the instructions meant for AOLserver 4, but edit it to look like this:</p><pre class="screen">../configure --enable-threads --disable-tdomalloc
-          --prefix=/usr/local/aolserver --with-tcl=/usr/local/lib</pre><p>Note that the location of the Tcl library may vary on differnt platforms (e.g. for Debian 3.0: --with-tcl=/usr/lib/tcl8.4)</p><p>Now you can compile and configure tDOM</p><pre class="screen">[root unix]# <strong class="userinput"><code>sh CONFIG</code></strong>
-[root unix]# <strong class="userinput"><code>make install</code></strong></pre></li><li><p><a name="aolserver4-tcllib-install"></a>Install TCLLIB</p><pre class="screen">[root nssha1]# <strong class="userinput"><code>cd ../tcllib</code></strong></pre><p>Configure and compile TCLLIB</p><pre class="screen">[root unix]# <strong class="userinput"><code>./configure -prefix=/usr/local/aolserver40r10</code></strong>
-[root unix]# <strong class="userinput"><code>make install</code></strong></pre></li></ol></div><p>
+                <b class="userinput"><tt>ldd /usr/local/src/aolserver40r10/nspostgres/nspostgres.so</tt></b>
+              </p><p>If you run into problems with libpq.a do the following (and repeat the step above)</p><pre class="screen">[root nspostgres]# <b class="userinput"><tt>ranlib /usr/local/pgsql/lib/libpq.a</tt></b></pre><p>If you run into problems with the linker, edit the Makefile. Add <tt class="computeroutput">-lnsdb</tt> to the <tt class="computeroutput">MODLIBS</tt> var.</p><pre class="programlisting">MODLIBS = -L$(PGLIB) -lpq <span class="bold"><b>-lnsdb</b></span></pre></li><li><p><a name="aolserver4-nssha1-install"></a>Install nssha1</p><pre class="screen">[root nspostgres]# <b class="userinput"><tt>cd ../nssha1</tt></b></pre><p>Now install nssha1:</p><pre class="screen">[root nssha1]# <b class="userinput"><tt>make install AOLSERVER=/usr/local/aolserver</tt></b></pre><p>If the make fails you will have to edit nssha1.c. Comment out the following 2 lines (lines 139-140):        </p><pre class="programlisting"><span class="bold"><b>//</b></span> typedef unsigned int u_int32_t;
+<span class="bold"><b>//</b></span> typedef unsigned char u_int8_t;</pre></li><li><p><a name="aolserver4-tdom-install"></a>Install tDOM</p><pre class="screen">[root nssha1]# <b class="userinput"><tt>cd ../tDOM-0.8.0/unix</tt></b></pre><p>Edit the <tt class="computeroutput">CONFIG</tt> file. Uncomment the instructions meant for AOLserver 4, but edit it to look like this:</p><pre class="screen">../configure --enable-threads --disable-tdomalloc
+          --prefix=/usr/local/aolserver --with-tcl=/usr/local/lib</pre><p>Note that the location of the Tcl library may vary on differnt platforms (e.g. for Debian 3.0: --with-tcl=/usr/lib/tcl8.4)</p><p>Now you can compile and configure tDOM</p><pre class="screen">[root unix]# <b class="userinput"><tt>sh CONFIG</tt></b>
+[root unix]# <b class="userinput"><tt>make install</tt></b></pre></li><li><p><a name="aolserver4-tcllib-install"></a>Install TCLLIB</p><pre class="screen">[root nssha1]# <b class="userinput"><tt>cd ../tcllib</tt></b></pre><p>Configure and compile TCLLIB</p><pre class="screen">[root unix]# <b class="userinput"><tt>./configure -prefix=/usr/local/aolserver40r10</tt></b>
+[root unix]# <b class="userinput"><tt>make install</tt></b></pre></li></ol></div><p>
           </p></li><li><a name="aolserver4-db-wrapper"></a><p><b>Add a database-specific wrapper script.�</b>This script
 	  sets database environment variables before starting
 	  AOLserver; this allows the AOLserver instance to
@@ -98,17 +99,17 @@
       OpenACS code, but don't forget to come back. (Note to
       maintainers: this should be moved to the next page and
       integrated into the text there)
-    </p><div class="itemizedlist"><ul type="disc"><li><p>Oracle</p><pre class="screen">[root aolserver]# <strong class="userinput"><code>cd /usr/local/aolserver/bin</code></strong>
-[root bin]# <strong class="userinput"><code>cp /tmp/openacs-5.2.3rc1/packages/acs-core-docs/www/files/nsd-oracle.txt ./nsd-oracle</code></strong>
-[root bin]# <strong class="userinput"><code>chmod 750 nsd-oracle</code></strong>
+    </p><div class="itemizedlist"><ul type="disc"><li><p>Oracle</p><pre class="screen">[root aolserver]# <b class="userinput"><tt>cd /usr/local/aolserver/bin</tt></b>
+[root bin]# <b class="userinput"><tt>cp /tmp/openacs-5.4.0/packages/acs-core-docs/www/files/nsd-oracle.txt ./nsd-oracle</tt></b>
+[root bin]# <b class="userinput"><tt>chmod 750 nsd-oracle</tt></b>
 [root bin]#
 <span class="action"><span class="action">cd /usr/local/aolserver/bin
-cp /var/tmp/openacs-5.2.3rc1/packages/acs-core-docs/www/files/nsd-oracle.txt ./nsd-oracle
-chmod 750 nsd-oracle</span></span></pre></li><li><p>PostgreSQL</p><pre class="screen">[root aolserver]# <strong class="userinput"><code>cd /usr/local/aolserver/bin</code></strong>
-[root bin]# <strong class="userinput"><code>cp /var/tmp/openacs-5.2.3rc1/packages/acs-core-docs/www/files/nsd-postgres.txt ./nsd-postgres</code></strong>
-[root bin]# <strong class="userinput"><code>chmod 755 nsd-postgres</code></strong>
+cp /var/tmp/openacs-5.4.0/packages/acs-core-docs/www/files/nsd-oracle.txt ./nsd-oracle
+chmod 750 nsd-oracle</span></span></pre></li><li><p>PostgreSQL</p><pre class="screen">[root aolserver]# <b class="userinput"><tt>cd /usr/local/aolserver/bin</tt></b>
+[root bin]# <b class="userinput"><tt>cp /var/tmp/openacs-5.4.0/packages/acs-core-docs/www/files/nsd-postgres.txt ./nsd-postgres</tt></b>
+[root bin]# <b class="userinput"><tt>chmod 755 nsd-postgres</tt></b>
 [root bin]#
 <span class="action"><span class="action">cd /usr/local/aolserver/bin
-cp /var/tmp/openacs-5.2.3rc1/packages/acs-core-docs/www/files/nsd-postgres.txt ./nsd-postgres
+cp /var/tmp/openacs-5.4.0/packages/acs-core-docs/www/files/nsd-postgres.txt ./nsd-postgres
 chmod 755 nsd-postgres</span></span></pre></li></ul></div><p>You may need to edit these scripts if you are not using
-      /usr/local/aolserver as the directory of Aolserver4.</p></li><li><p><b>Change startup script (optional).�</b>If you want to run AOLserver on a port below 1024 (normally, for a webserver you will use 80), you will have to change the 	  <code class="computeroutput">/var/lib/aolserver/<span class="replaceable"><span class="replaceable">service0</span></span>/etc/daemontools/run</code> script according to the documentation found there (namely: Add the -b <span class="replaceable"><span class="replaceable">yourip:yourport</span></span> switch)</p></li><li><p><a href="aolserver.html#install-aolserver-permissions">Test AOLserver</a>.</p></li></ol></div><div class="cvstag">($Id$)</div></div><div class="navfooter"><hr><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="postgres.html">Prev</a> </td><td width="20%" align="center"><a accesskey="h" href="index.html">Home</a></td><td width="40%" align="right"> <a accesskey="n" href="openacs.html">Next</a></td></tr><tr><td width="40%" align="left">Install PostgreSQL </td><td width="20%" align="center"><a accesskey="u" href="complete-install.html">Up</a></td><td width="40%" align="right"> Install OpenACS 5.2.3rc1</td></tr></table><hr><address><a href="mailto:docs@openacs.org">docs@openacs.org</a></address></div><a name="comments"></a><center><a href="http://openacs.org/doc/current/aolserver4.html#comments">View comments on this page at openacs.org</a></center></body></html>
+      /usr/local/aolserver as the directory of Aolserver4.</p></li><li><p><b>Change startup script (optional).�</b>If you want to run AOLserver on a port below 1024 (normally, for a webserver you will use 80), you will have to change the 	  <tt class="computeroutput">/var/lib/aolserver/<span class="replaceable"><span class="replaceable">service0</span></span>/etc/daemontools/run</tt> script according to the documentation found there (namely: Add the -b <span class="replaceable"><span class="replaceable">yourip:yourport</span></span> switch)</p></li><li><p><a href="aolserver.html#install-aolserver-permissions">Test AOLserver</a>.</p></li></ol></div><div class="cvstag">($Id$)</div></div><div class="navfooter"><hr><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="postgres.html">Prev</a> </td><td width="20%" align="center"><a accesskey="h" href="index.html">Home</a></td><td width="40%" align="right"> <a accesskey="n" href="openacs.html">Next</a></td></tr><tr><td width="40%" align="left">Install PostgreSQL </td><td width="20%" align="center"><a accesskey="u" href="complete-install.html">Up</a></td><td width="40%" align="right"> Install OpenACS 5.4.0</td></tr></table><hr><address><a href="mailto:docs@openacs.org">docs@openacs.org</a></address></div><a name="comments"></a><center><a href="http://openacs.org/doc/current/aolserver4.html#comments">View comments on this page at openacs.org</a></center></body></html>
Index: openacs-4/packages/acs-core-docs/www/apm-design.html
===================================================================
RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/apm-design.html,v
diff -u -r1.33 -r1.33.4.1
--- openacs-4/packages/acs-core-docs/www/apm-design.html	17 Jul 2006 05:38:31 -0000	1.33
+++ openacs-4/packages/acs-core-docs/www/apm-design.html	3 Feb 2008 12:07:38 -0000	1.33.4.1
@@ -1,26 +1,27 @@
-<html><head><meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"><title>Package Manager Design</title><meta name="generator" content="DocBook XSL Stylesheets V1.70.1"><link rel="home" href="index.html" title="OpenACS Core Documentation"><link rel="up" href="kernel-doc.html" title="Chapter�15.�Kernel Documentation"><link rel="previous" href="apm-requirements.html" title="Package Manager Requirements"><link rel="next" href="db-api-detailed.html" title="Database Access API"><link rel="stylesheet" href="openacs.css" type="text/css"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><a href="http://openacs.org"><img src="/doc/images/alex.jpg" border="0" alt="Alex logo"></a><table width="100%" summary="Navigation header" border="0"><tr><td width="20%" align="left"><a accesskey="p" href="apm-requirements.html">Prev</a> </td><th width="60%" align="center">Chapter�15.�Kernel Documentation</th><td width="20%" align="right"> <a accesskey="n" href="db-api-detailed.html">Next</a></td></tr></table><hr></div><div class="sect1" lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="apm-design"></a>Package Manager Design</h2></div></div></div><div class="authorblurb"><p>By Bryan Quinn</p>
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html><head><meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"><title>Package Manager Design</title><meta name="generator" content="DocBook XSL Stylesheets V1.60.1"><link rel="home" href="index.html" title="OpenACS Core Documentation"><link rel="up" href="kernel-doc.html" title="Chapter�15.�Kernel Documentation"><link rel="previous" href="apm-requirements.html" title="Package Manager Requirements"><link rel="next" href="db-api-detailed.html" title="Database Access API"><link rel="stylesheet" href="openacs.css" type="text/css"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><a href="http://openacs.org"><img src="/doc/images/alex.jpg" border="0" alt="Alex logo"></a><table width="100%" summary="Navigation header" border="0"><tr><td width="20%" align="left"><a accesskey="p" href="apm-requirements.html">Prev</a> </td><th width="60%" align="center">Chapter�15.�Kernel Documentation</th><td width="20%" align="right"> <a accesskey="n" href="db-api-detailed.html">Next</a></td></tr></table><hr></div><div class="sect1" lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="apm-design"></a>Package Manager Design</h2></div></div><div></div></div><div class="authorblurb"><p>By Bryan Quinn</p>
           OpenACS docs are written by the named authors, and may be edited
           by OpenACS documentation staff.
-        </div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="apm-design-essentials"></a>Essentials</h3></div></div></div><div class="itemizedlist"><ul type="disc"><li><p><a href="/acs-admin/apm" target="_top">OpenACS Administrator directory</a></p></li><li><p><a href="apm-requirements.html">Package Manager Requirements</a></p></li><li><p><a href="packages.html">Packages</a></p></li><li><p><a href="../images/apm.pdf" target="_top">ER diagram</a></p></li><li><p>Tcl API </p><div class="itemizedlist"><ul type="circle"><li><p><a href="/api-doc/procs-file-view?path=packages%2facs%2dtcl%2ftcl%2fapm%2dprocs%2etcl" target="_top">
+        </div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="apm-design-essentials"></a>Essentials</h3></div></div><div></div></div><div class="itemizedlist"><ul type="disc"><li><p><a href="/acs-admin/apm" target="_top">OpenACS Administrator directory</a></p></li><li><p><a href="apm-requirements.html">Package Manager Requirements</a></p></li><li><p><a href="packages.html">Packages</a></p></li><li><p><a href="../images/apm.pdf" target="_top">ER diagram</a></p></li><li><p>Tcl API </p><div class="itemizedlist"><ul type="circle"><li><p><a href="/api-doc/procs-file-view?path=packages%2facs%2dtcl%2ftcl%2fapm%2dprocs%2etcl" target="_top">
 apm-procs.tcl</a></p></li><li><p><a href="/api-doc/procs-file-view?path=packages%2facs%2dtcl%2ftcl%2fapm%2dinstall%2dprocs%2etcl" target="_top">
 apm-install-procs.tcl</a> (Supports installation of packages)</p></li><li><p><a href="/api-doc/procs-file-view?path=packages%2facs%2dtcl%2ftcl%2f20%2dapm%2dload%2dprocs%2etcl" target="_top">
 20-apm-load-procs.tcl</a> (Bootstraps APM for server startup)</p></li><li><p><a href="/api-doc/procs-file-view?path=packages%2facs%2dtcl%2ftcl%2fapm%2dadmin%2dprocs%2etcl" target="_top">
-apm-admin-procs.tcl</a> (Supports APM UI)</p></li></ul></div></li><li><p>PL/SQL file </p><div class="itemizedlist"><ul type="circle"><li><p><a href="/doc/sql/display-sql?url=apm-create.sql&amp;package_key=acs-kernel" target="_top">apm-create.sql</a></p></li></ul></div></li></ul></div></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="apm-design-intro"></a>Introduction</h3></div></div></div><p>
-In general terms, a <span class="strong"><strong>package</strong></span> is a unit of software that
+apm-admin-procs.tcl</a> (Supports APM UI)</p></li></ul></div></li><li><p>PL/SQL file </p><div class="itemizedlist"><ul type="circle"><li><p><a href="/doc/sql/display-sql?url=apm-create.sql&amp;package_key=acs-kernel" target="_top">apm-create.sql</a></p></li></ul></div></li></ul></div></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="apm-design-intro"></a>Introduction</h3></div></div><div></div></div><p>
+In general terms, a <span class="strong">package</span> is a unit of software that
 serves a single well-defined purpose. That purpose may be to provide a
 service directly to one or more classes of end-user, (e.g., discussion forums
 and file storage for community members, user profiling tools for the site
 publisher), or it may be to act as a building block for other packages (e.g.,
 an application programming interface (API) for storing and querying access
 control rules, or an API for scheduling email alerts). Thus, packages fall
 into one of two categories: 
-</p><div class="itemizedlist"><ul type="disc"><li><p><span class="strong"><strong>OpenACS Applications:</strong></span> a "program or group of programs
-designed for end users" (the <a href="http://www.pcwebopaedia.com/TERM/a/application.html" target="_top">Webopedia
+</p><div class="itemizedlist"><ul type="disc"><li><p><span class="strong">OpenACS Applications:</span> a &quot;program or group of programs
+designed for end users&quot; (the <a href="http://www.pcwebopaedia.com/TERM/a/application.html" target="_top">Webopedia
 definition</a>); also known as <span class="emphasis"><em>modules</em></span>, for historical reasons.
 Examples of applications include <a href="/doc/forums" target="_top">Forums</a> and <a href="/doc/news" target="_top">News</a>. 
 
 
-</p></li><li><p><span class="strong"><strong>OpenACS Services:</strong></span> the aforementioned building blocks.
+</p></li><li><p><span class="strong">OpenACS Services:</span> the aforementioned building blocks.
 Examples of services include the <a href="/doc/acs-content-repository" target="_top">OpenACS
 Content Repository</a>, the <a href="/doc/acs-templating" target="_top">OpenACS Templating
 System</a>, and the <a href="kernel-doc.html" title="Chapter�15.�Kernel Documentation">OpenACS Kernel</a>, which includes
@@ -42,7 +43,7 @@
 installation through APM is another potential package instance that can
 become part of Jane's View Camera subsite.</p><p>The APM provides an architecture for packaging software, making instances
 of that software available to subsites, specifying configuration parameters
-for each instance, and managing the creation and release of new packages.</p></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="apm-design-hist-considerations"></a>Historical Considerations</h3></div></div></div><p>
+for each instance, and managing the creation and release of new packages.</p></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="apm-design-hist-considerations"></a>Historical Considerations</h3></div></div><div></div></div><p>
 Prior to ACS 3.3, all packages were lumped together into one monolithic
 distribution without explicit boundaries; the only way to ascertain what
 comprised a given package was to look at the top of the corresponding
@@ -87,21 +88,21 @@
 packages for other OpenACS users to download and install.</p><p>For a simple illustration of the difference between ACS without APM
 (pre-3.3) and ACS with APM (3.3 and beyond), consider a hypothetical ACS
 installation that uses only two of the thirty-odd modules available circa ACS
-3.2 (say, bboard and e-commerce):</p><div class="mediaobject" align="center"><img src="images/acs-without-apm-vs-with-apm.png" align="middle"></div><p>APM itself is part of a package, the <span class="strong"><strong>OpenACS Kernel</strong></span>, an OpenACS
-service that is the only mandatory component of an OpenACS installation.</p></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="apm-design-competitors"></a>Competitive Analysis</h3></div></div></div><p>The OpenACS is a platform for web-based application software, and any software
+3.2 (say, bboard and e-commerce):</p><div class="mediaobject" align="center"><img src="../images/acs-without-apm-vs-with-apm.png" align="middle"></div><p>APM itself is part of a package, the <span class="strong">OpenACS Kernel</span>, an OpenACS
+service that is the only mandatory component of an OpenACS installation.</p></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="apm-design-competitors"></a>Competitive Analysis</h3></div></div><div></div></div><p>The OpenACS is a platform for web-based application software, and any software
 platform has the potential to develop problems like those described above.
 Fortunately, there are many precedents for systematic solutions,
 including:</p><div class="itemizedlist"><ul type="disc"><li><p><a href="http://www.debian.org/" target="_top">Debian GNU/Linux</a> and the <a href="http://www.debian.org/doc/packaging-manuals/packaging.html/" target="_top">Debian
 Packaging manual</a></p></li><li><p><a href="http://www.freebsd.org/" target="_top">FreeBSD</a> has <a href="http://www.freebsd.org/handbook/ports.html" target="_top">the Ports
 collection</a></p></li><li><p><a href="http://www.redhat.com/" target="_top">Red Hat Linux</a> has <a href="http://rpm.redhat.com/" target="_top">the Red Hat Package Manager (RPM)</a></p></li></ul></div><p>Borrowing from all of the above, OpenACS 3.3 introduces its own package
-management system, the OpenACS Package Manager (APM), which consists of:</p><div class="itemizedlist"><ul type="disc"><li><p><span class="strong"><strong>a standard format for APM packages</strong></span> (also called
-"OpenACS packages"), including: </p><div class="itemizedlist"><ul type="circle"><li><p>version numbering, independent of any other package and the OpenACS as a
-whole</p></li><li><p>specification of the package interface</p></li><li><p>specification of dependencies on other packages (if any)</p></li><li><p>attribution (who wrote it) and ownership (who maintains it)</p></li></ul></div></li><li><p><span class="strong"><strong>web-based tools for package management:</strong></span> </p><div class="itemizedlist"><ul type="circle"><li><p>obtaining packages from a remote distribution point</p></li><li><p>installing packages, if and only if: </p><div class="orderedlist"><ol type="1"><li><p>all prerequisite packages are installed</p></li><li><p>no conflicts will be created by the installation</p></li></ol></div></li><li><p>configuring packages (obsoleting the monolithic OpenACS configuration
-file)</p></li><li><p>upgrading packages, without clobbering local modifications</p></li><li><p>uninstalling unwanted packages</p></li></ul></div></li><li><p><span class="strong"><strong>a registry of installed packages</strong></span>, database-backed and
+management system, the OpenACS Package Manager (APM), which consists of:</p><div class="itemizedlist"><ul type="disc"><li><p><span class="strong">a standard format for APM packages</span> (also called
+&quot;OpenACS packages&quot;), including: </p><div class="itemizedlist"><ul type="circle"><li><p>version numbering, independent of any other package and the OpenACS as a
+whole</p></li><li><p>specification of the package interface</p></li><li><p>specification of dependencies on other packages (if any)</p></li><li><p>attribution (who wrote it) and ownership (who maintains it)</p></li></ul></div></li><li><p><span class="strong">web-based tools for package management:</span> </p><div class="itemizedlist"><ul type="circle"><li><p>obtaining packages from a remote distribution point</p></li><li><p>installing packages, if and only if: </p><div class="orderedlist"><ol type="1"><li><p>all prerequisite packages are installed</p></li><li><p>no conflicts will be created by the installation</p></li></ol></div></li><li><p>configuring packages (obsoleting the monolithic OpenACS configuration
+file)</p></li><li><p>upgrading packages, without clobbering local modifications</p></li><li><p>uninstalling unwanted packages</p></li></ul></div></li><li><p><span class="strong">a registry of installed packages</span>, database-backed and
 integrated with filesystem-based version control 
 
 
-</p></li><li><p><span class="strong"><strong>web-based tools for package development:</strong></span> </p><div class="itemizedlist"><ul type="circle"><li><p>creating new packages locally</p></li><li><p>releasing new versions of locally-created packages</p></li></ul></div></li></ul></div></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="apm-design-design-tradeoffs"></a>Design Tradeoffs</h3></div></div></div><p>
+</p></li><li><p><span class="strong">web-based tools for package development:</span> </p><div class="itemizedlist"><ul type="circle"><li><p>creating new packages locally</p></li><li><p>releasing new versions of locally-created packages</p></li></ul></div></li></ul></div></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="apm-design-design-tradeoffs"></a>Design Tradeoffs</h3></div></div><div></div></div><p>
 The design chosen for APM was meant to satisfy the following constraints: 
 </p><div class="itemizedlist"><ul type="disc"><li><p>The process of authoring a package must be as simple as possible.</p></li><li><p>Strict conventions must be established that provide a set of canonical
 locations and names for files and patterns, for OpenACS application
@@ -120,9 +121,9 @@
 documentation walks the developer through each of these steps. Moreover, from
 following these steps, the package can be subsite specific, available to
 subsites across the system, and be available for distribution to other OpenACS
-installations without doing a monolithic upgrade or reinstall.</p></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="apm-design-api"></a>API</h3></div></div></div><p>The APM is composed of systems for accomplishing a set of package-related
+installations without doing a monolithic upgrade or reinstall.</p></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="apm-design-api"></a>API</h3></div></div><div></div></div><p>The APM is composed of systems for accomplishing a set of package-related
 tasks. Each of these tasks comprise a feature area that has an API, data
-model, and a UI:</p><div class="itemizedlist"><ul type="disc"><li><p>Authoring a Package</p></li><li><p>Maintaining Multiple Versions of a Package</p></li><li><p>Creating Instances of the Package</p></li><li><p>Specifying Configuration Parameters for each Instance</p></li></ul></div><p><span class="strong"><strong>Authoring a Package</strong></span></p><p>Full instructions on how to prepare an OpenACS package are available in <a href="packages.html">Packages</a>. The API here can be invoked manually by a package's data model
+model, and a UI:</p><div class="itemizedlist"><ul type="disc"><li><p>Authoring a Package</p></li><li><p>Maintaining Multiple Versions of a Package</p></li><li><p>Creating Instances of the Package</p></li><li><p>Specifying Configuration Parameters for each Instance</p></li></ul></div><p><span class="strong">Authoring a Package</span></p><p>Full instructions on how to prepare an OpenACS package are available in <a href="packages.html">Packages</a>. The API here can be invoked manually by a package's data model
 creation script, but need not to be used. This API is part of the <a href="/api-doc/plsql-subprogram-one?type=PACKAGE&amp;name=APM" target="_top">APM PL/SQL
 package</a>.</p><pre class="programlisting">
 
@@ -143,9 +144,9 @@
 </pre><p>The procedure above registers an OpenACS application in the APM. It creates a
 new OpenACS object and stores information about the package, such as its name, in
 the APM data model. There is an analogous procedure for OpenACS services, called
-<code class="computeroutput">apm.register_service</code>.</p><p>To remove an application from the system, there are the calls
-<code class="computeroutput">apm.unregister_application</code> and
-<code class="computeroutput">apm.unregister_service</code>.</p><pre class="programlisting">
+<tt class="computeroutput">apm.register_service</tt>.</p><p>To remove an application from the system, there are the calls
+<tt class="computeroutput">apm.unregister_application</tt> and
+<tt class="computeroutput">apm.unregister_service</tt>.</p><pre class="programlisting">
 
 -- Remove the application from the system.  
 procedure unregister_application (
@@ -154,22 +155,22 @@
     cascade_p       in char default 'f'  
 );
 
-</pre><p>Use the <code class="computeroutput">cascade_p</code> only if you want to completely remove the
+</pre><p>Use the <tt class="computeroutput">cascade_p</tt> only if you want to completely remove the
 package from the OpenACS.</p><p>In order to determine if a particular package exists in the system, use
-the <code class="computeroutput">register_p</code> predicate. It returns 1 if the specified
-<code class="computeroutput">package_key</code> exists in the system, 0 otherwise.</p><pre class="programlisting">
+the <tt class="computeroutput">register_p</tt> predicate. It returns 1 if the specified
+<tt class="computeroutput">package_key</tt> exists in the system, 0 otherwise.</p><pre class="programlisting">
 
 function register_p (
     package_key     in apm_package_types.package_key%TYPE
 ) return integer;
 
-</pre><p><span class="strong"><strong>Maintaining Multiple Versions of a Package</strong></span></p><p>While the package authoring API provides a means for registering a
+</pre><p><span class="strong">Maintaining Multiple Versions of a Package</span></p><p>While the package authoring API provides a means for registering a
 package, some information about a package is version dependent. For example,
 between versions, the owner of a package, its vendor, its URI, and its
 dependency information may change. The API for package versions allows this
 information to be specified. All of these APIs are part of the <a href="/api-doc/plsql-subprogram-one?type=PACKAGE&amp;name=APM%5fPACKAGE%5fVERSION" target="_top">
-<code class="computeroutput">apm_package_version</code> PL/SQL package</a>.</p><p>To create a new package version, use the
-<code class="computeroutput">apm_package_version.new</code> constructor function.</p><pre class="programlisting">
+<tt class="computeroutput">apm_package_version</tt> PL/SQL package</a>.</p><p>To create a new package version, use the
+<tt class="computeroutput">apm_package_version.new</tt> constructor function.</p><pre class="programlisting">
 
 function new (
     version_id          in apm_package_versions.version_id%TYPE
@@ -190,26 +191,26 @@
                         default 'f'
 ) return apm_package_versions.version_id%TYPE;
 
-</pre><p>In order to use this function, an existing <code class="computeroutput">package_key</code> must
-be specified. The <code class="computeroutput">version_name</code> parameter must follow a strict
+</pre><p>In order to use this function, an existing <tt class="computeroutput">package_key</tt> must
+be specified. The <tt class="computeroutput">version_name</tt> parameter must follow a strict
 convention:</p><div class="orderedlist"><ol type="1"><li><p>A major version number</p></li><li><p>at least one minor version number. Although any number of minor version
 numbers may be included, three minor version numbers is sufficient and is the
-convention of software developers.</p></li><li><p>One of the following: </p><div class="itemizedlist"><ul type="disc"><li><p>The letter <code class="computeroutput">d</code>, indicating a development-only version</p></li><li><p>The letter <code class="computeroutput">a</code>, indicating an alpha release</p></li><li><p>The letter <code class="computeroutput">b</code>, indicating a beta release</p></li><li><p>No letter at all, indicating a final production release</p></li></ul></div></li></ol></div><p>In addition, the letters <code class="computeroutput">d</code>, <code class="computeroutput">a</code>, and
-<code class="computeroutput">b</code> may be followed by another integer, indicating a version
+convention of software developers.</p></li><li><p>One of the following: </p><div class="itemizedlist"><ul type="disc"><li><p>The letter <tt class="computeroutput">d</tt>, indicating a development-only version</p></li><li><p>The letter <tt class="computeroutput">a</tt>, indicating an alpha release</p></li><li><p>The letter <tt class="computeroutput">b</tt>, indicating a beta release</p></li><li><p>No letter at all, indicating a final production release</p></li></ul></div></li></ol></div><p>In addition, the letters <tt class="computeroutput">d</tt>, <tt class="computeroutput">a</tt>, and
+<tt class="computeroutput">b</tt> may be followed by another integer, indicating a version
 within the release.</p><p>For those who like regular expressions:</p><pre class="programlisting">
 
 version_number := ^[0-9]+((\.[0-9]+)+((d|a|b|)[0-9]?)?)$
 
-</pre><p>So the following is a valid progression for version numbers:</p><div class="blockquote"><blockquote class="blockquote"><p><code class="computeroutput">0.9d, 0.9d1, 0.9a1, 0.9b1, 0.9b2, 0.9, 1.0, 1.0.1, 1.1b1,
-1.1</code></p></blockquote></div><p>To delete a given version of a package, use the
-<code class="computeroutput">apm_package_version.delete</code> procedure:</p><pre class="programlisting">
+</pre><p>So the following is a valid progression for version numbers:</p><div class="blockquote"><blockquote class="blockquote"><p><tt class="computeroutput">0.9d, 0.9d1, 0.9a1, 0.9b1, 0.9b2, 0.9, 1.0, 1.0.1, 1.1b1,
+1.1</tt></p></blockquote></div><p>To delete a given version of a package, use the
+<tt class="computeroutput">apm_package_version.delete</tt> procedure:</p><pre class="programlisting">
 
 procedure delete (
     package_id      in apm_packages.package_id%TYPE  
 );
 
 </pre><p>After creating a version, it is possible to edit the information
-associated with it using <code class="computeroutput">apm_package_version.edit</code>.</p><pre class="programlisting">
+associated with it using <tt class="computeroutput">apm_package_version.edit</tt>.</p><pre class="programlisting">
 
 function edit (
       new_version_id        in apm_package_versions.version_id%TYPE
@@ -243,8 +244,8 @@
 );
 
 </pre><p>Files associated with a version can be added and removed. The path is
-relative to the <span class="strong"><strong>package-root</strong></span> which is
-<code class="computeroutput">acs-server-root/packages/package-key</code>.</p><pre class="programlisting">
+relative to the <span class="strong">package-root</span> which is
+<tt class="computeroutput">acs-server-root/packages/package-key</tt>.</p><pre class="programlisting">
 -- Add a file to the indicated version. 
 function add_file(
     file_id             in apm_package_files.file_id%TYPE 
@@ -325,7 +326,7 @@
     version_name_two        in apm_package_versions.version_name%TYPE
 ) return integer;
 
-</pre><p><span class="strong"><strong>Creating Instances of a Package</strong></span></p><p>Once a package is registered in the system, it is possible to create
+</pre><p><span class="strong">Creating Instances of a Package</span></p><p>Once a package is registered in the system, it is possible to create
 instances of it. Each instance can maintain its own content and
 parameters.</p><pre class="programlisting">
 
@@ -380,8 +381,8 @@
 show errors
 
 
-</pre><p><span class="strong"><strong>Specifying Configuration Parameters for each Instance</strong></span></p><p>A parameter is a setting that can be changed on a package instance basis.
-Parameters are registered on each <code class="computeroutput">package_key</code>, and the values
+</pre><p><span class="strong">Specifying Configuration Parameters for each Instance</span></p><p>A parameter is a setting that can be changed on a package instance basis.
+Parameters are registered on each <tt class="computeroutput">package_key</tt>, and the values
 are associated with each instance. Parameters can have default values and can
 be of type 'string' or 'number.' There is support with this
 API for setting a number of minimum and maximum values for each parameter,
@@ -462,65 +463,65 @@
     attr_value          in apm_parameter_values.attr_value%TYPE
 );  
 
-</pre></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="apm-design-data-model"></a>Data Model Discussion</h3></div></div></div><p>The central piece of the data model is the <code class="computeroutput">apm_package_types</code>
+</pre></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="apm-design-data-model"></a>Data Model Discussion</h3></div></div><div></div></div><p>The central piece of the data model is the <tt class="computeroutput">apm_package_types</tt>
 table where each package is registered. When a new application or service is
 installed on an OpenACS instance, a corresponding row in this table is inserted
 with information about the type of package, e.g. if the <a href="/doc/forum" target="_top">forum package</a> is installed on your OpenACS server, a row
-in <code class="computeroutput">apm_package_types</code> will be created, noting that it's an
-application package type.</p><p>The <code class="computeroutput">apm_packages</code> table is used to contain information about
+in <tt class="computeroutput">apm_package_types</tt> will be created, noting that it's an
+application package type.</p><p>The <tt class="computeroutput">apm_packages</tt> table is used to contain information about
 the <span class="emphasis"><em>instances</em></span> of packages currently created in the system. The
-<code class="computeroutput">package_key</code> column references the <code class="computeroutput">apm_package_types</code>
+<tt class="computeroutput">package_key</tt> column references the <tt class="computeroutput">apm_package_types</tt>
 table to ensure that no package instance can be created for a type that does
-not exist.</p><p>The <code class="computeroutput">apm_package_versions</code> table contains information specific
+not exist.</p><p>The <tt class="computeroutput">apm_package_versions</tt> table contains information specific
 to a particular version of a package. Several tables reference this one to
-provide further information about the particular version:</p><div class="itemizedlist"><ul type="disc"><li><p><code class="computeroutput">apm_package_owners</code>
+provide further information about the particular version:</p><div class="itemizedlist"><ul type="disc"><li><p><tt class="computeroutput">apm_package_owners</tt>
  Stores information about the owners of a particular version of a package.
 
 
-</p></li><li><p><code class="computeroutput">apm_package_files</code>
+</p></li><li><p><tt class="computeroutput">apm_package_files</tt>
  Stores information about the files that are part of a version.
 
 
-</p></li><li><p><code class="computeroutput">apm_package_dependencies</code>
+</p></li><li><p><tt class="computeroutput">apm_package_dependencies</tt>
  Stores information about what interfaces the package provides and
-requires.</p></li></ul></div><p>Parameter information is maintained through two tables:</p><div class="itemizedlist"><ul type="disc"><li><p><code class="computeroutput">apm_parameters</code>
+requires.</p></li></ul></div><p>Parameter information is maintained through two tables:</p><div class="itemizedlist"><ul type="disc"><li><p><tt class="computeroutput">apm_parameters</tt>
  This table contains the definition of each of the parameters for a package.
 
 
-</p></li><li><p><code class="computeroutput">apm_parameter_values</code>
+</p></li><li><p><tt class="computeroutput">apm_parameter_values</tt>
  This table holds all of the values of parameters for specific package
 instances.
 
 
 </p></li></ul></div><p>A number of views are available for obtaining information about packages
-registered in the APM.</p><div class="itemizedlist"><ul type="disc"><li><p><code class="computeroutput">apm_package_version_info</code>
+registered in the APM.</p><div class="itemizedlist"><ul type="disc"><li><p><tt class="computeroutput">apm_package_version_info</tt>
  Provides information about all of the versions in the system with
-information available from the <code class="computeroutput">apm_package_types</code> table.
+information available from the <tt class="computeroutput">apm_package_types</tt> table.
 
 
-</p></li><li><p><code class="computeroutput">apm_enabled_package_versions</code>
+</p></li><li><p><tt class="computeroutput">apm_enabled_package_versions</tt>
  A view (subset) of the above table with only enabled versions.
 
 
-</p></li><li><p><code class="computeroutput">apm_file_info</code>
- Provides a public interface for querying file information.</p></li></ul></div></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="apm-design-ui"></a>User Interface</h3></div></div></div><p>The <a href="/acs-admin/apm" target="_top">APM's user interface</a> is part of the
+</p></li><li><p><tt class="computeroutput">apm_file_info</tt>
+ Provides a public interface for querying file information.</p></li></ul></div></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="apm-design-ui"></a>User Interface</h3></div></div><div></div></div><p>The <a href="/acs-admin/apm" target="_top">APM's user interface</a> is part of the
 <a href="/acs-admin" target="_top">OpenACS Administration Service</a>. The UI is the primary
 point of contact with APM by developers and administrators. It is part of OpenACS
 Administration, because only the site-wide administrator should be able to
 access it. Thus in order to develop a package, the developer must be granted
-site-wide administration.</p></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="apm-design-config"></a>Configuration/Parameters</h3></div></div></div><p>APM has two parameters for configuring how it interacts with the UNIX
+site-wide administration.</p></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="apm-design-config"></a>Configuration/Parameters</h3></div></div><div></div></div><p>APM has two parameters for configuring how it interacts with the UNIX
 filesystem, accessible via the <a href="/admin/site-map/" target="_top">Site Map admin</a>
 page. These parameters need not be changed under most circumstances, but may
-need to be tweaked for Windows compatibility.</p><div class="itemizedlist"><ul type="disc"><li><p><span class="strong"><strong>GzipExecutableDirectory</strong></span>
- This directory points to where the <code class="computeroutput">gunzip</code> program can be found
-for uncompressing <code class="computeroutput">gzip</code> archives. This is needed for the
-installation of <code class="computeroutput">.apm</code> files which are simply <code class="computeroutput">gzip</code>ed
-tarballs. Default is <code class="computeroutput">/usr/local/bin</code> 
+need to be tweaked for Windows compatibility.</p><div class="itemizedlist"><ul type="disc"><li><p><span class="strong">GzipExecutableDirectory</span>
+ This directory points to where the <tt class="computeroutput">gunzip</tt> program can be found
+for uncompressing <tt class="computeroutput">gzip</tt> archives. This is needed for the
+installation of <tt class="computeroutput">.apm</tt> files which are simply <tt class="computeroutput">gzip</tt>ed
+tarballs. Default is <tt class="computeroutput">/usr/local/bin</tt> 
 
 
-</p></li><li><p><span class="strong"><strong>InfoFilePermissionsMode</strong></span>
+</p></li><li><p><span class="strong">InfoFilePermissionsMode</span>
  This sets the default UNIX permissions used when creating files using the
-APM. Default is 775.</p></li></ul></div></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="apm-design-future"></a>Future Improvements/Areas of Likely Change</h3></div></div></div><p>APM has been in production since OpenACS 3.3, and as of version 4.0 offers a
+APM. Default is 775.</p></li></ul></div></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="apm-design-future"></a>Future Improvements/Areas of Likely Change</h3></div></div><div></div></div><p>APM has been in production since OpenACS 3.3, and as of version 4.0 offers a
 stable set of features. One major feature planned is integration with the OpenACS
 Package Repository for automatic dependency satisfaction. When a user tries
 to install a package that depends on other packages, the APM will contact the
@@ -538,6 +539,6 @@
 repositories worldwide.</p><p>Another anticipated change is to split the APM UI into separate systems
 for authoring, maintaining, and installing packages. The current UI presents
 all of this functionality in one interface and it can be confusing from a
-usability perspective.</p></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="apm-design-authors"></a>Authors</h3></div></div></div><div class="itemizedlist"><ul type="disc"><li><p>System creator: Bryan Quinn, Jon Salz, Michael Yoon, Lars Pind, Todd
+usability perspective.</p></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="apm-design-authors"></a>Authors</h3></div></div><div></div></div><div class="itemizedlist"><ul type="disc"><li><p>System creator: Bryan Quinn, Jon Salz, Michael Yoon, Lars Pind, Todd
 Nightingale.</p></li><li><p>System owner: Bryan Quinn</p></li><li><p>Documentation author: Bryan Quinn, building from earlier versions by Jon
-Salz, Michael Yoon, and Lars Pind.</p></li></ul></div></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="apm-design-rev-history"></a>Revision History</h3></div></div></div><div class="informaltable"><table cellspacing="0" border="1"><colgroup><col><col><col><col></colgroup><tbody><tr><td><span class="strong"><strong>Document Revision #</strong></span></td><td><span class="strong"><strong>Action Taken, Notes</strong></span></td><td><span class="strong"><strong>When?</strong></span></td><td><span class="strong"><strong>By Whom?</strong></span></td></tr><tr><td>0.1</td><td>Creation</td><td>9/25/2000</td><td>Bryan Quinn</td></tr><tr><td>0.8</td><td>Ready for QA</td><td>9/29/2000</td><td>Bryan Quinn</td></tr><tr><td>0.9</td><td>Edited for ACS 4 Beta release</td><td>10/02/2000</td><td>Kai Wu</td></tr><tr><td>1.0</td><td>Edited for OpenACS 4.5 Beta release</td><td>03/02/2002</td><td>Roberto Mello</td></tr></tbody></table></div></div></div><div class="navfooter"><hr><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="apm-requirements.html">Prev</a> </td><td width="20%" align="center"><a accesskey="h" href="index.html">Home</a></td><td width="40%" align="right"> <a accesskey="n" href="db-api-detailed.html">Next</a></td></tr><tr><td width="40%" align="left">Package Manager Requirements </td><td width="20%" align="center"><a accesskey="u" href="kernel-doc.html">Up</a></td><td width="40%" align="right"> Database Access API</td></tr></table><hr><address><a href="mailto:docs@openacs.org">docs@openacs.org</a></address></div><a name="comments"></a><center><a href="http://openacs.org/doc/current/apm-design.html#comments">View comments on this page at openacs.org</a></center></body></html>
+Salz, Michael Yoon, and Lars Pind.</p></li></ul></div></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="apm-design-rev-history"></a>Revision History</h3></div></div><div></div></div><div class="informaltable"><table cellspacing="0" border="1"><colgroup><col><col><col><col></colgroup><tbody><tr><td><span class="strong">Document Revision #</span></td><td><span class="strong">Action Taken, Notes</span></td><td><span class="strong">When?</span></td><td><span class="strong">By Whom?</span></td></tr><tr><td>0.1</td><td>Creation</td><td>9/25/2000</td><td>Bryan Quinn</td></tr><tr><td>0.8</td><td>Ready for QA</td><td>9/29/2000</td><td>Bryan Quinn</td></tr><tr><td>0.9</td><td>Edited for ACS 4 Beta release</td><td>10/02/2000</td><td>Kai Wu</td></tr><tr><td>1.0</td><td>Edited for OpenACS 4.5 Beta release</td><td>03/02/2002</td><td>Roberto Mello</td></tr></tbody></table></div></div></div><div class="navfooter"><hr><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="apm-requirements.html">Prev</a> </td><td width="20%" align="center"><a accesskey="h" href="index.html">Home</a></td><td width="40%" align="right"> <a accesskey="n" href="db-api-detailed.html">Next</a></td></tr><tr><td width="40%" align="left">Package Manager Requirements </td><td width="20%" align="center"><a accesskey="u" href="kernel-doc.html">Up</a></td><td width="40%" align="right"> Database Access API</td></tr></table><hr><address><a href="mailto:docs@openacs.org">docs@openacs.org</a></address></div><a name="comments"></a><center><a href="http://openacs.org/doc/current/apm-design.html#comments">View comments on this page at openacs.org</a></center></body></html>
Index: openacs-4/packages/acs-core-docs/www/apm-requirements.html
===================================================================
RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/apm-requirements.html,v
diff -u -r1.28 -r1.28.4.1
--- openacs-4/packages/acs-core-docs/www/apm-requirements.html	17 Jul 2006 05:38:31 -0000	1.28
+++ openacs-4/packages/acs-core-docs/www/apm-requirements.html	3 Feb 2008 12:07:38 -0000	1.28.4.1
@@ -1,17 +1,18 @@
-<html><head><meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"><title>Package Manager Requirements</title><meta name="generator" content="DocBook XSL Stylesheets V1.70.1"><link rel="home" href="index.html" title="OpenACS Core Documentation"><link rel="up" href="kernel-doc.html" title="Chapter�15.�Kernel Documentation"><link rel="previous" href="subsites-design.html" title="Subsites Design Document"><link rel="next" href="apm-design.html" title="Package Manager Design"><link rel="stylesheet" href="openacs.css" type="text/css"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><a href="http://openacs.org"><img src="/doc/images/alex.jpg" border="0" alt="Alex logo"></a><table width="100%" summary="Navigation header" border="0"><tr><td width="20%" align="left"><a accesskey="p" href="subsites-design.html">Prev</a> </td><th width="60%" align="center">Chapter�15.�Kernel Documentation</th><td width="20%" align="right"> <a accesskey="n" href="apm-design.html">Next</a></td></tr></table><hr></div><div class="sect1" lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="apm-requirements"></a>Package Manager Requirements</h2></div></div></div><div class="authorblurb"><p>By Bryan Quinn and Todd Nightingale</p>
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html><head><meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"><title>Package Manager Requirements</title><meta name="generator" content="DocBook XSL Stylesheets V1.60.1"><link rel="home" href="index.html" title="OpenACS Core Documentation"><link rel="up" href="kernel-doc.html" title="Chapter�15.�Kernel Documentation"><link rel="previous" href="subsites-design.html" title="Subsites Design Document"><link rel="next" href="apm-design.html" title="Package Manager Design"><link rel="stylesheet" href="openacs.css" type="text/css"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><a href="http://openacs.org"><img src="/doc/images/alex.jpg" border="0" alt="Alex logo"></a><table width="100%" summary="Navigation header" border="0"><tr><td width="20%" align="left"><a accesskey="p" href="subsites-design.html">Prev</a> </td><th width="60%" align="center">Chapter�15.�Kernel Documentation</th><td width="20%" align="right"> <a accesskey="n" href="apm-design.html">Next</a></td></tr></table><hr></div><div class="sect1" lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="apm-requirements"></a>Package Manager Requirements</h2></div></div><div></div></div><div class="authorblurb"><p>By Bryan Quinn and Todd Nightingale</p>
           OpenACS docs are written by the named authors, and may be edited
           by OpenACS documentation staff.
-        </div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="apm-requirements-intro"></a>Introduction</h3></div></div></div><p>The following is a requirements document for the OpenACS Package Manager
+        </div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="apm-requirements-intro"></a>Introduction</h3></div></div><div></div></div><p>The following is a requirements document for the OpenACS Package Manager
 (APM), version 4.0 (APM4). APM4 offers a superset of APM v3.3 functionality
 with the following specific enhancements:</p><div class="itemizedlist"><ul type="disc"><li><p>A public procedural API. (v 3.3 only has web-based UI)</p></li><li><p>Support for dependency checking.</p></li><li><p>Support for compound packages (to support installation chaining).</p></li><li><p>Support for on-line parameter setting.</p></li><li><p>Support for sub-site level configuration (requires revised ad_parameter
 and /admin pages at sub-site level; deprecation of site-wide parameter
 file).</p></li></ul></div><p>To differentiate these new requirements from the requirements of version
 3.3, all requirements new in v4 are prefaced with the number
-<span class="strong"><strong>4</strong></span>.</p><p>We gratefully acknowledge the authors of APM 3 for their original design
+<span class="strong">4</span>.</p><p>We gratefully acknowledge the authors of APM 3 for their original design
 documentation which suggested these features, as well as the influence of the
 design and open-source implementation of the Red Hat Package manager, the
 Debian packaging system, and PERL's CPAN in the development of the ideas
-behind this document.</p></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="apm-requirements-vision"></a>Vision Statement</h3></div></div></div><p>A typical website will tend to offer its users a number of web-based
+behind this document.</p></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="apm-requirements-vision"></a>Vision Statement</h3></div></div><div></div></div><p>A typical website will tend to offer its users a number of web-based
 services or applications, e.g. a bulletin board, calendaring, classified ads,
 etc. A website may also have underlying subsystems, such as a permissions
 system, content management system, etc. For such applications and subsystem
@@ -25,38 +26,38 @@
 OpenACS sites.</p><p>In general terms, a package is a unit of software that serves a single
 well-defined purpose. The OpenACS Package Manager (APM) provides a mechanism for
 packaging, installing, and configuring OpenACS software in a consistent,
-user-friendly, and subsite-aware manner.</p></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="apm-requirements-system-overview"></a>System Overview</h3></div></div></div><p>
+user-friendly, and subsite-aware manner.</p></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="apm-requirements-system-overview"></a>System Overview</h3></div></div><div></div></div><p>
 The OpenACS Package Manager (APM) consists of: 
-</p><div class="itemizedlist"><ul type="disc"><li><p><span class="strong"><strong>A standard format for APM packages</strong></span> including: </p><div class="itemizedlist"><ul type="circle"><li><p>Version numbering, independent of any other package and the OpenACS as a
-whole</p></li><li><p>Specification of the package interface</p></li><li><p>Specification of dependencies on other packages (if any)</p></li><li><p>Attribution (who wrote it) and ownership (who maintains it)</p></li></ul></div></li><li><p><span class="strong"><strong>Web-based tools for package management:</strong></span> </p><div class="itemizedlist"><ul type="circle"><li><p>Obtaining packages from a remote distribution point</p></li><li><p>Installing packages, if and only if: </p><div class="orderedlist"><ol type="1"><li><p>All prerequisite packages are installed</p></li><li><p>No conflicts will be created by the installation</p></li></ol></div></li><li><p>Configuring packages (obsoleting the monolithic OpenACS configuration
-file)</p></li><li><p>Upgrading packages, without clobbering local modifications</p></li><li><p>Uninstalling unwanted packages</p></li></ul></div></li><li><p><span class="strong"><strong>A registry of installed packages</strong></span>, database-backed and
+</p><div class="itemizedlist"><ul type="disc"><li><p><span class="strong">A standard format for APM packages</span> including: </p><div class="itemizedlist"><ul type="circle"><li><p>Version numbering, independent of any other package and the OpenACS as a
+whole</p></li><li><p>Specification of the package interface</p></li><li><p>Specification of dependencies on other packages (if any)</p></li><li><p>Attribution (who wrote it) and ownership (who maintains it)</p></li></ul></div></li><li><p><span class="strong">Web-based tools for package management:</span> </p><div class="itemizedlist"><ul type="circle"><li><p>Obtaining packages from a remote distribution point</p></li><li><p>Installing packages, if and only if: </p><div class="orderedlist"><ol type="1"><li><p>All prerequisite packages are installed</p></li><li><p>No conflicts will be created by the installation</p></li></ol></div></li><li><p>Configuring packages (obsoleting the monolithic OpenACS configuration
+file)</p></li><li><p>Upgrading packages, without clobbering local modifications</p></li><li><p>Uninstalling unwanted packages</p></li></ul></div></li><li><p><span class="strong">A registry of installed packages</span>, database-backed and
 integrated with file system-based version control 
 
 
-</p></li><li><p><span class="strong"><strong>Web-based tools for package development:</strong></span> </p><div class="itemizedlist"><ul type="circle"><li><p>Creating new packages locally</p></li><li><p>Releasing new versions of locally-created packages</p></li><li><p>Uploading packages to a global package repository on the web</p></li><li><p>Use of these tools should be safe, i.e. installing or removing a package
-should never break an OpenACS installation</p></li></ul></div></li><li><p><span class="strong"><strong>Web-based tools for package configuration:</strong></span> </p><div class="itemizedlist"><ul type="circle"><li><p>The ability to change package parameter values on-line through a simple
+</p></li><li><p><span class="strong">Web-based tools for package development:</span> </p><div class="itemizedlist"><ul type="circle"><li><p>Creating new packages locally</p></li><li><p>Releasing new versions of locally-created packages</p></li><li><p>Uploading packages to a global package repository on the web</p></li><li><p>Use of these tools should be safe, i.e. installing or removing a package
+should never break an OpenACS installation</p></li></ul></div></li><li><p><span class="strong">Web-based tools for package configuration:</span> </p><div class="itemizedlist"><ul type="circle"><li><p>The ability to change package parameter values on-line through a simple
 web interface.</p></li><li><p>A new ad_parameter which does not require a monolithic site-wide
 parameter's file or server restarts for changes to take effect.</p></li><li><p>The ability to manage multiple package instances at the sub-site
-level.</p></li></ul></div></li></ul></div></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="apm-requirements-use-cases"></a>Use-cases and User-scenarios</h3></div></div></div><p>
+level.</p></li></ul></div></li></ul></div></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="apm-requirements-use-cases"></a>Use-cases and User-scenarios</h3></div></div><div></div></div><p>
 The APM is intended for the following classes of users, which may or may not
-overlap: </p><div class="orderedlist"><ol type="1"><li><p><span class="strong"><strong>Developers</strong></span> (referred to as 'the developer') use
+overlap: </p><div class="orderedlist"><ol type="1"><li><p><span class="strong">Developers</span> (referred to as 'the developer') use
 the APM to create a software package for distribution and use the procedural
-API for direct control of the APM system.</p></li><li><p><span class="strong"><strong>Site-wide administrators</strong></span> (referred to as 'the
+API for direct control of the APM system.</p></li><li><p><span class="strong">Site-wide administrators</span> (referred to as 'the
 administrator') use the APM to install packages for their OpenACS instance,
-and optionally make them available to sub-sites.</p></li><li><p><span class="strong"><strong>Sub-site administrators</strong></span> (referred to as 'the
+and optionally make them available to sub-sites.</p></li><li><p><span class="strong">Sub-site administrators</span> (referred to as 'the
 sub-admin') use an administration interface to configure and enable
-packages for their sub-site.</p></li></ol></div><p><span class="strong"><strong>Initial Package Development</strong></span></p><p><span class="strong"><strong>David Developer</strong></span> writes a piece of software used to do
+packages for their sub-site.</p></li></ol></div><p><span class="strong">Initial Package Development</span></p><p><span class="strong">David Developer</span> writes a piece of software used to do
 knowledge management (km) for the OpenACS. He distributes his data model,
 procedure code, UI pages, and his documentation according to the APM
 specification. He splits the documentation and the code into sub-packages,
 and creates a KM installation-chain to install both with the APM developer
-UI. Noting that his software was built with <span class="strong"><strong>Patricia
-Programmer</strong></span>'s Super Widget toolkit, he specifies that as a
+UI. Noting that his software was built with <span class="strong">Patricia
+Programmer</span>'s Super Widget toolkit, he specifies that as a
 dependency. Moreover, since this package is capable of being used at the
 sub-site level, David configures this option in the package. When the package
 development is complete, David uses the APM developer UI to construct a
 distribution file. He assigns it a version number, 1.0, and makes the package
-available for download at the OpenACS package repository.</p><p><span class="strong"><strong>Initial Package Installation</strong></span></p><p><span class="strong"><strong>Annie Admin</strong></span> learns of David's KM system by browsing
+available for download at the OpenACS package repository.</p><p><span class="strong">Initial Package Installation</span></p><p><span class="strong">Annie Admin</span> learns of David's KM system by browsing
 the OpenACS package repository. Annie Admin uses the APM administrator UI
 on her system. She selects to install a package from a URL and types the URL
 displayed on the system. The APM automatically downloads the package. The
@@ -70,16 +71,16 @@
 installation was successful, the package is available for use.</p><p>Since the package is available for use, its initialization routines are
 set to run automatically on server startup. Annie is warned that since there
 are initialization routines, she must restart the server for the package to
-be ready for use. Annie restarts the server.</p><p><span class="strong"><strong>Initial Subsite Use of Package</strong></span></p><p>Annie Admin decides to make the KM module available only to a particular
+be ready for use. Annie restarts the server.</p><p><span class="strong">Initial Subsite Use of Package</span></p><p>Annie Admin decides to make the KM module available only to a particular
 sub-site type on her OpenACS system, and not others. She specifies this option
-using the Sub-site type UI (not part of APM).</p><p>Annie Admin notifies <span class="strong"><strong>Sally SubAdmin</strong></span> by e-mail that a new
+using the Sub-site type UI (not part of APM).</p><p>Annie Admin notifies <span class="strong">Sally SubAdmin</span> by e-mail that a new
 package is now available for use. Sally goes to her sub-site /admin page and
 sees that a new entry, KM, is available. Sally clicks on it and finds links
 to the installed KM documentation and to the web based configuration utility.
 Then, Sally configures the package using an automatically generated web
 interface and enables KM for use on her sub-site. After some initial use of
 the package, Sally decides to change some parameters using the SubAdmin UI.
-These changes take effect immediately, without any server restarts.</p><p><span class="strong"><strong>Upgrade Process</strong></span></p><p>Sally SubAdmin finds a bug in the KM system and sends a report to David
+These changes take effect immediately, without any server restarts.</p><p><span class="strong">Upgrade Process</span></p><p>Sally SubAdmin finds a bug in the KM system and sends a report to David
 Developer. David reads the bug report and verifies that the bugs are present
 in the current version. Because the bugs are present in the shared procedure
 file, David assigns a watch to the file. David makes the necessary
@@ -90,199 +91,199 @@
 repository.</p><p>Sally SubAdmin asks Annie Administrator to upgrade the package using the
 APM UI. This upgrade supersedes the old version of KM at the site-wide level.
 Once Annie upgrades the package, the new version starts working immediately
-in Sally's sub-site.</p><p><span class="strong"><strong>Procedural API</strong></span></p><p><span class="strong"><strong>Danielle Developer</strong></span> wants her software to perform
+in Sally's sub-site.</p><p><span class="strong">Procedural API</span></p><p><span class="strong">Danielle Developer</span> wants her software to perform
 different actions depending on what version of another package is installed.
 She uses the APM procedural API to check if KM version 1.0 is installed or
 version 1.1. Based on the results of this procedural call, the software
-exhibits different behavior.</p></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="apm-requirements-links"></a>Related Links</h3></div></div></div><div class="itemizedlist"><ul type="disc"><li><p><a href="/doc/core-arch-guide/apm" target="_top">APM 3.3 Design document</a></p></li><li><p><a href="/doc/packaging" target="_top">Five minute guide to packaging a module</a></p></li><li><p><a href="/doc/core-arch-guide/subcommunities" target="_top">Sub-communities</a></p></li></ul></div></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="apm-requirements-data-model"></a>Requirements: Data Model</h3></div></div></div><div class="itemizedlist"><ul type="disc"><li><p><span class="strong"><strong>4.500.0 Package Identification</strong></span>
-(All of these items are entered by the developer using the developer UI.) </p><p><span class="strong"><strong>4.500.1</strong></span> A human readable package key that is guaranteed
+exhibits different behavior.</p></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="apm-requirements-links"></a>Related Links</h3></div></div><div></div></div><div class="itemizedlist"><ul type="disc"><li><p><a href="/doc/core-arch-guide/apm" target="_top">APM 3.3 Design document</a></p></li><li><p><a href="/doc/packaging" target="_top">Five minute guide to packaging a module</a></p></li><li><p><a href="/doc/core-arch-guide/subcommunities" target="_top">Sub-communities</a></p></li></ul></div></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="apm-requirements-data-model"></a>Requirements: Data Model</h3></div></div><div></div></div><div class="itemizedlist"><ul type="disc"><li><p><span class="strong">4.500.0 Package Identification</span>
+(All of these items are entered by the developer using the developer UI.) </p><p><span class="strong">4.500.1</span> A human readable package key that is guaranteed
 to be unique to the local OpenACS site must be maintained by the APM. For
-example, "apm."</p><p><span class="strong"><strong>4.500.5</strong></span> A package id (primary key) that is guaranteed to
+example, &quot;apm.&quot;</p><p><span class="strong">4.500.5</span> A package id (primary key) that is guaranteed to
 be unique to the local site must be maintained by the APM. For example,
-"25."</p><p><span class="strong"><strong>4.500.10</strong></span> A package URL that is guaranteed to be unique
+&quot;25.&quot;</p><p><span class="strong">4.500.10</span> A package URL that is guaranteed to be unique
 across all sites must be maintained by the APM. The package URL should point
 to a server that allows download of the latest version of the package. For
-example, "http://openacs.org/software."
-</p></li><li><p><span class="strong"><strong>4.505.0 Version Identification</strong></span>
- (All of these items are entered by the developer using the developer UI.) </p><p><span class="strong"><strong>4.505.1</strong></span> A version id (primary key) that is guaranteed to
-be unique to the local site must be maintained by the APM.</p><p><span class="strong"><strong>4.505.5</strong></span> A version URL that is guaranteed to be unique
+example, &quot;http://openacs.org/software.&quot;
+</p></li><li><p><span class="strong">4.505.0 Version Identification</span>
+ (All of these items are entered by the developer using the developer UI.) </p><p><span class="strong">4.505.1</span> A version id (primary key) that is guaranteed to
+be unique to the local site must be maintained by the APM.</p><p><span class="strong">4.505.5</span> A version URL that is guaranteed to be unique
 across all sites must be maintained by the APM. The version URL should point
 to a server that allows download of a specific version of the package.
-</p></li></ul></div></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="apm-requirements-api"></a>Requirements: API</h3></div></div></div><p>The API for APM v3 is explicitly a private API. However, it would be
+</p></li></ul></div></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="apm-requirements-api"></a>Requirements: API</h3></div></div><div></div></div><p>The API for APM v3 is explicitly a private API. However, it would be
 useful to obtain information from the APM through a procedural API.
 Implementing the API specified below is quite easy given that there are pages
-that already do all of the below in raw SQL.</p><div class="itemizedlist"><ul type="disc"><li><p><span class="strong"><strong>4.400.0 Packages Status Predicates</strong></span> </p><p><span class="strong"><strong>4.400.1</strong></span> Given defining information such as a package URL,
+that already do all of the below in raw SQL.</p><div class="itemizedlist"><ul type="disc"><li><p><span class="strong">4.400.0 Packages Status Predicates</span> </p><p><span class="strong">4.400.1</span> Given defining information such as a package URL,
 the APM API can return the status of the package on the local OpenACS
-instance.</p></li><li><p><span class="strong"><strong>4.405.0 Package Information Procedures</strong></span> </p><p><span class="strong"><strong>4.405.1</strong></span> The APM API can return information for any
+instance.</p></li><li><p><span class="strong">4.405.0 Package Information Procedures</span> </p><p><span class="strong">4.405.1</span> The APM API can return information for any
 locally installed packages, including the version number, paths and files,
-and package key.</p></li><li><p><span class="strong"><strong>4.410.0 Sub-site Procedures</strong></span> </p><p><span class="strong"><strong>4.410.1</strong></span> After a package has been installed at the
+and package key.</p></li><li><p><span class="strong">4.410.0 Sub-site Procedures</span> </p><p><span class="strong">4.410.1</span> After a package has been installed at the
 site-wide level, the system API will provide means to check for package
-presence, creation, enabling, disabling, and destruction on a subsite.</p></li><li><p><span class="strong"><strong>4.415.0 Parameter Values (replaces ad_parameter)</strong></span> </p><p><span class="strong"><strong>4.415.1</strong></span> The system API shall allow subsite parameters for
+presence, creation, enabling, disabling, and destruction on a subsite.</p></li><li><p><span class="strong">4.415.0 Parameter Values (replaces ad_parameter)</span> </p><p><span class="strong">4.415.1</span> The system API shall allow subsite parameters for
 an installed package to be set by either site-wide administrators or sub-site
 admins. The subsite parameter can be set to be non-persistent (but default is
 to survive server restarts). The subsite parameter can also be set to only
-take effect after a server restart (default is immediate).</p><p><span class="strong"><strong>4.415.5</strong></span> Parameters for a given subsite and package can be
-returned by the system API.</p></li></ul></div></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="apm-requirements-security"></a>Requirements: Security</h3></div></div></div><p>
+take effect after a server restart (default is immediate).</p><p><span class="strong">4.415.5</span> Parameters for a given subsite and package can be
+returned by the system API.</p></li></ul></div></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="apm-requirements-security"></a>Requirements: Security</h3></div></div><div></div></div><p>
 Provisions will be made to assure that packages are securely
-identified.</p><div class="itemizedlist"><ul type="disc"><li><p><span class="strong"><strong>4.600.1</strong></span> Each package will have a PGP signature and there
+identified.</p><div class="itemizedlist"><ul type="disc"><li><p><span class="strong">4.600.1</span> Each package will have a PGP signature and there
 will be MD5 time stamps for each file within the package. 
 
 
-</p></li><li><p><span class="strong"><strong>4.600.5</strong></span> The APM will provide a facility to validate both
-the PGP signature and MD5 stamps information before a package install.</p></li></ul></div></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="apm-requirements-ui"></a>Requirements: The User Interface</h3></div></div></div><p>The user interface is a set of HTML pages that are used to drive the
+</p></li><li><p><span class="strong">4.600.5</span> The APM will provide a facility to validate both
+the PGP signature and MD5 stamps information before a package install.</p></li></ul></div></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="apm-requirements-ui"></a>Requirements: The User Interface</h3></div></div><div></div></div><p>The user interface is a set of HTML pages that are used to drive the
 underlying API. It is restricted to site-wide administrators because the
-actions taken here can dramatically affect the state of the running OpenACS.</p></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="apm-requirements-dev-interface"></a>Requirements: The Developer's Interface</h3></div></div></div><p>The intent of the developer's interface is to enable the developer to
+actions taken here can dramatically affect the state of the running OpenACS.</p></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="apm-requirements-dev-interface"></a>Requirements: The Developer's Interface</h3></div></div><div></div></div><p>The intent of the developer's interface is to enable the developer to
 construct and maintain APM packages. It will be possible to disable the
 developer's interface for production sites to help reduce the chance of
 site failure; much of the functionality here can have cascading effects
-throughout the OpenACS and should not be used on a production site.</p><div class="itemizedlist"><ul type="disc"><li><p><span class="strong"><strong>10.0 Define a package.</strong></span></p><p>The developer must be able to create a new package by specifying some
+throughout the OpenACS and should not be used on a production site.</p><div class="itemizedlist"><ul type="disc"><li><p><span class="strong">10.0 Define a package.</span></p><p>The developer must be able to create a new package by specifying some
 identifying information for the package. This includes a package name, a
-package key, version information, owner information, and a canonical URL.</p><p><span class="strong"><strong>10.1</strong></span> The APM must maintain the state of all locally
-generated packages.</p><p><span class="strong"><strong>10.50</strong></span> If the developer fails to provide the required
-information, the package cannot be created.</p><p><span class="strong"><strong>10.55</strong></span> All of the package information should be editable
-after creation, except for the package key.</p><p><span class="strong"><strong>4.10.60</strong></span> The package creator must specify whether the
+package key, version information, owner information, and a canonical URL.</p><p><span class="strong">10.1</span> The APM must maintain the state of all locally
+generated packages.</p><p><span class="strong">10.50</span> If the developer fails to provide the required
+information, the package cannot be created.</p><p><span class="strong">10.55</span> All of the package information should be editable
+after creation, except for the package key.</p><p><span class="strong">4.10.60</span> The package creator must specify whether the
 package is capable of being used in sub-sites, or if only a single, global
-instance of the package is permitted.</p><p><span class="strong"><strong>4.10.65</strong></span> If the developer fails to provide unique
+instance of the package is permitted.</p><p><span class="strong">4.10.65</span> If the developer fails to provide unique
 information for unique fields specified in the data model requirements, the
-package cannot be created.</p></li><li><p><span class="strong"><strong>20.0 Add files to a package</strong></span> </p><p><span class="strong"><strong>20.1</strong></span> The developer must be able to add files to the
+package cannot be created.</p></li><li><p><span class="strong">20.0 Add files to a package</span> </p><p><span class="strong">20.1</span> The developer must be able to add files to the
 package. This is done by copying the files into the package directory in the
 host OS's file system. Files can be added at any point after package
-creation.</p><p><span class="strong"><strong>20.3</strong></span> Once a package has been versioned and distributed,
+creation.</p><p><span class="strong">20.3</span> Once a package has been versioned and distributed,
 no new files should be added to the package without incrementing the version
-number.</p><p><span class="strong"><strong>20.5</strong></span> The APM's UI should facilitate the process of
+number.</p><p><span class="strong">20.5</span> The APM's UI should facilitate the process of
 adding new files, by scanning the file system for new files automatically,
-and allowing the developer to confirm adding them.</p><p><span class="strong"><strong>20.10</strong></span> The developer cannot add files to a given package
-via the UI that do not exist in the file system already.</p><p><span class="strong"><strong>20.15</strong></span> Package file structure must follow a specified
+and allowing the developer to confirm adding them.</p><p><span class="strong">20.10</span> The developer cannot add files to a given package
+via the UI that do not exist in the file system already.</p><p><span class="strong">20.15</span> Package file structure must follow a specified
 convention. Please see the <a href="apm-design.html" title="Package Manager Design">design
-document</a> for what we do currently.</p></li><li><p><span class="strong"><strong>30.0 Remove files from a package</strong></span></p><p>The developer must be able to remove files from a package. This can be
-done in two ways.</p><div class="itemizedlist"><ul type="circle"><li><p><span class="strong"><strong>30.1</strong></span> Access the APM UI, browse the file list, and remove
-files.</p><p><span class="strong"><strong>30.1.1</strong></span>If a file is removed from the package list, but not
-from the file system, an error should be generated at package load time.</p></li><li><p><span class="strong"><strong>30.5</strong></span> Remove the file from file system. </p><p><span class="strong"><strong>30.5.1</strong></span> The APM UI should take note of the fact that the
+document</a> for what we do currently.</p></li><li><p><span class="strong">30.0 Remove files from a package</span></p><p>The developer must be able to remove files from a package. This can be
+done in two ways.</p><div class="itemizedlist"><ul type="circle"><li><p><span class="strong">30.1</span> Access the APM UI, browse the file list, and remove
+files.</p><p><span class="strong">30.1.1</span>If a file is removed from the package list, but not
+from the file system, an error should be generated at package load time.</p></li><li><p><span class="strong">30.5</span> Remove the file from file system. </p><p><span class="strong">30.5.1</span> The APM UI should take note of the fact that the
 file is gone and offer the developer an option to confirm the file's
 deletion.
-</p></li></ul></div></li><li><p><span class="strong"><strong>40.0 Modify files in a package</strong></span>. </p><p><span class="strong"><strong>40.1</strong></span> The developer should be able to modify files in the
-file system. The APM UI should not interfere with this.</p><p><span class="strong"><strong>40.5</strong></span> However, if the developer modifies files containing
-procedural definitions, APM UI should allow a means to <span class="strong"><strong>watch</strong></span>
+</p></li></ul></div></li><li><p><span class="strong">40.0 Modify files in a package</span>. </p><p><span class="strong">40.1</span> The developer should be able to modify files in the
+file system. The APM UI should not interfere with this.</p><p><span class="strong">40.5</span> However, if the developer modifies files containing
+procedural definitions, APM UI should allow a means to <span class="strong">watch</span>
 those files and automatically reload them if changed. See requirement 50.0
-for more detail.</p><p><span class="strong"><strong>40.10</strong></span> Also, although a change in files implies that the
+for more detail.</p><p><span class="strong">40.10</span> Also, although a change in files implies that the
 package distribution file is out of date, it is the developer's
-responsibility to update it.</p></li><li><p><span class="strong"><strong>4.45.0 Manage Package Dependency Information</strong></span>. </p><p><span class="strong"><strong>4.45.1</strong></span> The developer should be able to specify which
-interfaces the package requires.</p><p><span class="strong"><strong>4.45.5</strong></span> The developer should be able to specify which
-interfaces the package provides.</p><p><span class="strong"><strong>4.45.10</strong></span> Circular dependencies are not allowed.</p></li><li><p><span class="strong"><strong>50.0 Watch a file</strong></span> </p><p><span class="strong"><strong>4.50.1</strong></span> The developer should be able to assign a watch to
-any Tcl procedure file, whether in /packages or /tcl.</p><p><span class="strong"><strong>50.5</strong></span> If a watched file is locally modified, then it will
+responsibility to update it.</p></li><li><p><span class="strong">4.45.0 Manage Package Dependency Information</span>. </p><p><span class="strong">4.45.1</span> The developer should be able to specify which
+interfaces the package requires.</p><p><span class="strong">4.45.5</span> The developer should be able to specify which
+interfaces the package provides.</p><p><span class="strong">4.45.10</span> Circular dependencies are not allowed.</p></li><li><p><span class="strong">50.0 Watch a file</span> </p><p><span class="strong">4.50.1</span> The developer should be able to assign a watch to
+any Tcl procedure file, whether in /packages or /tcl.</p><p><span class="strong">50.5</span> If a watched file is locally modified, then it will
 be automatically reloaded, thus allowing for any changes made to take affect
-immediately.</p><p><span class="strong"><strong>4.50.10</strong></span> The setting of a watch should be persistent
+immediately.</p><p><span class="strong">4.50.10</span> The setting of a watch should be persistent
 across server restarts.
 
 
-</p></li><li><p><span class="strong"><strong>60.0 Display an XML package specification</strong></span> </p><p><span class="strong"><strong>60.1</strong></span> The developer should be able to view the XML package
+</p></li><li><p><span class="strong">60.0 Display an XML package specification</span> </p><p><span class="strong">60.1</span> The developer should be able to view the XML package
 specification that encodes all package information.
-</p></li><li><p><span class="strong"><strong>70.0 Write an XML package specification to the file
-system</strong></span> </p><p><span class="strong"><strong>70.1</strong></span> The developer should be able to write an up-to-date
-XML specification to disk.</p><p><span class="strong"><strong>70.5</strong></span> The developer should be able to request the current
-XML specification for all installed, locally generated packages.</p></li><li><p><span class="strong"><strong>130.0 Distribution file generation</strong></span> </p><p><span class="strong"><strong>130.1</strong></span> The developer should be able to generate a .APM
-distribution file for the package with just one click.</p><p><span class="strong"><strong>130.5</strong></span> Generating a distribution file implies doing an
-"up-to-date" check on all of the files. If any of the files have
+</p></li><li><p><span class="strong">70.0 Write an XML package specification to the file
+system</span> </p><p><span class="strong">70.1</span> The developer should be able to write an up-to-date
+XML specification to disk.</p><p><span class="strong">70.5</span> The developer should be able to request the current
+XML specification for all installed, locally generated packages.</p></li><li><p><span class="strong">130.0 Distribution file generation</span> </p><p><span class="strong">130.1</span> The developer should be able to generate a .APM
+distribution file for the package with just one click.</p><p><span class="strong">130.5</span> Generating a distribution file implies doing an
+&quot;up-to-date&quot; check on all of the files. If any of the files have
 changed since package installation, then a new version of the package is
 created.
 
 
-</p></li><li><p><span class="strong"><strong>140.0 Access CVS information</strong></span> </p><p><span class="strong"><strong>140.1</strong></span> The developer should be able to determine the CVS
+</p></li><li><p><span class="strong">140.0 Access CVS information</span> </p><p><span class="strong">140.1</span> The developer should be able to determine the CVS
 status of a package, or all packages, with a single click.
-</p></li><li><p><span class="strong"><strong>4.400.0 Compound Package Construction</strong></span> </p><p><span class="strong"><strong>4.400.1</strong></span> The developer can include .APM packages
+</p></li><li><p><span class="strong">4.400.0 Compound Package Construction</span> </p><p><span class="strong">4.400.1</span> The developer can include .APM packages
 (sub-packages) within a package (the compound package) like any other
-file.</p><p><span class="strong"><strong>4.400.5</strong></span> The recommended usage for this feature is to
+file.</p><p><span class="strong">4.400.5</span> The recommended usage for this feature is to
 allow for separation of optional and required components from the
 installation as well as better organization of files once installed. For
 example, all documentation for the community-core can be packages as
-<code class="computeroutput">community-core-doc.apm</code>. It is legal to include sub-packages with
+<tt class="computeroutput">community-core-doc.apm</tt>. It is legal to include sub-packages with
 dependencies that are not satisfied by the packages in the compound package,
 but this is discouraged. In such a case, the sub-package should really be a
-separate package that is required by the compound package.</p><p><span class="strong"><strong>4.400.10</strong></span> If a sub-package is required for the
+separate package that is required by the compound package.</p><p><span class="strong">4.400.10</span> If a sub-package is required for the
 installation of the compound package, the compound package should have a
-registered dependency on the sub-package.</p></li></ul></div></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="apm-requirements-admin-interface"></a>Requirements: The Site-Wide Administrator's Interface</h3></div></div></div><p>The requirement of the administrator's interface is to enable the
+registered dependency on the sub-package.</p></li></ul></div></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="apm-requirements-admin-interface"></a>Requirements: The Site-Wide Administrator's Interface</h3></div></div><div></div></div><p>The requirement of the administrator's interface is to enable the
 administrator to install, enable, upgrade, disable, deinstall, and delete
-packages.</p><div class="itemizedlist"><ul type="disc"><li><p><span class="strong"><strong>80.0 Package Enable/Disable</strong></span> </p><p><span class="strong"><strong>4.80.1</strong></span> The administrator should be able mark an installed
+packages.</p><div class="itemizedlist"><ul type="disc"><li><p><span class="strong">80.0 Package Enable/Disable</span> </p><p><span class="strong">4.80.1</span> The administrator should be able mark an installed
 package as enabled. This means that the package is activated and its
 functionality is delivered through the Request Processor. As of OpenACS 4, this
-is done through the sub-site system.</p><p><span class="strong"><strong>4.80.5</strong></span> Moreover, the administrator must be able to
+is done through the sub-site system.</p><p><span class="strong">4.80.5</span> Moreover, the administrator must be able to
 disable a package, thereby removing the functionality provided to a sub-site.
 As of OpenACS 4, this is done through the sub-site system.
-</p></li><li><p><span class="strong"><strong>90.0 Package Install</strong></span> </p><p><span class="strong"><strong>90.1</strong></span> The administrator must be able to install new
-packages either from locally maintained .APM files or from URLs.</p><p><span class="strong"><strong>90.5</strong></span> In the case of an URL, the APM transparently
+</p></li><li><p><span class="strong">90.0 Package Install</span> </p><p><span class="strong">90.1</span> The administrator must be able to install new
+packages either from locally maintained .APM files or from URLs.</p><p><span class="strong">90.5</span> In the case of an URL, the APM transparently
 downloads the APM file off the web, proceeds with a file based installation,
-and then optionally removes the .APM file just downloaded.</p><p><span class="strong"><strong>90.10.1</strong></span> If .APM files are present in a package, then it
-is considered a compound package (use 4.410.0).</p><p><span class="strong"><strong>90.15.0</strong></span> Installation requires these steps:</p><div class="orderedlist"><ol type="1"><li><p><span class="strong"><strong>90.15.1</strong></span>The package dependencies are scanned. If some
+and then optionally removes the .APM file just downloaded.</p><p><span class="strong">90.10.1</span> If .APM files are present in a package, then it
+is considered a compound package (use 4.410.0).</p><p><span class="strong">90.15.0</span> Installation requires these steps:</p><div class="orderedlist"><ol type="1"><li><p><span class="strong">90.15.1</span>The package dependencies are scanned. If some
 dependencies are not present, the system warns the administrator that
-installation cannot proceed until those packages are installed.</p></li><li><p><span class="strong"><strong>90.15.2</strong></span> Assuming all dependencies are present, APM
-extracts the contents of the APM file into the /packages directory.</p></li><li><p><span class="strong"><strong>90.15.3</strong></span> The administrator is offered the option of
-importing directly into CVS.</p></li><li><p><span class="strong"><strong>90.15.4</strong></span> The administrator is given a list of data model
-scripts found in the package and can select which ones to be executed.</p></li><li><p><span class="strong"><strong>90.15.5</strong></span> If no errors are recorded during this process,
-the package is enabled.</p></li></ol></div></li><li><p><span class="strong"><strong>4.410.0 Compound package Install</strong></span> </p><p><span class="strong"><strong>4.410.1</strong></span> If .APM files are present in a package, then it
-is considered a compound package.</p><p><span class="strong"><strong>4.410.5.0</strong></span> Installation of a compound package proceeds
-according to the following sequence:</p><div class="orderedlist"><ol type="1"><li><p><span class="strong"><strong>4.410.5.1</strong></span> Identify the set of all sub-packages within
-the compound package by scanning for all files with .APM.</p></li><li><p><span class="strong"><strong>4.410.5.2</strong></span> Identify which sub-packages are required by
+installation cannot proceed until those packages are installed.</p></li><li><p><span class="strong">90.15.2</span> Assuming all dependencies are present, APM
+extracts the contents of the APM file into the /packages directory.</p></li><li><p><span class="strong">90.15.3</span> The administrator is offered the option of
+importing directly into CVS.</p></li><li><p><span class="strong">90.15.4</span> The administrator is given a list of data model
+scripts found in the package and can select which ones to be executed.</p></li><li><p><span class="strong">90.15.5</span> If no errors are recorded during this process,
+the package is enabled.</p></li></ol></div></li><li><p><span class="strong">4.410.0 Compound package Install</span> </p><p><span class="strong">4.410.1</span> If .APM files are present in a package, then it
+is considered a compound package.</p><p><span class="strong">4.410.5.0</span> Installation of a compound package proceeds
+according to the following sequence:</p><div class="orderedlist"><ol type="1"><li><p><span class="strong">4.410.5.1</span> Identify the set of all sub-packages within
+the compound package by scanning for all files with .APM.</p></li><li><p><span class="strong">4.410.5.2</span> Identify which sub-packages are required by
 checking the dependencies of the compound package. If there dependencies not
 satisfied by the current system or the packages included with the compound
 package, halt installation and inform user to install these packages
-first.</p></li><li><p><span class="strong"><strong>4.410.5.3</strong></span> Present Administrator with the ability to
+first.</p></li><li><p><span class="strong">4.410.5.3</span> Present Administrator with the ability to
 choose which sub-packages to install. Required sub-packages must be
-installed.</p></li><li><p><span class="strong"><strong>4.410.5.4</strong></span> Proceed with the installation of each
+installed.</p></li><li><p><span class="strong">4.410.5.4</span> Proceed with the installation of each
 sub-package, starting with required packages. If the sub-package is already
 installed, then do nothing. Else, If the sub-package is a normal package,
-proceed according to <span class="strong"><strong>90.15.0</strong></span>, otherwise if it is a compound
-package, proceed according to <span class="strong"><strong>4.410.5.0</strong></span>.</p></li><li><p><span class="strong"><strong>4.410.5.5</strong></span> If all required sub-packages are installed,
+proceed according to <span class="strong">90.15.0</span>, otherwise if it is a compound
+package, proceed according to <span class="strong">4.410.5.0</span>.</p></li><li><p><span class="strong">4.410.5.5</span> If all required sub-packages are installed,
 proceed to install non-required sub-packages. If there was a failure during
 the installation of a required sub-package, then the installation of the
-compound package is also a failure.</p></li><li><p><span class="strong"><strong>4.410.5.6</strong></span> Any attempt to install a compound package in
+compound package is also a failure.</p></li><li><p><span class="strong">4.410.5.6</span> Any attempt to install a compound package in
 the future involves a choice presented to the admin of installing any
-uninstalled sub-packages.</p></li></ol></div></li><li><p><span class="strong"><strong>4.420.0 Recovering from failed package installation</strong></span></p><p><span class="strong"><strong>4.420.1</strong></span> If any error is generated during package
+uninstalled sub-packages.</p></li></ol></div></li><li><p><span class="strong">4.420.0 Recovering from failed package installation</span></p><p><span class="strong">4.420.1</span> If any error is generated during package
 installation, the package is not considered installed. To recover from this
-failure, the package should be selected for installation again.</p></li><li><p><span class="strong"><strong>100.0 Version Upgrade</strong></span> </p><p><span class="strong"><strong>100.1</strong></span> The administrator can upgrade to a new version of a
-package. This entails</p><div class="orderedlist"><ol type="1"><li><p><span class="strong"><strong>100.1.1</strong></span> Running any necessary and included upgrade
-scripts.</p></li><li><p><span class="strong"><strong>100.1.5</strong></span> Replacing any old files with new versions.</p></li><li><p><span class="strong"><strong>100.1.10</strong></span> Marking the old version of the package as
-'superseded' and disabling it.</p></li><li><p><span class="strong"><strong>100.1.15</strong></span> Assuming no errors from above, the new package
-is enabled.</p></li></ol></div></li><li><p><span class="strong"><strong>110.0 Package Deinstall</strong></span> </p><p><span class="strong"><strong>110.1</strong></span> The administrator must be able to deinstall a
-package that has already been installed. Deinstallation entails:</p><div class="orderedlist"><ol type="1"><li><p><span class="strong"><strong>110.1.1</strong></span> Running any data model scripts necessary to drop
-the package.</p></li><li><p><span class="strong"><strong>110.1.5</strong></span> Moving all of the files into a separate location
-in the file system from the installed packages.</p></li><li><p><span class="strong"><strong>4.110.1.10</strong></span> If the package is a compound package, then
+failure, the package should be selected for installation again.</p></li><li><p><span class="strong">100.0 Version Upgrade</span> </p><p><span class="strong">100.1</span> The administrator can upgrade to a new version of a
+package. This entails</p><div class="orderedlist"><ol type="1"><li><p><span class="strong">100.1.1</span> Running any necessary and included upgrade
+scripts.</p></li><li><p><span class="strong">100.1.5</span> Replacing any old files with new versions.</p></li><li><p><span class="strong">100.1.10</span> Marking the old version of the package as
+'superseded' and disabling it.</p></li><li><p><span class="strong">100.1.15</span> Assuming no errors from above, the new package
+is enabled.</p></li></ol></div></li><li><p><span class="strong">110.0 Package Deinstall</span> </p><p><span class="strong">110.1</span> The administrator must be able to deinstall a
+package that has already been installed. Deinstallation entails:</p><div class="orderedlist"><ol type="1"><li><p><span class="strong">110.1.1</span> Running any data model scripts necessary to drop
+the package.</p></li><li><p><span class="strong">110.1.5</span> Moving all of the files into a separate location
+in the file system from the installed packages.</p></li><li><p><span class="strong">4.110.1.10</span> If the package is a compound package, then
 the administrator must confirm removing all sub-packages. Optionally, some
-sub-packages can be kept.</p></li></ol></div><p><span class="strong"><strong>110.5</strong></span> Deinstalled packages can be re-installed at a later
-date.</p><p><span class="strong"><strong>4.110.10</strong></span> If deinstalling a package or any of its
+sub-packages can be kept.</p></li></ol></div><p><span class="strong">110.5</span> Deinstalled packages can be re-installed at a later
+date.</p><p><span class="strong">4.110.10</span> If deinstalling a package or any of its
 sub-packages breaks a dependency, then deinstallation cannot proceed until
-the package registering the dependency is removed.</p></li><li><p><span class="strong"><strong>120.0 Package Deletion</strong></span> </p><p><span class="strong"><strong>120.1</strong></span> The administrator should be able to completely
+the package registering the dependency is removed.</p></li><li><p><span class="strong">120.0 Package Deletion</span> </p><p><span class="strong">120.1</span> The administrator should be able to completely
 erase all records of the package. This involves removing all instances of the
-package, all related database tables and content.</p><p><span class="strong"><strong>120.5</strong></span> This option can only be used if all package
+package, all related database tables and content.</p><p><span class="strong">120.5</span> This option can only be used if all package
 instances are deleted or marked as disabled. This is purposefully cumbersome
 because deleting all instances of a package can have far-sweeping
-consequences throughout a site and should almost never be done.</p></li><li><p><span class="strong"><strong>150.0 Scan for new or modified packages</strong></span> </p><p><span class="strong"><strong>150.1</strong></span> The administrator should be able to scan the file
-system for any changes made in any of the installed package files.</p><p><span class="strong"><strong>150.5</strong></span> The administrator should be able to scan the file
+consequences throughout a site and should almost never be done.</p></li><li><p><span class="strong">150.0 Scan for new or modified packages</span> </p><p><span class="strong">150.1</span> The administrator should be able to scan the file
+system for any changes made in any of the installed package files.</p><p><span class="strong">150.5</span> The administrator should be able to scan the file
 system for any newly installed packages.
-</p></li></ul></div></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="apm-requirements-sub-admin-intf"></a>Requirements: The Sub-Site Administrator's Interface</h3></div></div></div><p>
+</p></li></ul></div></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="apm-requirements-sub-admin-intf"></a>Requirements: The Sub-Site Administrator's Interface</h3></div></div><div></div></div><p>
 If the developer is in charge of creating packages and the administrator for
 installing them, then the sub-site administrator is responsible for
 configuring and enabling packages. In order for a package to be available for
 a sub-site it must be associated with the sub-site's type specification.
 This interface is part of the sub-site /admin interface. 
-</p><div class="itemizedlist"><ul type="disc"><li><p><span class="strong"><strong>4.300</strong></span> Creating a package instance. </p><p><span class="strong"><strong>4.300.1</strong></span> From the sub-site /admin interface, there should
+</p><div class="itemizedlist"><ul type="disc"><li><p><span class="strong">4.300</span> Creating a package instance. </p><p><span class="strong">4.300.1</span> From the sub-site /admin interface, there should
 be an option to view all packages available in the system as well as an
-option to add a package to the subsite.</p><p><span class="strong"><strong>4.300.5</strong></span> From the "add" option, the sub-admin
+option to add a package to the subsite.</p><p><span class="strong">4.300.5</span> From the &quot;add&quot; option, the sub-admin
 can select from a list of packages registered as available in the sub-site
-type to which the sub-site belongs.</p><p><span class="strong"><strong>4.300.19</strong></span> Once a package instance is added, it is
-available on the list of the subsite's available packages.</p></li><li><p><span class="strong"><strong>4.305</strong></span> Configuring a package instance. </p><p><span class="strong"><strong>4.305.1</strong></span> An automatic web interface that lists all
-parameters with current values must be available.</p><p><span class="strong"><strong>4.305.5</strong></span> Changing the values for the parameters is
-accomplished simply by submitting an HTML form.</p></li><li><p><span class="strong"><strong>4.310</strong></span> Enabling a package instance. </p><p><span class="strong"><strong>4.310.1</strong></span> The sub-admin should be able to enable a package
+type to which the sub-site belongs.</p><p><span class="strong">4.300.19</span> Once a package instance is added, it is
+available on the list of the subsite's available packages.</p></li><li><p><span class="strong">4.305</span> Configuring a package instance. </p><p><span class="strong">4.305.1</span> An automatic web interface that lists all
+parameters with current values must be available.</p><p><span class="strong">4.305.5</span> Changing the values for the parameters is
+accomplished simply by submitting an HTML form.</p></li><li><p><span class="strong">4.310</span> Enabling a package instance. </p><p><span class="strong">4.310.1</span> The sub-admin should be able to enable a package
 with a single click. Enabling a package means that the OpenACS will serve its
 URLs properly.
 
 
-</p></li><li><p><span class="strong"><strong>4.315</strong></span> Disabling a package instance. </p><p><span class="strong"><strong>4.315.1</strong></span> The sub-admin should be able to disable a package
+</p></li><li><p><span class="strong">4.315</span> Disabling a package instance. </p><p><span class="strong">4.315.1</span> The sub-admin should be able to disable a package
 with a single click. Disabling a package means that the OpenACS will no longer
-serve those URLs.</p></li><li><p><span class="strong"><strong>4.320</strong></span> Deleting a package instance. </p><p><span class="strong"><strong>4.320.1</strong></span> Deleting a package instance involves deleting not
+serve those URLs.</p></li><li><p><span class="strong">4.320</span> Deleting a package instance. </p><p><span class="strong">4.320.1</span> Deleting a package instance involves deleting not
 only the package instance, but any and all content associated with it. It is
 questionable whether this option should even be available due to its drastic
 consequences. Reviewer comments appreciated.
-</p></li></ul></div></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="apm-requirements-implementation"></a>Implementation notes</h3></div></div></div><p>Despite the fact that requirements are meant to be design/implementation
+</p></li></ul></div></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="apm-requirements-implementation"></a>Implementation notes</h3></div></div><div></div></div><p>Despite the fact that requirements are meant to be design/implementation
 neutral, the following thoughts were in our head when specifying these
 requirements. You must be familiar with the new object design for this to be
 comprehensible.</p><p>When a package is installed system-wide, a corresponding acs_object_type
@@ -291,4 +292,4 @@
 are set using the acs_attribute_values table. The automatic web interface for
 setting package parameters should be one and the same with the interface for
 setting acs object attribute values. Consequently, the implementation of
-these features should be quite straightforward.</p></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="apm-requirements-rev-history"></a>Revision History</h3></div></div></div><div class="informaltable"><table cellspacing="0" border="1"><colgroup><col><col><col><col></colgroup><tbody><tr><td><span class="strong"><strong>Document Revision #</strong></span></td><td><span class="strong"><strong>Action Taken, Notes</strong></span></td><td><span class="strong"><strong>When?</strong></span></td><td><span class="strong"><strong>By Whom?</strong></span></td></tr><tr><td>0.1</td><td>Creation</td><td>8/10/2000</td><td>Bryan Quinn, Todd Nightingale</td></tr><tr><td> </td><td>Reviewed</td><td>8/11/2000</td><td>John Prevost, Mark Thomas, and Pete Su</td></tr><tr><td>0.2</td><td>Revised and updated</td><td>8/12/2000</td><td>Bryan Quinn</td></tr><tr><td>0.3</td><td>Reviewed, revised, and updated - conforms to requirements template.</td><td>8/18/2000</td><td>Kai Wu</td></tr><tr><td>0.4</td><td>Minor edits before ACS 4 Beta.</td><td>9/30/2000</td><td>Kai Wu</td></tr></tbody></table></div></div></div><div class="navfooter"><hr><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="subsites-design.html">Prev</a> </td><td width="20%" align="center"><a accesskey="h" href="index.html">Home</a></td><td width="40%" align="right"> <a accesskey="n" href="apm-design.html">Next</a></td></tr><tr><td width="40%" align="left">Subsites Design Document </td><td width="20%" align="center"><a accesskey="u" href="kernel-doc.html">Up</a></td><td width="40%" align="right"> Package Manager Design</td></tr></table><hr><address><a href="mailto:docs@openacs.org">docs@openacs.org</a></address></div><a name="comments"></a><center><a href="http://openacs.org/doc/current/apm-requirements.html#comments">View comments on this page at openacs.org</a></center></body></html>
+these features should be quite straightforward.</p></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="apm-requirements-rev-history"></a>Revision History</h3></div></div><div></div></div><div class="informaltable"><table cellspacing="0" border="1"><colgroup><col><col><col><col></colgroup><tbody><tr><td><span class="strong">Document Revision #</span></td><td><span class="strong">Action Taken, Notes</span></td><td><span class="strong">When?</span></td><td><span class="strong">By Whom?</span></td></tr><tr><td>0.1</td><td>Creation</td><td>8/10/2000</td><td>Bryan Quinn, Todd Nightingale</td></tr><tr><td>�</td><td>Reviewed</td><td>8/11/2000</td><td>John Prevost, Mark Thomas, and Pete Su</td></tr><tr><td>0.2</td><td>Revised and updated</td><td>8/12/2000</td><td>Bryan Quinn</td></tr><tr><td>0.3</td><td>Reviewed, revised, and updated - conforms to requirements template.</td><td>8/18/2000</td><td>Kai Wu</td></tr><tr><td>0.4</td><td>Minor edits before ACS 4 Beta.</td><td>9/30/2000</td><td>Kai Wu</td></tr></tbody></table></div></div></div><div class="navfooter"><hr><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="subsites-design.html">Prev</a> </td><td width="20%" align="center"><a accesskey="h" href="index.html">Home</a></td><td width="40%" align="right"> <a accesskey="n" href="apm-design.html">Next</a></td></tr><tr><td width="40%" align="left">Subsites Design Document </td><td width="20%" align="center"><a accesskey="u" href="kernel-doc.html">Up</a></td><td width="40%" align="right"> Package Manager Design</td></tr></table><hr><address><a href="mailto:docs@openacs.org">docs@openacs.org</a></address></div><a name="comments"></a><center><a href="http://openacs.org/doc/current/apm-requirements.html#comments">View comments on this page at openacs.org</a></center></body></html>
Index: openacs-4/packages/acs-core-docs/www/automated-backup.html
===================================================================
RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/automated-backup.html,v
diff -u -r1.8 -r1.8.4.1
--- openacs-4/packages/acs-core-docs/www/automated-backup.html	17 Jul 2006 05:38:31 -0000	1.8
+++ openacs-4/packages/acs-core-docs/www/automated-backup.html	3 Feb 2008 12:07:38 -0000	1.8.4.1
@@ -1,3 +1,4 @@
-<html><head><meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"><title>Automated Backup</title><meta name="generator" content="DocBook XSL Stylesheets V1.70.1"><link rel="home" href="index.html" title="OpenACS Core Documentation"><link rel="up" href="backup-recovery.html" title="Chapter�8.�Backup and Recovery"><link rel="previous" href="snapshot-backup.html" title="Manual backup and recovery"><link rel="next" href="backups-with-cvs.html" title="Using CVS for backup-recovery"><link rel="stylesheet" href="openacs.css" type="text/css"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><a href="http://openacs.org"><img src="/doc/images/alex.jpg" border="0" alt="Alex logo"></a><table width="100%" summary="Navigation header" border="0"><tr><td width="20%" align="left"><a accesskey="p" href="snapshot-backup.html">Prev</a> </td><th width="60%" align="center">Chapter�8.�Backup and Recovery</th><td width="20%" align="right"> <a accesskey="n" href="backups-with-cvs.html">Next</a></td></tr></table><hr></div><div class="sect1" lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="automated-backup"></a>Automated Backup</h2></div></div></div><p>The recommended backup strategy for a production sit is to use an automated script which first backs up the database to a file in <code class="filename">/var/lib/aolserver/<span class="replaceable"><span class="replaceable">$OPENACS_SERVICE_NAME</span></span>/database-backup</code> and then backs up all of <code class="filename">/var/lib/aolserver/<span class="replaceable"><span class="replaceable">$OPENACS_SERVICE_NAME</span></span></code> to a single zip file, and then copies that zip file to another computer.</p><div class="orderedlist"><ol type="1"><li><p>Make sure that the manual backup process described above works.</p></li><li><p>Customize the default backup script.  Edit <code class="filename">/var/lib/aolserver/<span class="replaceable"><span class="replaceable">$OPENACS_SERVICE_NAME</span></span>/etc/backup.sh</code> with your specific parameters.</p></li><li><p>
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html><head><meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"><title>Automated Backup</title><meta name="generator" content="DocBook XSL Stylesheets V1.60.1"><link rel="home" href="index.html" title="OpenACS Core Documentation"><link rel="up" href="backup-recovery.html" title="Chapter�8.�Backup and Recovery"><link rel="previous" href="snapshot-backup.html" title="Manual backup and recovery"><link rel="next" href="backups-with-cvs.html" title="Using CVS for backup-recovery"><link rel="stylesheet" href="openacs.css" type="text/css"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><a href="http://openacs.org"><img src="/doc/images/alex.jpg" border="0" alt="Alex logo"></a><table width="100%" summary="Navigation header" border="0"><tr><td width="20%" align="left"><a accesskey="p" href="snapshot-backup.html">Prev</a> </td><th width="60%" align="center">Chapter�8.�Backup and Recovery</th><td width="20%" align="right"> <a accesskey="n" href="backups-with-cvs.html">Next</a></td></tr></table><hr></div><div class="sect1" lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="automated-backup"></a>Automated Backup</h2></div></div><div></div></div><p>The recommended backup strategy for a production sit is to use an automated script which first backs up the database to a file in <tt class="filename">/var/lib/aolserver/<span class="replaceable"><span class="replaceable">$OPENACS_SERVICE_NAME</span></span>/database-backup</tt> and then backs up all of <tt class="filename">/var/lib/aolserver/<span class="replaceable"><span class="replaceable">$OPENACS_SERVICE_NAME</span></span></tt> to a single zip file, and then copies that zip file to another computer.</p><div class="orderedlist"><ol type="1"><li><p>Make sure that the manual backup process described above works.</p></li><li><p>Customize the default backup script.  Edit <tt class="filename">/var/lib/aolserver/<span class="replaceable"><span class="replaceable">$OPENACS_SERVICE_NAME</span></span>/etc/backup.sh</tt> with your specific parameters.</p></li><li><p>
         Make sure the file is executable:</p><pre class="programlisting">chmod +x backup.sh</pre></li><li><p>
-        Set this file to run automatically by adding a line to root's crontab. (Typically, with <code class="computeroutput">export EDITOR=emacs; crontab -e</code>.)  This example runs the backup script at 1:30 am every day.</p><pre class="programlisting">30 1 * * *        sh /var/lib/aolserver/<span class="replaceable"><span class="replaceable">$OPENACS_SERVICE_NAME</span></span>/etc/backup.sh</pre></li></ol></div></div><div class="navfooter"><hr><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="snapshot-backup.html">Prev</a> </td><td width="20%" align="center"><a accesskey="h" href="index.html">Home</a></td><td width="40%" align="right"> <a accesskey="n" href="backups-with-cvs.html">Next</a></td></tr><tr><td width="40%" align="left">Manual backup and recovery </td><td width="20%" align="center"><a accesskey="u" href="backup-recovery.html">Up</a></td><td width="40%" align="right"> Using CVS for backup-recovery</td></tr></table><hr><address><a href="mailto:docs@openacs.org">docs@openacs.org</a></address></div><a name="comments"></a><center><a href="http://openacs.org/doc/current/automated-backup.html#comments">View comments on this page at openacs.org</a></center></body></html>
+        Set this file to run automatically by adding a line to root's crontab. (Typically, with <tt class="computeroutput">export EDITOR=emacs; crontab -e</tt>.)  This example runs the backup script at 1:30 am every day.</p><pre class="programlisting">30 1 * * *        sh /var/lib/aolserver/<span class="replaceable"><span class="replaceable">$OPENACS_SERVICE_NAME</span></span>/etc/backup.sh</pre></li></ol></div></div><div class="navfooter"><hr><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="snapshot-backup.html">Prev</a> </td><td width="20%" align="center"><a accesskey="h" href="index.html">Home</a></td><td width="40%" align="right"> <a accesskey="n" href="backups-with-cvs.html">Next</a></td></tr><tr><td width="40%" align="left">Manual backup and recovery </td><td width="20%" align="center"><a accesskey="u" href="backup-recovery.html">Up</a></td><td width="40%" align="right"> Using CVS for backup-recovery</td></tr></table><hr><address><a href="mailto:docs@openacs.org">docs@openacs.org</a></address></div><a name="comments"></a><center><a href="http://openacs.org/doc/current/automated-backup.html#comments">View comments on this page at openacs.org</a></center></body></html>
Index: openacs-4/packages/acs-core-docs/www/automated-testing-best-practices.html
===================================================================
RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/automated-testing-best-practices.html,v
diff -u -r1.21 -r1.21.4.1
--- openacs-4/packages/acs-core-docs/www/automated-testing-best-practices.html	17 Jul 2006 05:38:31 -0000	1.21
+++ openacs-4/packages/acs-core-docs/www/automated-testing-best-practices.html	3 Feb 2008 12:07:38 -0000	1.21.4.1
@@ -1,21 +1,22 @@
-<html><head><meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"><title>Automated Testing</title><meta name="generator" content="DocBook XSL Stylesheets V1.70.1"><link rel="home" href="index.html" title="OpenACS Core Documentation"><link rel="up" href="eng-standards.html" title="Chapter�12.�Engineering Standards"><link rel="previous" href="variables.html" title="Variables"><link rel="next" href="doc-standards.html" title="Chapter�13.�Documentation Standards"><link rel="stylesheet" href="openacs.css" type="text/css"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><a href="http://openacs.org"><img src="/doc/images/alex.jpg" border="0" alt="Alex logo"></a><table width="100%" summary="Navigation header" border="0"><tr><td width="20%" align="left"><a accesskey="p" href="variables.html">Prev</a> </td><th width="60%" align="center">Chapter�12.�Engineering Standards</th><td width="20%" align="right"> <a accesskey="n" href="doc-standards.html">Next</a></td></tr></table><hr></div><div class="sect1" lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="automated-testing-best-practices"></a>Automated Testing</h2></div></div></div><div class="authorblurb"><p>By <a href="mailto:davis@xarg.net" target="_top">Jeff Davis</a></p>
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html><head><meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"><title>Automated Testing</title><meta name="generator" content="DocBook XSL Stylesheets V1.60.1"><link rel="home" href="index.html" title="OpenACS Core Documentation"><link rel="up" href="eng-standards.html" title="Chapter�12.�Engineering Standards"><link rel="previous" href="variables.html" title="Variables"><link rel="next" href="doc-standards.html" title="Chapter�13.�Documentation Standards"><link rel="stylesheet" href="openacs.css" type="text/css"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><a href="http://openacs.org"><img src="/doc/images/alex.jpg" border="0" alt="Alex logo"></a><table width="100%" summary="Navigation header" border="0"><tr><td width="20%" align="left"><a accesskey="p" href="variables.html">Prev</a> </td><th width="60%" align="center">Chapter�12.�Engineering Standards</th><td width="20%" align="right"> <a accesskey="n" href="doc-standards.html">Next</a></td></tr></table><hr></div><div class="sect1" lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="automated-testing-best-practices"></a>Automated Testing</h2></div></div><div></div></div><div class="authorblurb"><p>By <a href="mailto:davis@xarg.net" target="_top">Jeff Davis</a></p>
           OpenACS docs are written by the named authors, and may be edited
           by OpenACS documentation staff.
         </div><p>Best practices in writing OpenACS automated tests</p><div class="itemizedlist"><ul type="disc"><li><p><b>Special characters in Tcl.�</b>
-Try strings starting with a <code class="computeroutput">-Bad</code> and strings containing <code class="computeroutput">[BAD]</code>, <code class="computeroutput">{</code>, <code class="computeroutput">\077</code>, and <code class="computeroutput">$Bad</code>.  For user input, <code class="computeroutput">[BAD]</code> should never be evaluated, <code class="computeroutput">\077</code> should not be turned into a <code class="computeroutput">?</code> and <code class="computeroutput">$Bad</code> should not be interpolated.  The string <code class="computeroutput">-Bad [BAD] \077 { $Bad</code> should be valid user input, should pass through the system unaltered, and if it isn't that's a bug.
+Try strings starting with a <tt class="computeroutput">-Bad</tt> and strings containing <tt class="computeroutput">[BAD]</tt>, <tt class="computeroutput">{</tt>, <tt class="computeroutput">\077</tt>, and <tt class="computeroutput">$Bad</tt>.  For user input, <tt class="computeroutput">[BAD]</tt> should never be evaluated, <tt class="computeroutput">\077</tt> should not be turned into a <tt class="computeroutput">?</tt> and <tt class="computeroutput">$Bad</tt> should not be interpolated.  The string <tt class="computeroutput">-Bad [BAD] \077 { $Bad</tt> should be valid user input, should pass through the system unaltered, and if it isn't that's a bug.
 </p></li><li><p><b>Quoting issues.�</b>Put some html in plain text fields and make sure the result is
-properly quoted anywhere it shows up (I use "&lt;b&gt;bold&lt;/b&gt;"
+properly quoted anywhere it shows up (I use &quot;&lt;b&gt;bold&lt;/b&gt;&quot;
 usually).  Look out especially for quoting errors in the context bar
 and in round trips via an edit form. For fields that disallow html
-tags you can use <code class="computeroutput">&amp;amp;</code> to check that the field is quoted
-properly.  If it is not displayed as <code class="computeroutput">&amp;amp;</code> then the quoting for the field is incorrect. (It's not clear whether this
+tags you can use <tt class="computeroutput">&amp;amp;</tt> to check that the field is quoted
+properly.  If it is not displayed as <tt class="computeroutput">&amp;amp;</tt> then the quoting for the field is incorrect. (It's not clear whether this
 should be considered an error but given that data for text fields can
 come from various sources if it's text it should be properly quoted
 and we should not rely on input validation to prevent XSS security
 holes.)</p></li><li><p><b>Whitespace input.�</b>Check that whitespace is not considered valid input for a field
 if it does not make sense.  For example, the subject of a forum post is
-used to construct a link and if it is " " it will have a link of
-<code class="computeroutput">&lt;a href="..."&gt; &lt;/a&gt;</code> which would not be clickable if whitespace was allowed as a valid input.
+used to construct a link and if it is &quot; &quot; it will have a link of
+<tt class="computeroutput">&lt;a href=&quot;...&quot;&gt; &lt;/a&gt;</tt> which would not be clickable if whitespace was allowed as a valid input.
 </p></li><li><p><b>Doubleclick.�</b>
 Make sure that if you submit a form, use the back button, and submit
 again that the behavior is reasonable (correct behavior depends on
Index: openacs-4/packages/acs-core-docs/www/backup-recovery.html
===================================================================
RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/backup-recovery.html,v
diff -u -r1.38 -r1.38.4.1
--- openacs-4/packages/acs-core-docs/www/backup-recovery.html	17 Jul 2006 05:38:31 -0000	1.38
+++ openacs-4/packages/acs-core-docs/www/backup-recovery.html	3 Feb 2008 12:07:38 -0000	1.38.4.1
@@ -1,11 +1,12 @@
-<html><head><meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"><title>Chapter�8.�Backup and Recovery</title><meta name="generator" content="DocBook XSL Stylesheets V1.70.1"><link rel="home" href="index.html" title="OpenACS Core Documentation"><link rel="up" href="acs-admin.html" title="Part�II.�Administrator's Guide"><link rel="previous" href="install-next-nightly-vacuum.html" title="Vacuum Postgres nightly"><link rel="next" href="install-next-backups.html" title="Backup Strategy"><link rel="stylesheet" href="openacs.css" type="text/css"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><a href="http://openacs.org"><img src="/doc/images/alex.jpg" border="0" alt="Alex logo"></a><table width="100%" summary="Navigation header" border="0"><tr><td width="20%" align="left"><a accesskey="p" href="install-next-nightly-vacuum.html">Prev</a> </td><th width="60%" align="center">Part�II.�Administrator's Guide</th><td width="20%" align="right"> <a accesskey="n" href="install-next-backups.html">Next</a></td></tr></table><hr></div><div class="chapter" lang="en"><div class="titlepage"><div><div><h2 class="title"><a name="backup-recovery"></a>Chapter�8.�Backup and Recovery</h2></div></div></div><div class="toc"><p><b>Table of Contents</b></p><dl><dt><span class="sect1"><a href="install-next-backups.html">Backup Strategy</a></span></dt><dt><span class="sect1"><a href="snapshot-backup.html">Manual backup and recovery</a></span></dt><dt><span class="sect1"><a href="automated-backup.html">Automated Backup</a></span></dt><dt><span class="sect1"><a href="backups-with-cvs.html">Using CVS for backup-recovery</a></span></dt></dl></div><div class="authorblurb"><div class="cvstag">($Id$)</div><p>By <a href="mailto:dhogaza@pacifier.com" target="_top">Don Baccus</a> with additions
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html><head><meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"><title>Chapter�8.�Backup and Recovery</title><meta name="generator" content="DocBook XSL Stylesheets V1.60.1"><link rel="home" href="index.html" title="OpenACS Core Documentation"><link rel="up" href="acs-admin.html" title="Part�II.�Administrator's Guide"><link rel="previous" href="install-next-nightly-vacuum.html" title="Vacuum Postgres nightly"><link rel="next" href="install-next-backups.html" title="Backup Strategy"><link rel="stylesheet" href="openacs.css" type="text/css"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><a href="http://openacs.org"><img src="/doc/images/alex.jpg" border="0" alt="Alex logo"></a><table width="100%" summary="Navigation header" border="0"><tr><td width="20%" align="left"><a accesskey="p" href="install-next-nightly-vacuum.html">Prev</a> </td><th width="60%" align="center">Part�II.�Administrator's Guide</th><td width="20%" align="right"> <a accesskey="n" href="install-next-backups.html">Next</a></td></tr></table><hr></div><div class="chapter" lang="en"><div class="titlepage"><div><div><h2 class="title"><a name="backup-recovery"></a>Chapter�8.�Backup and Recovery</h2></div></div><div></div></div><div class="toc"><p><b>Table of Contents</b></p><dl><dt><a href="install-next-backups.html">Backup Strategy</a></dt><dt><a href="snapshot-backup.html">Manual backup and recovery</a></dt><dt><a href="automated-backup.html">Automated Backup</a></dt><dt><a href="backups-with-cvs.html">Using CVS for backup-recovery</a></dt></dl></div><div class="authorblurb"><div class="cvstag">($Id$)</div><p>By <a href="mailto:dhogaza@pacifier.com" target="_top">Don Baccus</a> with additions
       by <a href="mailto:joel@aufrecht.org" target="_top">Joel Aufrecht</a></p><p>We will cover some basic backup and recovery strategies.  These are intended to 
     be robust but simple enough to set up.  For a large scale production site you would 
     probably need to create your own backup strategies (in particular full dumps from 
     oracle, while easy to set up, are far from the best solution).
     </p><p>There are three basic things which need to be backed up, the database data, the server 
     source tree, and the acs-content-repository (which is in the server source tree).</p><p>
-    </p><div class="figure"><a name="id968822"></a><p class="title"><b>Figure�8.1.�Backup and Recovery Strategy</b></p><div class="figure-contents"><div class="mediaobject" align="center"><img src="images/backup.png" align="middle" alt="Backup and Recovery Strategy"></div></div></div><p><br class="figure-break">
+    </p><div class="figure"><a name="id2961286"></a><p class="title"><b>Figure�8.1.�Backup and Recovery Strategy</b></p><div class="mediaobject" align="center"><img src="../images/backup.png" align="middle" alt="Backup and Recovery Strategy"></div></div><p>
   </p>
           OpenACS docs are written by the named authors, and may be edited
           by OpenACS documentation staff.
Index: openacs-4/packages/acs-core-docs/www/backups-with-cvs.html
===================================================================
RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/backups-with-cvs.html,v
diff -u -r1.8 -r1.8.4.1
--- openacs-4/packages/acs-core-docs/www/backups-with-cvs.html	17 Jul 2006 05:38:31 -0000	1.8
+++ openacs-4/packages/acs-core-docs/www/backups-with-cvs.html	3 Feb 2008 12:07:38 -0000	1.8.4.1
@@ -1,30 +1,31 @@
-<html><head><meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"><title>Using CVS for backup-recovery</title><meta name="generator" content="DocBook XSL Stylesheets V1.70.1"><link rel="home" href="index.html" title="OpenACS Core Documentation"><link rel="up" href="backup-recovery.html" title="Chapter�8.�Backup and Recovery"><link rel="previous" href="automated-backup.html" title="Automated Backup"><link rel="next" href="install-redhat.html" title="Appendix�A.�Install Red Hat 8/9"><link rel="stylesheet" href="openacs.css" type="text/css"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><a href="http://openacs.org"><img src="/doc/images/alex.jpg" border="0" alt="Alex logo"></a><table width="100%" summary="Navigation header" border="0"><tr><td width="20%" align="left"><a accesskey="p" href="automated-backup.html">Prev</a> </td><th width="60%" align="center">Chapter�8.�Backup and Recovery</th><td width="20%" align="right"> <a accesskey="n" href="install-redhat.html">Next</a></td></tr></table><hr></div><div class="sect1" lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="backups-with-cvs"></a>Using CVS for backup-recovery</h2></div></div></div><p>CVS-only backup is often appropriate for development sites.  If you are already using CVS and your data is not important, you probably don't
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html><head><meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"><title>Using CVS for backup-recovery</title><meta name="generator" content="DocBook XSL Stylesheets V1.60.1"><link rel="home" href="index.html" title="OpenACS Core Documentation"><link rel="up" href="backup-recovery.html" title="Chapter�8.�Backup and Recovery"><link rel="previous" href="automated-backup.html" title="Automated Backup"><link rel="next" href="install-redhat.html" title="Appendix�A.�Install Red Hat 8/9"><link rel="stylesheet" href="openacs.css" type="text/css"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><a href="http://openacs.org"><img src="/doc/images/alex.jpg" border="0" alt="Alex logo"></a><table width="100%" summary="Navigation header" border="0"><tr><td width="20%" align="left"><a accesskey="p" href="automated-backup.html">Prev</a> </td><th width="60%" align="center">Chapter�8.�Backup and Recovery</th><td width="20%" align="right"> <a accesskey="n" href="install-redhat.html">Next</a></td></tr></table><hr></div><div class="sect1" lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="backups-with-cvs"></a>Using CVS for backup-recovery</h2></div></div><div></div></div><p>CVS-only backup is often appropriate for development sites.  If you are already using CVS and your data is not important, you probably don't
       need to do anything to back up your files.  Just make
       sure that your current work is checked into the system.
       You can then roll back based on date - note the
       current system time, down to the minute.  For maximum
       safety, you can apply a tag to your current
-      files.  You will still need to back up your database.</p><p>  Note that, if you did the CVS options in this document, the <code class="filename">/var/lib/aolserver/$OPENACS_SERVICE_NAME/etc</code> directory is not included in cvs and you may want to add it.</p><pre class="screen">[root root]# <strong class="userinput"><code>su - $OPENACS_SERVICE_NAME</code></strong>
-[$OPENACS_SERVICE_NAME $OPENACS_SERVICE_NAME]$ <strong class="userinput"><code>cd /var/lib/aolserver/<span class="replaceable"><span class="replaceable">$OPENACS_SERVICE_NAME</span></span></code></strong>
-[$OPENACS_SERVICE_NAME $OPENACS_SERVICE_NAME]$ <strong class="userinput"><code>cvs commit -m "last-minute commits before upgrade to 4.6"</code></strong>
+      files.  You will still need to back up your database.</p><p>  Note that, if you did the CVS options in this document, the <tt class="filename">/var/lib/aolserver/$OPENACS_SERVICE_NAME/etc</tt> directory is not included in cvs and you may want to add it.</p><pre class="screen">[root root]# <b class="userinput"><tt>su - $OPENACS_SERVICE_NAME</tt></b>
+[$OPENACS_SERVICE_NAME $OPENACS_SERVICE_NAME]$ <b class="userinput"><tt>cd /var/lib/aolserver/<span class="replaceable"><span class="replaceable">$OPENACS_SERVICE_NAME</span></span></tt></b>
+[$OPENACS_SERVICE_NAME $OPENACS_SERVICE_NAME]$ <b class="userinput"><tt>cvs commit -m &quot;last-minute commits before upgrade to 4.6&quot;</tt></b>
 cvs commit: Examining .
 cvs commit: Examining bin
 <span class="emphasis"><em>(many lines omitted)</em></span>
-[$OPENACS_SERVICE_NAME $OPENACS_SERVICE_NAME]$ <strong class="userinput"><code>cvs tag before_upgrade_to_4_6</code></strong>
+[$OPENACS_SERVICE_NAME $OPENACS_SERVICE_NAME]$ <b class="userinput"><tt>cvs tag before_upgrade_to_4_6</tt></b>
 cvs server: Tagging bin
 T bin/acs-4-0-publish.sh
 T bin/ad-context-server.pl
 (many lines omitted)
-[$OPENACS_SERVICE_NAME $OPENACS_SERVICE_NAME]$ <strong class="userinput"><code>exit</code></strong>
+[$OPENACS_SERVICE_NAME $OPENACS_SERVICE_NAME]$ <b class="userinput"><tt>exit</tt></b>
 [root root]# 
 <span class="action"><span class="action">su - $OPENACS_SERVICE_NAME
 cd /var/lib/aolserver/<span class="replaceable"><span class="replaceable">$OPENACS_SERVICE_NAME</span></span>
-cvs commit -m "last-minute commits before upgrade to 4.6"
+cvs commit -m &quot;last-minute commits before upgrade to 4.6&quot;
 cvs tag before_upgrade_to_4_6
-exit</span></span></pre><p>To restore files from a cvs tag such as the one used above:</p><pre class="screen">[root root]# <strong class="userinput"><code>su - $OPENACS_SERVICE_NAME</code></strong>
-[$OPENACS_SERVICE_NAME $OPENACS_SERVICE_NAME]$ <strong class="userinput"><code>cd /var/lib/aolserver/<span class="replaceable"><span class="replaceable">$OPENACS_SERVICE_NAME</span></span></code></strong>
-[$OPENACS_SERVICE_NAME $OPENACS_SERVICE_NAME]$ <strong class="userinput"><code>cvs up -r current</code></strong>
-[$OPENACS_SERVICE_NAME $OPENACS_SERVICE_NAME]$ <strong class="userinput"><code>exit</code></strong>
+exit</span></span></pre><p>To restore files from a cvs tag such as the one used above:</p><pre class="screen">[root root]# <b class="userinput"><tt>su - $OPENACS_SERVICE_NAME</tt></b>
+[$OPENACS_SERVICE_NAME $OPENACS_SERVICE_NAME]$ <b class="userinput"><tt>cd /var/lib/aolserver/<span class="replaceable"><span class="replaceable">$OPENACS_SERVICE_NAME</span></span></tt></b>
+[$OPENACS_SERVICE_NAME $OPENACS_SERVICE_NAME]$ <b class="userinput"><tt>cvs up -r current</tt></b>
+[$OPENACS_SERVICE_NAME $OPENACS_SERVICE_NAME]$ <b class="userinput"><tt>exit</tt></b>
 <span class="action"><span class="action">su - $OPENACS_SERVICE_NAME
 cd /var/lib/aolserver/<span class="replaceable"><span class="replaceable">$OPENACS_SERVICE_NAME</span></span>
 cvs up -r current</span></span></pre></div><div class="navfooter"><hr><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="automated-backup.html">Prev</a> </td><td width="20%" align="center"><a accesskey="h" href="index.html">Home</a></td><td width="40%" align="right"> <a accesskey="n" href="install-redhat.html">Next</a></td></tr><tr><td width="40%" align="left">Automated Backup </td><td width="20%" align="center"><a accesskey="u" href="backup-recovery.html">Up</a></td><td width="40%" align="right"> Appendix�A.�Install Red Hat 8/9</td></tr></table><hr><address><a href="mailto:docs@openacs.org">docs@openacs.org</a></address></div><a name="comments"></a><center><a href="http://openacs.org/doc/current/backups-with-cvs.html#comments">View comments on this page at openacs.org</a></center></body></html>
Index: openacs-4/packages/acs-core-docs/www/bootstrap-acs.html
===================================================================
RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/bootstrap-acs.html,v
diff -u -r1.42 -r1.42.4.1
--- openacs-4/packages/acs-core-docs/www/bootstrap-acs.html	17 Jul 2006 05:38:31 -0000	1.42
+++ openacs-4/packages/acs-core-docs/www/bootstrap-acs.html	3 Feb 2008 12:07:38 -0000	1.42.4.1
@@ -1,88 +1,89 @@
-<html><head><meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"><title>Bootstrapping OpenACS</title><meta name="generator" content="DocBook XSL Stylesheets V1.70.1"><link rel="home" href="index.html" title="OpenACS Core Documentation"><link rel="up" href="kernel-doc.html" title="Chapter�15.�Kernel Documentation"><link rel="previous" href="tcl-doc.html" title="Documenting Tcl Files: Page Contracts and Libraries"><link rel="next" href="ext-auth-requirements.html" title="External Authentication Requirements"><link rel="stylesheet" href="openacs.css" type="text/css"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><a href="http://openacs.org"><img src="/doc/images/alex.jpg" border="0" alt="Alex logo"></a><table width="100%" summary="Navigation header" border="0"><tr><td width="20%" align="left"><a accesskey="p" href="tcl-doc.html">Prev</a> </td><th width="60%" align="center">Chapter�15.�Kernel Documentation</th><td width="20%" align="right"> <a accesskey="n" href="ext-auth-requirements.html">Next</a></td></tr></table><hr></div><div class="sect1" lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="bootstrap-acs"></a>Bootstrapping OpenACS</h2></div></div></div><div class="authorblurb"><p>By <a href="mailto:jsalz@mit.edu" target="_top">Jon Salz</a> </p>
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html><head><meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"><title>Bootstrapping OpenACS</title><meta name="generator" content="DocBook XSL Stylesheets V1.60.1"><link rel="home" href="index.html" title="OpenACS Core Documentation"><link rel="up" href="kernel-doc.html" title="Chapter�15.�Kernel Documentation"><link rel="previous" href="tcl-doc.html" title="Documenting Tcl Files: Page Contracts and Libraries"><link rel="next" href="ext-auth-requirements.html" title="External Authentication Requirements"><link rel="stylesheet" href="openacs.css" type="text/css"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><a href="http://openacs.org"><img src="/doc/images/alex.jpg" border="0" alt="Alex logo"></a><table width="100%" summary="Navigation header" border="0"><tr><td width="20%" align="left"><a accesskey="p" href="tcl-doc.html">Prev</a> </td><th width="60%" align="center">Chapter�15.�Kernel Documentation</th><td width="20%" align="right"> <a accesskey="n" href="ext-auth-requirements.html">Next</a></td></tr></table><hr></div><div class="sect1" lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="bootstrap-acs"></a>Bootstrapping OpenACS</h2></div></div><div></div></div><div class="authorblurb"><p>By <a href="mailto:jsalz@mit.edu" target="_top">Jon Salz</a> </p>
           OpenACS docs are written by the named authors, and may be edited
           by OpenACS documentation staff.
         </div><div class="itemizedlist"><ul type="disc"><li><p>Tcl code: /tcl/0-acs-init.tcl and /packages/acs-kernel/bootstrap.tcl</p></li></ul></div><p>This document describes the startup (bootstrapping) process for an AOLserver
 running OpenACS. 
-</p><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="bootstrap-acs-bigpicture"></a>The Big Picture</h3></div></div></div><p>
+</p><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="bootstrap-acs-bigpicture"></a>The Big Picture</h3></div></div><div></div></div><p>
 Before OpenACS 3.3, the OpenACS startup process was extremely simple: after AOLserver
 performed its internal initialization (reading the configuration file,
 loading shared libraries and module code, etc.) it scanned through the Tcl
-library directory (generally <code class="computeroutput">/var/lib/aolserver/</code><span class="emphasis"><em><code class="computeroutput">yourservername</code></em></span><code class="computeroutput">/tcl</code>),
+library directory (generally <tt class="computeroutput">/var/lib/aolserver/</tt><span class="emphasis"><em><tt class="computeroutput">yourservername</tt></em></span><tt class="computeroutput">/tcl</tt>),
 sourcing each file in sequence. 
 </p><p>While this overall structure for initialization is still intact, package
 management has thrown a wrench into the works - there are a few extra things
 to do during initialization, most notably:</p><div class="itemizedlist"><ul type="disc"><li><p>Examine the OpenACS file tree for files that should not be present in OpenACS
 (i.e., that were once part of the OpenACS distribution but have since been
-removed).</p></li><li><p>Scan the <code class="computeroutput">/packages</code> directory for new packages.</p></li><li><p>Initialize enabled packages by sourcing their <code class="computeroutput">*-procs.tcl</code>
-and <code class="computeroutput">*-init.tcl</code> files.</p></li></ul></div><p>
+removed).</p></li><li><p>Scan the <tt class="computeroutput">/packages</tt> directory for new packages.</p></li><li><p>Initialize enabled packages by sourcing their <tt class="computeroutput">*-procs.tcl</tt>
+and <tt class="computeroutput">*-init.tcl</tt> files.</p></li></ul></div><p>
 This document examines in detail each of the steps involved in AOLserver/OpenACS
 startup. 
-</p></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="bootstrap-acs-startup-process"></a>The Startup Process</h3></div></div></div><p>
-As soon as the <code class="computeroutput">nsd</code> daemon is executed by the <code class="computeroutput">init</code>
+</p></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="bootstrap-acs-startup-process"></a>The Startup Process</h3></div></div><div></div></div><p>
+As soon as the <tt class="computeroutput">nsd</tt> daemon is executed by the <tt class="computeroutput">init</tt>
 process (or otherwise), AOLserver reads its configuration file and
-<code class="computeroutput">chroot</code>s itself if necessary. It then loads shared libraries
-indicated in the <code class="computeroutput">.ini</code> file (e.g., the Oracle driver and
-<code class="computeroutput">nssock</code>), and sources Tcl module files (generally in
-<code class="computeroutput">/home/aol30/modules/tcl</code>). This step is, and has always been, the
+<tt class="computeroutput">chroot</tt>s itself if necessary. It then loads shared libraries
+indicated in the <tt class="computeroutput">.ini</tt> file (e.g., the Oracle driver and
+<tt class="computeroutput">nssock</tt>), and sources Tcl module files (generally in
+<tt class="computeroutput">/home/aol30/modules/tcl</tt>). This step is, and has always been, the
 same for all AOLservers, regardless of whether they are running OpenACS. 
 </p><p>Next AOLserver sources, in lexicographical order, each file in the
-<code class="computeroutput">/tcl</code> directory. The first such file is
-<code class="computeroutput">0-acs-init.tcl</code>, which doesn't do much directly except to
-determine the OpenACS path root (e.g., <code class="computeroutput">/var/lib/aolserver/</code><span class="emphasis"><em><code class="computeroutput">yourservername</code></em></span>)
+<tt class="computeroutput">/tcl</tt> directory. The first such file is
+<tt class="computeroutput">0-acs-init.tcl</tt>, which doesn't do much directly except to
+determine the OpenACS path root (e.g., <tt class="computeroutput">/var/lib/aolserver/</tt><span class="emphasis"><em><tt class="computeroutput">yourservername</tt></em></span>)
 by trimming the final component from the path to the Tcl library directory
-(<code class="computeroutput">/var/lib/aolserver/</code><span class="emphasis"><em><code class="computeroutput">yourservername</code></em></span><code class="computeroutput">/tcl</code>). But
-<code class="computeroutput">0-acs-init.tcl</code>'s has an important function, namely sourcing
-<code class="computeroutput">/packages/acs-core/bootstrap.tcl</code>, which does the following:</p><div class="orderedlist"><ol type="1"><li><p><span class="strong"><strong>Initialize some NSVs used by the core</strong></span>. These NSVs are
-documented in <code class="computeroutput">/packages/acs-core/apm-procs.tcl</code> - no need to
+(<tt class="computeroutput">/var/lib/aolserver/</tt><span class="emphasis"><em><tt class="computeroutput">yourservername</tt></em></span><tt class="computeroutput">/tcl</tt>). But
+<tt class="computeroutput">0-acs-init.tcl</tt>'s has an important function, namely sourcing
+<tt class="computeroutput">/packages/acs-core/bootstrap.tcl</tt>, which does the following:</p><div class="orderedlist"><ol type="1"><li><p><span class="strong">Initialize some NSVs used by the core</span>. These NSVs are
+documented in <tt class="computeroutput">/packages/acs-core/apm-procs.tcl</tt> - no need to
 worry about them unless you're an OpenACS core hacker. 
 
-</p></li><li><p><span class="strong"><strong>Verify the deletion of obsolete OpenACS files</strong></span>. The
-<code class="computeroutput">/tcl</code> directory has evolved quite a bit over the months and
+</p></li><li><p><span class="strong">Verify the deletion of obsolete OpenACS files</span>. The
+<tt class="computeroutput">/tcl</tt> directory has evolved quite a bit over the months and
 years, and a few files have come and gone. The
-<code class="computeroutput">/www/doc/removed-files.txt</code> file contains a list of files which
+<tt class="computeroutput">/www/doc/removed-files.txt</tt> file contains a list of files which
 <span class="emphasis"><em>must be deleted</em></span> from the AOLserver installation, at the risk of
 causing weird conflicts, e.g., having several security filters registered.
-<code class="computeroutput">bootstrap.tcl</code> scans through this list, logging error messages to
+<tt class="computeroutput">bootstrap.tcl</tt> scans through this list, logging error messages to
 the log if any of these files exist. 
 
-</p></li><li><p><span class="strong"><strong>Source <code class="computeroutput">*-procs.tcl</code> files in the OpenACS core</strong></span>.
-We source each file matching the <code class="computeroutput">*-procs.tcl</code> glob in the
-<code class="computeroutput">/packages/acs-kernel</code> directory, in lexicographical order. These
+</p></li><li><p><span class="strong">Source <tt class="computeroutput">*-procs.tcl</tt> files in the OpenACS core</span>.
+We source each file matching the <tt class="computeroutput">*-procs.tcl</tt> glob in the
+<tt class="computeroutput">/packages/acs-kernel</tt> directory, in lexicographical order. These
 procedure are needed to perform any of the following steps. 
 
-</p></li><li><p><span class="strong"><strong>Ensure that the database is available</strong></span> by grabbing and
+</p></li><li><p><span class="strong">Ensure that the database is available</span> by grabbing and
 releasing a handle. If we can't obtain a handle, we terminate
 initialization (since OpenACS couldn't possibly start up the server without
 access to the database). 
 
-</p></li><li><p><span class="strong"><strong>Register any new packages in the <code class="computeroutput">/packages</code>
-directory</strong></span>. In each directory inside <code class="computeroutput">/packages</code>, we look
-for a <code class="computeroutput">.info</code> file; if we find a package that hasn't yet been
+</p></li><li><p><span class="strong">Register any new packages in the <tt class="computeroutput">/packages</tt>
+directory</span>. In each directory inside <tt class="computeroutput">/packages</tt>, we look
+for a <tt class="computeroutput">.info</tt> file; if we find a package that hasn't yet been
 registered with the package manager (i.e., it's been copied there
 manually), we insert information about it into the database. (The first time
 OpenACS starts up, <span class="emphasis"><em>no</em></span> packages will have been registered in the database
 yet, so this step will registers every single package in the
-<code class="computeroutput">/packages</code> directory.) Note that packages discovered here are
+<tt class="computeroutput">/packages</tt> directory.) Note that packages discovered here are
 initially disabled; they must be manually enabled in the package manager
 before they can be used. 
 
-</p></li><li><p><span class="strong"><strong>Ensure that the <code class="computeroutput">acs-kernel</code> package is
-enabled</strong></span>. If the OpenACS core isn't initialized, the server
+</p></li><li><p><span class="strong">Ensure that the <tt class="computeroutput">acs-kernel</tt> package is
+enabled</span>. If the OpenACS core isn't initialized, the server
 couldn't possibly be operational, so if there's no enabled version of
 the OpenACS core we simply mark the latest installed one as enabled. 
 
-</p></li><li><p><span class="strong"><strong>Load <code class="computeroutput">*-procs.tcl</code> files for enabled
-packages</strong></span>, activating their APIs. 
+</p></li><li><p><span class="strong">Load <tt class="computeroutput">*-procs.tcl</tt> files for enabled
+packages</span>, activating their APIs. 
 
-</p></li><li><p><span class="strong"><strong>Load <code class="computeroutput">*-init.tcl</code> files for enabled packages</strong></span>,
+</p></li><li><p><span class="strong">Load <tt class="computeroutput">*-init.tcl</tt> files for enabled packages</span>,
 giving packages a chance to register filters and procedures, initialize data
 structures, etc. 
 
-</p></li><li><p><span class="strong"><strong>Verify that the core has been properly initialized</strong></span> by
+</p></li><li><p><span class="strong">Verify that the core has been properly initialized</span> by
 checking for the existence of an NSV created by the request processor
 initialization code. If it's not present, the server won't be
 operational, so we log an error.</p></li></ol></div><p>
-At this point, <code class="computeroutput">bootstrap.tcl</code> is done executing. AOLserver
-proceeds to source the remaining files in the <code class="computeroutput">/tcl</code> directory
+At this point, <tt class="computeroutput">bootstrap.tcl</tt> is done executing. AOLserver
+proceeds to source the remaining files in the <tt class="computeroutput">/tcl</tt> directory
 (i.e., unpackaged libraries) and begins listening for connections. 
 </p><div class="cvstag">($Id$)</div></div></div><div class="navfooter"><hr><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="tcl-doc.html">Prev</a> </td><td width="20%" align="center"><a accesskey="h" href="index.html">Home</a></td><td width="40%" align="right"> <a accesskey="n" href="ext-auth-requirements.html">Next</a></td></tr><tr><td width="40%" align="left">Documenting Tcl Files: Page Contracts and Libraries </td><td width="20%" align="center"><a accesskey="u" href="kernel-doc.html">Up</a></td><td width="40%" align="right"> External Authentication Requirements</td></tr></table><hr><address><a href="mailto:docs@openacs.org">docs@openacs.org</a></address></div><a name="comments"></a><center><a href="http://openacs.org/doc/current/bootstrap-acs.html#comments">View comments on this page at openacs.org</a></center></body></html>
Index: openacs-4/packages/acs-core-docs/www/complete-install.html
===================================================================
RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/complete-install.html,v
diff -u -r1.18 -r1.18.4.1
--- openacs-4/packages/acs-core-docs/www/complete-install.html	17 Jul 2006 05:38:31 -0000	1.18
+++ openacs-4/packages/acs-core-docs/www/complete-install.html	3 Feb 2008 12:07:38 -0000	1.18.4.1
@@ -1 +1,2 @@
-<html><head><meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"><title>Chapter�3.�Complete Installation</title><meta name="generator" content="DocBook XSL Stylesheets V1.70.1"><link rel="home" href="index.html" title="OpenACS Core Documentation"><link rel="up" href="acs-admin.html" title="Part�II.�Administrator's Guide"><link rel="previous" href="individual-programs.html" title="Prerequisite Software"><link rel="next" href="unix-installation.html" title="Install a Unix-like system and supporting software"><link rel="stylesheet" href="openacs.css" type="text/css"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><a href="http://openacs.org"><img src="/doc/images/alex.jpg" border="0" alt="Alex logo"></a><table width="100%" summary="Navigation header" border="0"><tr><td width="20%" align="left"><a accesskey="p" href="individual-programs.html">Prev</a> </td><th width="60%" align="center">Part�II.�Administrator's Guide</th><td width="20%" align="right"> <a accesskey="n" href="unix-installation.html">Next</a></td></tr></table><hr></div><div class="chapter" lang="en"><div class="titlepage"><div><div><h2 class="title"><a name="complete-install"></a>Chapter�3.�Complete Installation</h2></div></div></div><div class="toc"><p><b>Table of Contents</b></p><dl><dt><span class="sect1"><a href="unix-installation.html">Install a Unix-like system and supporting software</a></span></dt><dt><span class="sect1"><a href="oracle.html">Install Oracle 8.1.7</a></span></dt><dt><span class="sect1"><a href="postgres.html">Install PostgreSQL</a></span></dt><dt><span class="sect1"><a href="aolserver4.html">Install AOLserver 4</a></span></dt><dt><span class="sect1"><a href="openacs.html">Install OpenACS 5.2.3rc1</a></span></dt><dt><span class="sect1"><a href="win2k-installation.html">OpenACS Installation Guide for Windows2000</a></span></dt><dt><span class="sect1"><a href="mac-installation.html">OpenACS Installation Guide for Mac OS X</a></span></dt></dl></div></div><div class="navfooter"><hr><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="individual-programs.html">Prev</a> </td><td width="20%" align="center"><a accesskey="h" href="index.html">Home</a></td><td width="40%" align="right"> <a accesskey="n" href="unix-installation.html">Next</a></td></tr><tr><td width="40%" align="left">Prerequisite Software </td><td width="20%" align="center"><a accesskey="u" href="acs-admin.html">Up</a></td><td width="40%" align="right"> Install a Unix-like system and supporting software</td></tr></table><hr><address><a href="mailto:docs@openacs.org">docs@openacs.org</a></address></div><a name="comments"></a><center><a href="http://openacs.org/doc/current/complete-install.html#comments">View comments on this page at openacs.org</a></center></body></html>
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html><head><meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"><title>Chapter�3.�Complete Installation</title><meta name="generator" content="DocBook XSL Stylesheets V1.60.1"><link rel="home" href="index.html" title="OpenACS Core Documentation"><link rel="up" href="acs-admin.html" title="Part�II.�Administrator's Guide"><link rel="previous" href="individual-programs.html" title="Prerequisite Software"><link rel="next" href="unix-installation.html" title="Install a Unix-like system and supporting software"><link rel="stylesheet" href="openacs.css" type="text/css"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><a href="http://openacs.org"><img src="/doc/images/alex.jpg" border="0" alt="Alex logo"></a><table width="100%" summary="Navigation header" border="0"><tr><td width="20%" align="left"><a accesskey="p" href="individual-programs.html">Prev</a> </td><th width="60%" align="center">Part�II.�Administrator's Guide</th><td width="20%" align="right"> <a accesskey="n" href="unix-installation.html">Next</a></td></tr></table><hr></div><div class="chapter" lang="en"><div class="titlepage"><div><div><h2 class="title"><a name="complete-install"></a>Chapter�3.�Complete Installation</h2></div></div><div></div></div><div class="toc"><p><b>Table of Contents</b></p><dl><dt><a href="unix-installation.html">Install a Unix-like system and supporting software</a></dt><dt><a href="oracle.html">Install Oracle 8.1.7</a></dt><dt><a href="postgres.html">Install PostgreSQL</a></dt><dt><a href="aolserver4.html">Install AOLserver 4</a></dt><dt><a href="openacs.html">Install OpenACS 5.4.0</a></dt><dt><a href="win2k-installation.html">OpenACS Installation Guide for Windows2000</a></dt><dt><a href="mac-installation.html">OpenACS Installation Guide for Mac OS X</a></dt></dl></div></div><div class="navfooter"><hr><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="individual-programs.html">Prev</a> </td><td width="20%" align="center"><a accesskey="h" href="index.html">Home</a></td><td width="40%" align="right"> <a accesskey="n" href="unix-installation.html">Next</a></td></tr><tr><td width="40%" align="left">Prerequisite Software </td><td width="20%" align="center"><a accesskey="u" href="acs-admin.html">Up</a></td><td width="40%" align="right"> Install a Unix-like system and supporting software</td></tr></table><hr><address><a href="mailto:docs@openacs.org">docs@openacs.org</a></address></div><a name="comments"></a><center><a href="http://openacs.org/doc/current/complete-install.html#comments">View comments on this page at openacs.org</a></center></body></html>
Index: openacs-4/packages/acs-core-docs/www/configuring-configuring-packages.html
===================================================================
RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/configuring-configuring-packages.html,v
diff -u -r1.3 -r1.3.4.1
--- openacs-4/packages/acs-core-docs/www/configuring-configuring-packages.html	17 Jul 2006 05:38:31 -0000	1.3
+++ openacs-4/packages/acs-core-docs/www/configuring-configuring-packages.html	3 Feb 2008 12:07:38 -0000	1.3.4.1
@@ -1,7 +1,8 @@
-<html><head><meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"><title>Configuring an OpenACS package</title><meta name="generator" content="DocBook XSL Stylesheets V1.70.1"><link rel="home" href="index.html" title="OpenACS Core Documentation"><link rel="up" href="configuring-new-site.html" title="Chapter�4.�Configuring a new OpenACS Site"><link rel="previous" href="configuring-mounting-packages.html" title="Mounting OpenACS packages"><link rel="next" href="configuring-configuring-permissions.html" title="Setting Permissions on an OpenACS package"><link rel="stylesheet" href="openacs.css" type="text/css"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><a href="http://openacs.org"><img src="/doc/images/alex.jpg" border="0" alt="Alex logo"></a><table width="100%" summary="Navigation header" border="0"><tr><td width="20%" align="left"><a accesskey="p" href="configuring-mounting-packages.html">Prev</a> </td><th width="60%" align="center">Chapter�4.�Configuring a new OpenACS Site</th><td width="20%" align="right"> <a accesskey="n" href="configuring-configuring-permissions.html">Next</a></td></tr></table><hr></div><div class="sect1" lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="configuring-configuring-packages"></a>Configuring an OpenACS package</h2></div></div></div><div class="authorblurb"><p>by <a href="mailto:jade@rubick.com" target="_top">Jade Rubick</a></p>
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html><head><meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"><title>Configuring an OpenACS package</title><meta name="generator" content="DocBook XSL Stylesheets V1.60.1"><link rel="home" href="index.html" title="OpenACS Core Documentation"><link rel="up" href="configuring-new-site.html" title="Chapter�4.�Configuring a new OpenACS Site"><link rel="previous" href="configuring-mounting-packages.html" title="Mounting OpenACS packages"><link rel="next" href="configuring-configuring-permissions.html" title="Setting Permissions on an OpenACS package"><link rel="stylesheet" href="openacs.css" type="text/css"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><a href="http://openacs.org"><img src="/doc/images/alex.jpg" border="0" alt="Alex logo"></a><table width="100%" summary="Navigation header" border="0"><tr><td width="20%" align="left"><a accesskey="p" href="configuring-mounting-packages.html">Prev</a> </td><th width="60%" align="center">Chapter�4.�Configuring a new OpenACS Site</th><td width="20%" align="right"> <a accesskey="n" href="configuring-configuring-permissions.html">Next</a></td></tr></table><hr></div><div class="sect1" lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="configuring-configuring-packages"></a>Configuring an OpenACS package</h2></div></div><div></div></div><div class="authorblurb"><p>by <a href="mailto:jade@rubick.com" target="_top">Jade Rubick</a></p>
           OpenACS docs are written by the named authors, and may be edited
           by OpenACS documentation staff.
-        </div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id1006900"></a>Configuring an OpenACS package</h3></div></div></div><p>After you've installed and mounted your package, you can
+        </div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id2955900"></a>Configuring an OpenACS package</h3></div></div><div></div></div><p>After you've installed and mounted your package, you can
       configure each instance to act as you would like. </p><p>This is done from the Applications page. Log in, go to the
       Admin or Control Panel, click on the subsite the application is
       in, and click on Applications. If you click on the 'Parameters'
Index: openacs-4/packages/acs-core-docs/www/configuring-configuring-permissions.html
===================================================================
RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/configuring-configuring-permissions.html,v
diff -u -r1.3 -r1.3.4.1
--- openacs-4/packages/acs-core-docs/www/configuring-configuring-permissions.html	17 Jul 2006 05:38:31 -0000	1.3
+++ openacs-4/packages/acs-core-docs/www/configuring-configuring-permissions.html	3 Feb 2008 12:07:38 -0000	1.3.4.1
@@ -1,7 +1,8 @@
-<html><head><meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"><title>Setting Permissions on an OpenACS package</title><meta name="generator" content="DocBook XSL Stylesheets V1.70.1"><link rel="home" href="index.html" title="OpenACS Core Documentation"><link rel="up" href="configuring-new-site.html" title="Chapter�4.�Configuring a new OpenACS Site"><link rel="previous" href="configuring-configuring-packages.html" title="Configuring an OpenACS package"><link rel="next" href="how-do-I.html" title="How Do I?"><link rel="stylesheet" href="openacs.css" type="text/css"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><a href="http://openacs.org"><img src="/doc/images/alex.jpg" border="0" alt="Alex logo"></a><table width="100%" summary="Navigation header" border="0"><tr><td width="20%" align="left"><a accesskey="p" href="configuring-configuring-packages.html">Prev</a> </td><th width="60%" align="center">Chapter�4.�Configuring a new OpenACS Site</th><td width="20%" align="right"> <a accesskey="n" href="how-do-I.html">Next</a></td></tr></table><hr></div><div class="sect1" lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="configuring-configuring-permissions"></a>Setting Permissions on an OpenACS package</h2></div></div></div><div class="authorblurb"><p>by <a href="mailto:jade@rubick.com" target="_top">Jade Rubick</a></p>
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html><head><meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"><title>Setting Permissions on an OpenACS package</title><meta name="generator" content="DocBook XSL Stylesheets V1.60.1"><link rel="home" href="index.html" title="OpenACS Core Documentation"><link rel="up" href="configuring-new-site.html" title="Chapter�4.�Configuring a new OpenACS Site"><link rel="previous" href="configuring-configuring-packages.html" title="Configuring an OpenACS package"><link rel="next" href="how-do-I.html" title="How Do I?"><link rel="stylesheet" href="openacs.css" type="text/css"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><a href="http://openacs.org"><img src="/doc/images/alex.jpg" border="0" alt="Alex logo"></a><table width="100%" summary="Navigation header" border="0"><tr><td width="20%" align="left"><a accesskey="p" href="configuring-configuring-packages.html">Prev</a> </td><th width="60%" align="center">Chapter�4.�Configuring a new OpenACS Site</th><td width="20%" align="right"> <a accesskey="n" href="how-do-I.html">Next</a></td></tr></table><hr></div><div class="sect1" lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="configuring-configuring-permissions"></a>Setting Permissions on an OpenACS package</h2></div></div><div></div></div><div class="authorblurb"><p>by <a href="mailto:jade@rubick.com" target="_top">Jade Rubick</a></p>
           OpenACS docs are written by the named authors, and may be edited
           by OpenACS documentation staff.
-        </div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id1036631"></a>Setting Permission on an OpenACS package</h3></div></div></div><p>After you've installed and mounted your package, you can
+        </div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id2978205"></a>Setting Permission on an OpenACS package</h3></div></div><div></div></div><p>After you've installed and mounted your package, you can
       configure each instance to act as you would like. </p><p>This is done from the Applications page. Log in, go to the
       Admin or Control Panel, click on the subsite the application is
       in, and click on Applications. If you click on the 'Permissions'
Index: openacs-4/packages/acs-core-docs/www/configuring-install-packages.html
===================================================================
RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/configuring-install-packages.html,v
diff -u -r1.3 -r1.3.4.1
--- openacs-4/packages/acs-core-docs/www/configuring-install-packages.html	17 Jul 2006 05:38:31 -0000	1.3
+++ openacs-4/packages/acs-core-docs/www/configuring-install-packages.html	3 Feb 2008 12:07:38 -0000	1.3.4.1
@@ -1,7 +1,8 @@
-<html><head><meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"><title>Installing OpenACS packages</title><meta name="generator" content="DocBook XSL Stylesheets V1.70.1"><link rel="home" href="index.html" title="OpenACS Core Documentation"><link rel="up" href="configuring-new-site.html" title="Chapter�4.�Configuring a new OpenACS Site"><link rel="previous" href="configuring-new-site.html" title="Chapter�4.�Configuring a new OpenACS Site"><link rel="next" href="configuring-mounting-packages.html" title="Mounting OpenACS packages"><link rel="stylesheet" href="openacs.css" type="text/css"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><a href="http://openacs.org"><img src="/doc/images/alex.jpg" border="0" alt="Alex logo"></a><table width="100%" summary="Navigation header" border="0"><tr><td width="20%" align="left"><a accesskey="p" href="configuring-new-site.html">Prev</a> </td><th width="60%" align="center">Chapter�4.�Configuring a new OpenACS Site</th><td width="20%" align="right"> <a accesskey="n" href="configuring-mounting-packages.html">Next</a></td></tr></table><hr></div><div class="sect1" lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="configuring-install-packages"></a>Installing OpenACS packages</h2></div></div></div><div class="authorblurb"><p>by <a href="mailto:jade@rubick.com" target="_top">Jade Rubick</a></p>
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html><head><meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"><title>Installing OpenACS packages</title><meta name="generator" content="DocBook XSL Stylesheets V1.60.1"><link rel="home" href="index.html" title="OpenACS Core Documentation"><link rel="up" href="configuring-new-site.html" title="Chapter�4.�Configuring a new OpenACS Site"><link rel="previous" href="configuring-new-site.html" title="Chapter�4.�Configuring a new OpenACS Site"><link rel="next" href="configuring-mounting-packages.html" title="Mounting OpenACS packages"><link rel="stylesheet" href="openacs.css" type="text/css"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><a href="http://openacs.org"><img src="/doc/images/alex.jpg" border="0" alt="Alex logo"></a><table width="100%" summary="Navigation header" border="0"><tr><td width="20%" align="left"><a accesskey="p" href="configuring-new-site.html">Prev</a> </td><th width="60%" align="center">Chapter�4.�Configuring a new OpenACS Site</th><td width="20%" align="right"> <a accesskey="n" href="configuring-mounting-packages.html">Next</a></td></tr></table><hr></div><div class="sect1" lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="configuring-install-packages"></a>Installing OpenACS packages</h2></div></div><div></div></div><div class="authorblurb"><p>by <a href="mailto:jade@rubick.com" target="_top">Jade Rubick</a></p>
           OpenACS docs are written by the named authors, and may be edited
           by OpenACS documentation staff.
-        </div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id1046773"></a>Installing OpenACS packages</h3></div></div></div><p>An OpenACS package extends your website and lets it do
+        </div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id2942671"></a>Installing OpenACS packages</h3></div></div><div></div></div><p>An OpenACS package extends your website and lets it do
       things it wasn't able to do before. You can have a weblog, a
       forums, a calendar, or even do sophisticated project-management
       via your website.</p><p>After you've installed OpenACS, you can congratulate
@@ -21,7 +22,7 @@
       you want depends on. If you're installing from Local Files, and
       you are missing any packages, you may have to add the packages
       your desired package depends on: 
-        <a href="upgrade-openacs-files.html" title="Upgrading the OpenACS files">the section called &#8220;Upgrading the OpenACS files&#8221;</a>
+        <a href="upgrade-openacs-files.html" title="Upgrading the OpenACS files">Section�, &#8220;Upgrading the OpenACS files&#8221;</a>
       </p><p>If you run into any errors at all, check your
       /var/lib/aolserver/$OPENACS_SERVICE_NAME/log/error.log file, and
       post your error on the OpenACS forums</p><p>Once the package has been installed, then you will need to
Index: openacs-4/packages/acs-core-docs/www/configuring-mounting-packages.html
===================================================================
RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/configuring-mounting-packages.html,v
diff -u -r1.3 -r1.3.4.1
--- openacs-4/packages/acs-core-docs/www/configuring-mounting-packages.html	17 Jul 2006 05:38:31 -0000	1.3
+++ openacs-4/packages/acs-core-docs/www/configuring-mounting-packages.html	3 Feb 2008 12:07:38 -0000	1.3.4.1
@@ -1,7 +1,8 @@
-<html><head><meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"><title>Mounting OpenACS packages</title><meta name="generator" content="DocBook XSL Stylesheets V1.70.1"><link rel="home" href="index.html" title="OpenACS Core Documentation"><link rel="up" href="configuring-new-site.html" title="Chapter�4.�Configuring a new OpenACS Site"><link rel="previous" href="configuring-install-packages.html" title="Installing OpenACS packages"><link rel="next" href="configuring-configuring-packages.html" title="Configuring an OpenACS package"><link rel="stylesheet" href="openacs.css" type="text/css"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><a href="http://openacs.org"><img src="/doc/images/alex.jpg" border="0" alt="Alex logo"></a><table width="100%" summary="Navigation header" border="0"><tr><td width="20%" align="left"><a accesskey="p" href="configuring-install-packages.html">Prev</a> </td><th width="60%" align="center">Chapter�4.�Configuring a new OpenACS Site</th><td width="20%" align="right"> <a accesskey="n" href="configuring-configuring-packages.html">Next</a></td></tr></table><hr></div><div class="sect1" lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="configuring-mounting-packages"></a>Mounting OpenACS packages</h2></div></div></div><div class="authorblurb"><p>by <a href="mailto:jade@rubick.com" target="_top">Jade Rubick</a></p>
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html><head><meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"><title>Mounting OpenACS packages</title><meta name="generator" content="DocBook XSL Stylesheets V1.60.1"><link rel="home" href="index.html" title="OpenACS Core Documentation"><link rel="up" href="configuring-new-site.html" title="Chapter�4.�Configuring a new OpenACS Site"><link rel="previous" href="configuring-install-packages.html" title="Installing OpenACS packages"><link rel="next" href="configuring-configuring-packages.html" title="Configuring an OpenACS package"><link rel="stylesheet" href="openacs.css" type="text/css"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><a href="http://openacs.org"><img src="/doc/images/alex.jpg" border="0" alt="Alex logo"></a><table width="100%" summary="Navigation header" border="0"><tr><td width="20%" align="left"><a accesskey="p" href="configuring-install-packages.html">Prev</a> </td><th width="60%" align="center">Chapter�4.�Configuring a new OpenACS Site</th><td width="20%" align="right"> <a accesskey="n" href="configuring-configuring-packages.html">Next</a></td></tr></table><hr></div><div class="sect1" lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="configuring-mounting-packages"></a>Mounting OpenACS packages</h2></div></div><div></div></div><div class="authorblurb"><p>by <a href="mailto:jade@rubick.com" target="_top">Jade Rubick</a></p>
           OpenACS docs are written by the named authors, and may be edited
           by OpenACS documentation staff.
-        </div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id1046387"></a>Mounting OpenACS packages</h3></div></div></div><p>After you've installed your packages, you have to 'mount'
+        </div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id2909513"></a>Mounting OpenACS packages</h3></div></div><div></div></div><p>After you've installed your packages, you have to 'mount'
       them in order to make them appear on your website.</p><p>Make sure you are logged in, and then click on the
       'Admin' or 'Control Panel' link to get to the Site-Wide
       Administration page (at /acs-admin). Click on the subsite you'd
Index: openacs-4/packages/acs-core-docs/www/configuring-new-site.html
===================================================================
RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/configuring-new-site.html,v
diff -u -r1.9 -r1.9.4.1
--- openacs-4/packages/acs-core-docs/www/configuring-new-site.html	17 Jul 2006 05:38:31 -0000	1.9
+++ openacs-4/packages/acs-core-docs/www/configuring-new-site.html	3 Feb 2008 12:07:38 -0000	1.9.4.1
@@ -1,4 +1,5 @@
-<html><head><meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"><title>Chapter�4.�Configuring a new OpenACS Site</title><meta name="generator" content="DocBook XSL Stylesheets V1.70.1"><link rel="home" href="index.html" title="OpenACS Core Documentation"><link rel="up" href="acs-admin.html" title="Part�II.�Administrator's Guide"><link rel="previous" href="mac-installation.html" title="OpenACS Installation Guide for Mac OS X"><link rel="next" href="configuring-install-packages.html" title="Installing OpenACS packages"><link rel="stylesheet" href="openacs.css" type="text/css"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><a href="http://openacs.org"><img src="/doc/images/alex.jpg" border="0" alt="Alex logo"></a><table width="100%" summary="Navigation header" border="0"><tr><td width="20%" align="left"><a accesskey="p" href="mac-installation.html">Prev</a> </td><th width="60%" align="center">Part�II.�Administrator's Guide</th><td width="20%" align="right"> <a accesskey="n" href="configuring-install-packages.html">Next</a></td></tr></table><hr></div><div class="chapter" lang="en"><div class="titlepage"><div><div><h2 class="title"><a name="configuring-new-site"></a>Chapter�4.�Configuring a new OpenACS Site</h2></div></div></div><div class="toc"><p><b>Table of Contents</b></p><dl><dt><span class="sect1"><a href="configuring-install-packages.html">Installing OpenACS packages</a></span></dt><dt><span class="sect1"><a href="configuring-mounting-packages.html">Mounting OpenACS packages</a></span></dt><dt><span class="sect1"><a href="configuring-configuring-packages.html">Configuring an OpenACS package</a></span></dt><dt><span class="sect1"><a href="configuring-configuring-permissions.html">Setting Permissions on an OpenACS package</a></span></dt><dt><span class="sect1"><a href="how-do-I.html">How Do I?</a></span></dt></dl></div><div class="authorblurb"><p>by <a href="mailto:joel@aufrecht.org" target="_top">Joel Aufrecht</a></p>
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html><head><meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"><title>Chapter�4.�Configuring a new OpenACS Site</title><meta name="generator" content="DocBook XSL Stylesheets V1.60.1"><link rel="home" href="index.html" title="OpenACS Core Documentation"><link rel="up" href="acs-admin.html" title="Part�II.�Administrator's Guide"><link rel="previous" href="mac-installation.html" title="OpenACS Installation Guide for Mac OS X"><link rel="next" href="configuring-install-packages.html" title="Installing OpenACS packages"><link rel="stylesheet" href="openacs.css" type="text/css"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><a href="http://openacs.org"><img src="/doc/images/alex.jpg" border="0" alt="Alex logo"></a><table width="100%" summary="Navigation header" border="0"><tr><td width="20%" align="left"><a accesskey="p" href="mac-installation.html">Prev</a> </td><th width="60%" align="center">Part�II.�Administrator's Guide</th><td width="20%" align="right"> <a accesskey="n" href="configuring-install-packages.html">Next</a></td></tr></table><hr></div><div class="chapter" lang="en"><div class="titlepage"><div><div><h2 class="title"><a name="configuring-new-site"></a>Chapter�4.�Configuring a new OpenACS Site</h2></div></div><div></div></div><div class="toc"><p><b>Table of Contents</b></p><dl><dt><a href="configuring-install-packages.html">Installing OpenACS packages</a></dt><dt><a href="configuring-mounting-packages.html">Mounting OpenACS packages</a></dt><dt><a href="configuring-configuring-packages.html">Configuring an OpenACS package</a></dt><dt><a href="configuring-configuring-permissions.html">Setting Permissions on an OpenACS package</a></dt><dt><a href="how-do-I.html">How Do I?</a></dt></dl></div><div class="authorblurb"><p>by <a href="mailto:joel@aufrecht.org" target="_top">Joel Aufrecht</a></p>
           OpenACS docs are written by the named authors, and may be edited
           by OpenACS documentation staff.
-        </div><p>In this chapter, <span class="strong"><strong>Configuring</strong></span> refers to making changes to a new OpenACS site through the web interface.  In crude terms, these changes happen in the database, and are upgrade-safe.  <span class="strong"><strong>Customizing</strong></span> refers to changes that touch the file system, and require some planning if easy upgradability is to be maintained.</p></div><div class="navfooter"><hr><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="mac-installation.html">Prev</a> </td><td width="20%" align="center"><a accesskey="h" href="index.html">Home</a></td><td width="40%" align="right"> <a accesskey="n" href="configuring-install-packages.html">Next</a></td></tr><tr><td width="40%" align="left">OpenACS Installation Guide for Mac OS X </td><td width="20%" align="center"><a accesskey="u" href="acs-admin.html">Up</a></td><td width="40%" align="right"> Installing OpenACS packages</td></tr></table><hr><address><a href="mailto:docs@openacs.org">docs@openacs.org</a></address></div><a name="comments"></a><center><a href="http://openacs.org/doc/current/configuring-new-site.html#comments">View comments on this page at openacs.org</a></center></body></html>
+        </div><p>In this chapter, <span class="strong">Configuring</span> refers to making changes to a new OpenACS site through the web interface.  In crude terms, these changes happen in the database, and are upgrade-safe.  <span class="strong">Customizing</span> refers to changes that touch the file system, and require some planning if easy upgradability is to be maintained.</p></div><div class="navfooter"><hr><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="mac-installation.html">Prev</a> </td><td width="20%" align="center"><a accesskey="h" href="index.html">Home</a></td><td width="40%" align="right"> <a accesskey="n" href="configuring-install-packages.html">Next</a></td></tr><tr><td width="40%" align="left">OpenACS Installation Guide for Mac OS X </td><td width="20%" align="center"><a accesskey="u" href="acs-admin.html">Up</a></td><td width="40%" align="right"> Installing OpenACS packages</td></tr></table><hr><address><a href="mailto:docs@openacs.org">docs@openacs.org</a></address></div><a name="comments"></a><center><a href="http://openacs.org/doc/current/configuring-new-site.html#comments">View comments on this page at openacs.org</a></center></body></html>
Index: openacs-4/packages/acs-core-docs/www/credits.html
===================================================================
RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/credits.html,v
diff -u -r1.41 -r1.41.4.1
--- openacs-4/packages/acs-core-docs/www/credits.html	17 Jul 2006 05:38:31 -0000	1.41
+++ openacs-4/packages/acs-core-docs/www/credits.html	3 Feb 2008 12:07:38 -0000	1.41.4.1
@@ -1,4 +1,5 @@
-<html><head><meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"><title>Appendix�C.�Credits</title><meta name="generator" content="DocBook XSL Stylesheets V1.70.1"><link rel="home" href="index.html" title="OpenACS Core Documentation"><link rel="up" href="acs-admin.html" title="Part�II.�Administrator's Guide"><link rel="previous" href="aolserver.html" title="Install AOLserver 3.3oacs1"><link rel="next" href="install-origins.html" title="Where did this document come from?"><link rel="stylesheet" href="openacs.css" type="text/css"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><a href="http://openacs.org"><img src="/doc/images/alex.jpg" border="0" alt="Alex logo"></a><table width="100%" summary="Navigation header" border="0"><tr><td width="20%" align="left"><a accesskey="p" href="aolserver.html">Prev</a> </td><th width="60%" align="center">Part�II.�Administrator's Guide</th><td width="20%" align="right"> <a accesskey="n" href="install-origins.html">Next</a></td></tr></table><hr></div><div class="appendix" lang="en"><div class="titlepage"><div><div><h2 class="title"><a name="credits"></a>Appendix�C.�Credits</h2></div></div></div><div class="toc"><p><b>Table of Contents</b></p><dl><dt><span class="section"><a href="install-origins.html">Where did this document come from?</a></span></dt><dt><span class="section"><a href="os-install.html">Linux Install Guides</a></span></dt><dt><span class="section"><a href="os-security.html">Security Information</a></span></dt><dt><span class="section"><a href="install-resources.html">Resources</a></span></dt></dl></div><div class="authorblurb"><p>By <a href="mailto:vinod@kurup.com" target="_top">Vinod Kurup</a></p>
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html><head><meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"><title>Appendix�C.�Credits</title><meta name="generator" content="DocBook XSL Stylesheets V1.60.1"><link rel="home" href="index.html" title="OpenACS Core Documentation"><link rel="up" href="acs-admin.html" title="Part�II.�Administrator's Guide"><link rel="previous" href="aolserver.html" title="Install AOLserver 3.3oacs1"><link rel="next" href="install-origins.html" title="Where did this document come from?"><link rel="stylesheet" href="openacs.css" type="text/css"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><a href="http://openacs.org"><img src="/doc/images/alex.jpg" border="0" alt="Alex logo"></a><table width="100%" summary="Navigation header" border="0"><tr><td width="20%" align="left"><a accesskey="p" href="aolserver.html">Prev</a> </td><th width="60%" align="center">Part�II.�Administrator's Guide</th><td width="20%" align="right"> <a accesskey="n" href="install-origins.html">Next</a></td></tr></table><hr></div><div class="appendix" lang="en"><div class="titlepage"><div><div><h2 class="title"><a name="credits"></a>Appendix�C.�Credits</h2></div></div><div></div></div><div class="toc"><p><b>Table of Contents</b></p><dl><dt><a href="install-origins.html">Where did this document come from?</a></dt><dt><a href="os-install.html">Linux Install Guides</a></dt><dt><a href="os-security.html">Security Information</a></dt><dt><a href="install-resources.html">Resources</a></dt></dl></div><div class="authorblurb"><p>By <a href="mailto:vinod@kurup.com" target="_top">Vinod Kurup</a></p>
           OpenACS docs are written by the named authors, and may be edited
           by OpenACS documentation staff.
         </div><p><a href="mailto:vinod@kurup.com" target="_top">Vinod Kurup</a> put
@@ -30,6 +31,6 @@
 	Fred Yankowski, Dan Chak, Sebastiano Pilla, Reuven Lerner, Malte
 	Sussdorff, Stan Kaufman and Pascal Scheffers.
   </p><p>
-    <span class="strong"><strong>All questions and comments</strong></span> regarding
+    <span class="strong">All questions and comments</span> regarding
     this guide should be posted on the <a href="http://openacs.org/forums/" target="_top">OpenACS forums</a>.
   </p><div class="cvstag">($Id$)</div></div><div class="navfooter"><hr><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="aolserver.html">Prev</a> </td><td width="20%" align="center"><a accesskey="h" href="index.html">Home</a></td><td width="40%" align="right"> <a accesskey="n" href="install-origins.html">Next</a></td></tr><tr><td width="40%" align="left">Install AOLserver 3.3oacs1 </td><td width="20%" align="center"><a accesskey="u" href="acs-admin.html">Up</a></td><td width="40%" align="right"> Where did this document come from?</td></tr></table><hr><address><a href="mailto:docs@openacs.org">docs@openacs.org</a></address></div><a name="comments"></a><center><a href="http://openacs.org/doc/current/credits.html#comments">View comments on this page at openacs.org</a></center></body></html>
Index: openacs-4/packages/acs-core-docs/www/cvs-guidelines.html
===================================================================
RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/cvs-guidelines.html,v
diff -u -r1.4 -r1.4.4.1
--- openacs-4/packages/acs-core-docs/www/cvs-guidelines.html	17 Jul 2006 05:38:31 -0000	1.4
+++ openacs-4/packages/acs-core-docs/www/cvs-guidelines.html	3 Feb 2008 12:07:38 -0000	1.4.4.1
@@ -1,36 +1,37 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
 <html><head><meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"><title>
     CVS Guidelines
-  </title><meta name="generator" content="DocBook XSL Stylesheets V1.70.1"><link rel="home" href="index.html" title="OpenACS Core Documentation"><link rel="up" href="eng-standards.html" title="Chapter�12.�Engineering Standards"><link rel="previous" href="style-guide.html" title="OpenACS Style Guide"><link rel="next" href="eng-standards-versioning.html" title="Release Version Numbering"><link rel="stylesheet" href="openacs.css" type="text/css"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><a href="http://openacs.org"><img src="/doc/images/alex.jpg" border="0" alt="Alex logo"></a><table width="100%" summary="Navigation header" border="0"><tr><td width="20%" align="left"><a accesskey="p" href="style-guide.html">Prev</a> </td><th width="60%" align="center">Chapter�12.�Engineering Standards</th><td width="20%" align="right"> <a accesskey="n" href="eng-standards-versioning.html">Next</a></td></tr></table><hr></div><div class="sect1" lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="cvs-guidelines"></a>
+  </title><meta name="generator" content="DocBook XSL Stylesheets V1.60.1"><link rel="home" href="index.html" title="OpenACS Core Documentation"><link rel="up" href="eng-standards.html" title="Chapter�12.�Engineering Standards"><link rel="previous" href="style-guide.html" title="OpenACS Style Guide"><link rel="next" href="eng-standards-versioning.html" title="Release Version Numbering"><link rel="stylesheet" href="openacs.css" type="text/css"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><a href="http://openacs.org"><img src="/doc/images/alex.jpg" border="0" alt="Alex logo"></a><table width="100%" summary="Navigation header" border="0"><tr><td width="20%" align="left"><a accesskey="p" href="style-guide.html">Prev</a> </td><th width="60%" align="center">Chapter�12.�Engineering Standards</th><td width="20%" align="right"> <a accesskey="n" href="eng-standards-versioning.html">Next</a></td></tr></table><hr></div><div class="sect1" lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="cvs-guidelines"></a>
     CVS Guidelines
-  </h2></div></div></div><div class="authorblurb"><div class="cvstag">($Id$)</div><p>
+  </h2></div></div><div></div></div><div class="authorblurb"><div class="cvstag">($Id$)</div><p>
       By Joel Aufrecht with input from Jeff Davis, Branimir Dolicki, and Jade Rubick.
     </p>
           OpenACS docs are written by the named authors, and may be edited
           by OpenACS documentation staff.
-        </div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="using-cvs-with-openacs"></a>Using CVS with OpenACS</h3></div></div></div><div class="sect3" lang="en"><div class="titlepage"><div><div><h4 class="title"><a name="id939431"></a>Getting Started</h4></div></div></div><p>
+        </div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="using-cvs-with-openacs"></a>Using CVS with OpenACS</h3></div></div><div></div></div><div class="sect3" lang="en"><div class="titlepage"><div><div><h4 class="title"><a name="id3061397"></a>Getting Started</h4></div></div><div></div></div><p>
         All OpenACS code is available anonymously.  To get code
       anonymously, use the parameter
-      <code class="computeroutput">-d:pserver:anonymous@cvs.openacs.org:/cvsroot</code> immediately after <code class="computeroutput">cvs</code> in a cvs command to check out or export code.
+      <tt class="computeroutput">-d:pserver:anonymous@cvs.openacs.org:/cvsroot</tt> immediately after <tt class="computeroutput">cvs</tt> in a cvs command to check out or export code.
       </p><p>
         If you are an OpenACS developer, you should check out code so
         that you or any other developer can commit it.  To do this, use
         the parameter
-        <code class="computeroutput">-d:ext:cvs.openacs.org:/cvsroot</code>
-        immediately after <code class="computeroutput">cvs</code> in
+        <tt class="computeroutput">-d:ext:cvs.openacs.org:/cvsroot</tt>
+        immediately after <tt class="computeroutput">cvs</tt> in
         checkout commands.  This will create a local checkout directory
         that uses cvs.openacs.org but does not specify the user.  By
         default, it will use your local account name as the user, so if
-        you are logged in as "foobar" it will try to check out and
+        you are logged in as &quot;foobar&quot; it will try to check out and
         commit as if you had specified
-        <code class="computeroutput">:ext:foobar@cvs.openacs.org:/cvsroot</code>.  The advantage of not specifying a user in the checkout command is that other users can work in the directory using their own accounts.
+        <tt class="computeroutput">:ext:foobar@cvs.openacs.org:/cvsroot</tt>.  The advantage of not specifying a user in the checkout command is that other users can work in the directory using their own accounts.
       </p><p>
         OpenACS.org supports non-anonymous cvs access only over ssh, so you
-        must have <code class="computeroutput">CVS_RSH=ssh</code> in your
+        must have <tt class="computeroutput">CVS_RSH=ssh</tt> in your
         environment.  (Typically this is accomplished by putting
-        <code class="computeroutput">export CVS_RSH=ssh</code> into
-        <code class="computeroutput">~/.bash_profile</code>.).  If your local
+        <tt class="computeroutput">export CVS_RSH=ssh</tt> into
+        <tt class="computeroutput">~/.bash_profile</tt>.).  If your local
         account name does not match your cvs.openacs.org account name, create a
-        file <code class="computeroutput">~/.ssh/config</code> with an entry
+        file <tt class="computeroutput">~/.ssh/config</tt> with an entry
         like:
       </p><pre class="programlisting">Host cvs.openacs.org
     User joel
@@ -42,55 +43,55 @@
       </p><p>
         You may want to set some more default actions for CVS usage.
   To do so, create the file
-        <code class="computeroutput">~/.cvsrc</code> with the contents:
+        <tt class="computeroutput">~/.cvsrc</tt> with the contents:
       </p><pre class="screen"><span class="action"><span class="action">cvs -z6
-cvs -q</span></span></pre><p><code class="computeroutput">-z6</code> speeds up cvs access over the network quite a bit by enabling compressed
-        connection by default.  <code class="computeroutput">-q</code> suppresses some verbose output from commands.  For example, it makes the output of <code class="computeroutput">cvs up</code> much easier to read.</p><div class="sidebar"><p>Administrator Note: These are the steps to grant CVS commit rights to a user:</p><div class="orderedlist"><ol type="1"><li><p>Create the user's account.  On cvs.openacs.org:</p><pre class="screen"><span class="action"><span class="action">sudo bash
-/usr/sbin/useradd -c "<span class="replaceable"><span class="replaceable">Real Name</span></span>" -G cvs -p <span class="replaceable"><span class="replaceable">passwd</span></span> <span class="replaceable"><span class="replaceable">username</span></span>
+cvs -q</span></span></pre><p><tt class="computeroutput">-z6</tt> speeds up cvs access over the network quite a bit by enabling compressed
+        connection by default.  <tt class="computeroutput">-q</tt> suppresses some verbose output from commands.  For example, it makes the output of <tt class="computeroutput">cvs up</tt> much easier to read.</p><div class="sidebar"><p>Administrator Note: These are the steps to grant CVS commit rights to a user:</p><div class="orderedlist"><ol type="1"><li><p>Create the user's account.  On cvs.openacs.org:</p><pre class="screen"><span class="action"><span class="action">sudo bash
+/usr/sbin/useradd -c &quot;<span class="replaceable"><span class="replaceable">Real Name</span></span>&quot; -G cvs -p <span class="replaceable"><span class="replaceable">passwd</span></span> <span class="replaceable"><span class="replaceable">username</span></span>
 /usr/sbin/usermod -G cvs,<span class="replaceable"><span class="replaceable">username</span></span> <span class="replaceable"><span class="replaceable">username</span></span>
           </span></span></pre></li><li><p>Grant cvs access to the user account.  On any machine, in a temporary directory:</p><pre class="screen"><span class="action"><span class="action">cvs -d :ext:cvs.openacs.org:/cvsroot co CVSROOT
 cd CVSROOT
-emacs avail</span></span></pre><p>Add an avail line of the form:</p><pre class="programlisting">avail|<span class="replaceable"><span class="replaceable">username</span></span>|openacs-4</pre><pre class="screen"><span class="action"><span class="action">cvs commit -m "added commit on X for username" avail</span></span></pre></li></ol></div></div><div class="sidebar"><p>Branimir suggests an additional level of abstraction.  If you put</p><pre class="programlisting">Host cvs-server
+emacs avail</span></span></pre><p>Add an avail line of the form:</p><pre class="programlisting">avail|<span class="replaceable"><span class="replaceable">username</span></span>|openacs-4</pre><pre class="screen"><span class="action"><span class="action">cvs commit -m &quot;added commit on X for username&quot; avail</span></span></pre></li></ol></div></div><div class="sidebar"><p>Branimir suggests an additional level of abstraction.  If you put</p><pre class="programlisting">Host cvs-server
       HostName cvs.openacs.org
-      User <span class="replaceable"><span class="replaceable">yournamehere</span></span></pre><p>into your <code class="computeroutput">~/.ssh/config</code> file, then you can use <code class="computeroutput">-d :ext:cvs-server:/cvsroot</code> instead of <code class="computeroutput">-d :ext:cvs.openacs.org:/cvsroot</code>.  You can then change the definition of <code class="computeroutput">cvs-server</code> by changing one file instead of editing hundreds of <code class="computeroutput">CVSROOT/Repository</code> files.</p></div></div><div class="sect3" lang="en"><div class="titlepage"><div><div><h4 class="title"><a name="id1012522"></a>Checkout for Package Development</h4></div></div></div><p>If you are actively developing a non-core package, you
+      User <span class="replaceable"><span class="replaceable">yournamehere</span></span></pre><p>into your <tt class="computeroutput">~/.ssh/config</tt> file, then you can use <tt class="computeroutput">-d :ext:cvs-server:/cvsroot</tt> instead of <tt class="computeroutput">-d :ext:cvs.openacs.org:/cvsroot</tt>.  You can then change the definition of <tt class="computeroutput">cvs-server</tt> by changing one file instead of editing hundreds of <tt class="computeroutput">CVSROOT/Repository</tt> files.</p></div></div><div class="sect3" lang="en"><div class="titlepage"><div><div><h4 class="title"><a name="id3069150"></a>Checkout for Package Development</h4></div></div><div></div></div><p>If you are actively developing a non-core package, you
       should work from the latest core release branch.  Currently this
-      is oacs-5-2.  This ensures that you are working on top
+      is oacs-5-4.  This ensures that you are working on top
       of a stable OpenACS core, but still allows you to commit feature
-      changes to non-core packages.  To check out all packages,</p><pre class="screen"><span class="action"><span class="action">cvs -d :ext:cvs.openacs.org:/cvsroot co -r oacs-5-2 openacs-4</span></span></pre><p>If you work in the directories created with this command, all of your
-            cvs updates and commits will be confined to the oacs-5-2
+      changes to non-core packages.  To check out all packages,</p><pre class="screen"><span class="action"><span class="action">cvs -d :ext:cvs.openacs.org:/cvsroot co -r oacs-5-4 openacs-4</span></span></pre><p>If you work in the directories created with this command, all of your
+            cvs updates and commits will be confined to the oacs-5-4
             branch.  Your work will be merged back to HEAD for you
             with each release.</p><p>Because the entire openacs-4 directory is large, you may
       want to use only acs-core plus some specific modules.  To do
-      this, check out core first:</p><pre class="screen"><span class="action"><span class="action">cvs -d:ext:cvs.openacs.org:/cvsroot -r oacs-5-2 checkout acs-core</span></span></pre><p>Then add modules as needed:</p><pre class="screen"><span class="action"><span class="action">cd /var/lib/aolserver/<span class="replaceable"><span class="replaceable">service0</span></span>/packages
+      this, check out core first:</p><pre class="screen"><span class="action"><span class="action">cvs -d:ext:cvs.openacs.org:/cvsroot -r oacs-5-4 checkout acs-core</span></span></pre><p>Then add modules as needed:</p><pre class="screen"><span class="action"><span class="action">cd /var/lib/aolserver/<span class="replaceable"><span class="replaceable">service0</span></span>/packages
 cvs up -d <span class="replaceable"><span class="replaceable">packagename</span></span></span></span></pre><p>... where <span class="replaceable"><span class="replaceable">packagename</span></span> is the
             name of the package you want. Visit the <a href="http://openacs.org/packages" target="_top"> Package
             Inventory</a> and <a href="http://openacs.org/projects/openacs/packages/" target="_top">Package
             maintainers and status</a> for a list of available
             packages and their current state.
-      </p></div><div class="sect3" lang="en"><div class="titlepage"><div><div><h4 class="title"><a name="id943009"></a>Checkout for Core Development</h4></div></div></div><p>If you are actively developing packages in the OpenACS
+      </p></div><div class="sect3" lang="en"><div class="titlepage"><div><div><h4 class="title"><a name="id3057847"></a>Checkout for Core Development</h4></div></div><div></div></div><p>If you are actively developing packages in the OpenACS
       Core, work from the HEAD branch.  HEAD is used for active
               development of the next version of core OpenACS. It may be very
               buggy; it may not even install correctly. Do not use this branch for
               development of non-core features unless your work depends on some
               of the HEAD core work. To check out HEAD, omit the
-              <code class="computeroutput">-r</code> tag.</p><p></p><p>To check out HEAD for development, which requires an OpenACS developer account:</p><pre class="screen"><span class="action"><span class="action">cvs -d:ext:cvs.openacs.org:/cvsroot checkout acs-core</span></span></pre><p>To check out HEAD anonymously:</p><pre class="screen"><span class="action"><span class="action">cvs -d:pserver:anonymous@cvs.openacs.org:/cvsroot checkout acs-core</span></span></pre></div><div class="sect3" lang="en"><div class="titlepage"><div><div><h4 class="title"><a name="id1146382"></a>Checkout .LRN</h4></div></div></div><p>
+              <tt class="computeroutput">-r</tt> tag.</p><p></p><p>To check out HEAD for development, which requires an OpenACS developer account:</p><pre class="screen"><span class="action"><span class="action">cvs -d:ext:cvs.openacs.org:/cvsroot checkout acs-core</span></span></pre><p>To check out HEAD anonymously:</p><pre class="screen"><span class="action"><span class="action">cvs -d:pserver:anonymous@cvs.openacs.org:/cvsroot checkout acs-core</span></span></pre></div><div class="sect3" lang="en"><div class="titlepage"><div><div><h4 class="title"><a name="id3057912"></a>Checkout .LRN</h4></div></div><div></div></div><p>
         .LRN consists of a given version openacs core, plus a set of
         packages. These are collectively packages together to form a
         distrubution of .LRN. F .LRN 2.0.0 sits on top of OpenACS 5.0.0.
         .LRN also uses an OpenACS install.xml file during installation;
         this file is distributed within the dotlrn package and must be
         moved. To get a development checkout of .LRN in the subdirectory
-        <code class="literal">dotlrn</code>:
-      </p><pre class="screen"><span class="action"><span class="action">cvs -d :pserver:anonymous@cvs.openacs.org:/cvsroot checkout -r oacs-5-2 acs-core
+        <tt class="literal">dotlrn</tt>:
+      </p><pre class="screen"><span class="action"><span class="action">cvs -d :pserver:anonymous@cvs.openacs.org:/cvsroot checkout -r oacs-5-4 acs-core
 mv openacs-4 dotlrn
 cd dotlrn/packages
-cvs -d :pserver:anonymous@cvs.openacs.org:/cvsroot checkout -r oacs-5-2 dotlrn-all
-mv dotlrn/install.xml ..</span></span></pre></div><div class="sect3" lang="en"><div class="titlepage"><div><div><h4 class="title"><a name="working-with-cvs"></a>Working with CVS</h4></div></div></div><p>
+cvs -d :pserver:anonymous@cvs.openacs.org:/cvsroot checkout -r oacs-5-4 dotlrn-all
+mv dotlrn/install.xml ..</span></span></pre></div><div class="sect3" lang="en"><div class="titlepage"><div><div><h4 class="title"><a name="working-with-cvs"></a>Working with CVS</h4></div></div><div></div></div><p>
       Once you have a checkout you can use some commands to track
-      what has changed since you checked out your copy.  <code class="computeroutput">cvs -n update</code> does not change any files, but reports which changes have been updated or locally modified, or are not present in CVS.
-    </p><p>To update your files, use <code class="computeroutput">cvs update</code>.  This will merge changes from the repository with your local files.  It has no effect on the cvs.openacs.org repository.</p></div></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="openacs-cvs-concepts"></a>OpenACS CVS Concepts</h3></div></div></div><div class="sect3" lang="en"><div class="titlepage"><div><div><h4 class="title"><a name="id1147797"></a>Modules</h4></div></div></div><p>
-        All OpenACS code resides within a single CVS module, <code class="computeroutput">openacs-4</code>.  (The openacs-4 directory contains code for all versions of OpenACS 4 and later, and .LRN 1 and later.)   Checking out this module retrieves all openacs code of any type.  For convenience, subsets of <code class="computeroutput">openacs-4</code> are repackaged as smaller modules.</p><p>
-          <code class="computeroutput">acs-core</code> contains only critical common
+      what has changed since you checked out your copy.  <tt class="computeroutput">cvs -n update</tt> does not change any files, but reports which changes have been updated or locally modified, or are not present in CVS.
+    </p><p>To update your files, use <tt class="computeroutput">cvs update</tt>.  This will merge changes from the repository with your local files.  It has no effect on the cvs.openacs.org repository.</p></div></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="openacs-cvs-concepts"></a>OpenACS CVS Concepts</h3></div></div><div></div></div><div class="sect3" lang="en"><div class="titlepage"><div><div><h4 class="title"><a name="id3058006"></a>Modules</h4></div></div><div></div></div><p>
+        All OpenACS code resides within a single CVS module, <tt class="computeroutput">openacs-4</tt>.  (The openacs-4 directory contains code for all versions of OpenACS 4 and later, and .LRN 1 and later.)   Checking out this module retrieves all openacs code of any type.  For convenience, subsets of <tt class="computeroutput">openacs-4</tt> are repackaged as smaller modules.</p><p>
+          <tt class="computeroutput">acs-core</tt> contains only critical common
           packages. It does not have any user applications, such as forums,
           bug-tracker, calendar, or ecommerce.  These can be added at
           any time.
@@ -111,29 +112,29 @@
 acs-tcl
 acs-templating 
 ref-timezones search</pre><p>
-          <code class="computeroutput">dotlrn-all</code> contains the packages required, in combination with acs-core, to run the .LRN system.
+          <tt class="computeroutput">dotlrn-all</tt> contains the packages required, in combination with acs-core, to run the .LRN system.
         </p><p>
-          <code class="computeroutput">project-manager-all</code> contains the packages required, in combination with acs-core, to run the project-manager package.
+          <tt class="computeroutput">project-manager-all</tt> contains the packages required, in combination with acs-core, to run the project-manager package.
         </p><p>
-          Each OpenACS package (i.e., directory in <code class="computeroutput">openacs-4/packages/</code>) is also aliased as a module of the same name.
-        </p></div><div class="sect3" lang="en"><div class="titlepage"><div><div><h4 class="title"><a name="id1039860"></a>
+          Each OpenACS package (i.e., directory in <tt class="computeroutput">openacs-4/packages/</tt>) is also aliased as a module of the same name.
+        </p></div><div class="sect3" lang="en"><div class="titlepage"><div><div><h4 class="title"><a name="id3058109"></a>
         Tags and Branches
-      </h4></div></div></div><p>
+      </h4></div></div><div></div></div><p>
         Tags and Branches look similar in commands, but behave differently. A tag is a fixed point on a branch.  Check out
             a tag to get a specific version of OpenACS. Check out a branch to
             get the most current code for that major-minor version (e.g., 5.0.x
             or 5.1.x). You can only commit to a branch, not a tag, so check out
-            a branch if you will be working on the code. </p><div class="itemizedlist"><ul type="disc"><li><p><code class="computeroutput">openacs-<span class="replaceable"><span class="replaceable">x</span></span>-<span class="replaceable"><span class="replaceable">y</span></span>-<span class="replaceable"><span class="replaceable">z</span></span>-final</code>
-            tags mark final releases of OpenACS.  This tag is applied to the acs-core files for an OpenACS core release, and to the latest released versions of all other packages at the time of release.  Example: <code class="computeroutput">openacs-5-0-4-final</code>.
-                </p></li><li><p><code class="computeroutput">dotlrn-<span class="replaceable"><span class="replaceable">x</span></span>-<span class="replaceable"><span class="replaceable">y</span></span>-<span class="replaceable"><span class="replaceable">z</span></span>-final</code>
-            tags mark final releases of .LRN.  These tags apply only to .LRN packages.  Example: <code class="computeroutput">dotlrn-2-0-1-final</code>
-                </p></li><li><p><code class="computeroutput"><span class="replaceable"><span class="replaceable">packagename</span></span>-<span class="replaceable"><span class="replaceable">x</span></span>-<span class="replaceable"><span class="replaceable">y</span></span>-<span class="replaceable"><span class="replaceable">z</span></span>-final</code>
-                  tags apply to releases of individual packages.  For example, <code class="computeroutput">calendar-2-0-0-final</code> is a tag that will retrieve only the files in the calendar 2.0.0 release. It applies only to the
+            a branch if you will be working on the code. </p><div class="itemizedlist"><ul type="disc"><li><p><tt class="computeroutput">openacs-<span class="replaceable"><span class="replaceable">x</span></span>-<span class="replaceable"><span class="replaceable">y</span></span>-<span class="replaceable"><span class="replaceable">z</span></span>-final</tt>
+            tags mark final releases of OpenACS.  This tag is applied to the acs-core files for an OpenACS core release, and to the latest released versions of all other packages at the time of release.  Example: <tt class="computeroutput">openacs-5-0-4-final</tt>.
+                </p></li><li><p><tt class="computeroutput">dotlrn-<span class="replaceable"><span class="replaceable">x</span></span>-<span class="replaceable"><span class="replaceable">y</span></span>-<span class="replaceable"><span class="replaceable">z</span></span>-final</tt>
+            tags mark final releases of .LRN.  These tags apply only to .LRN packages.  Example: <tt class="computeroutput">dotlrn-2-0-1-final</tt>
+                </p></li><li><p><tt class="computeroutput"><span class="replaceable"><span class="replaceable">packagename</span></span>-<span class="replaceable"><span class="replaceable">x</span></span>-<span class="replaceable"><span class="replaceable">y</span></span>-<span class="replaceable"><span class="replaceable">z</span></span>-final</tt>
+                  tags apply to releases of individual packages.  For example, <tt class="computeroutput">calendar-2-0-0-final</tt> is a tag that will retrieve only the files in the calendar 2.0.0 release. It applies only to the
                   calendar package. All non-core, non-dotlrn packages should have a
                   tag of this style, based on the package name. Many packages have
                   not been re-released since the new naming convention was adopted
                   and so don't have a tag of this type.
-                </p></li><li><p><code class="computeroutput">openacs-<span class="replaceable"><span class="replaceable">x</span></span>-<span class="replaceable"><span class="replaceable">y</span></span>-compat</code> tags point to the most recent released version of OpenACS <span class="replaceable"><span class="replaceable">X</span></span>.<span class="replaceable"><span class="replaceable">Y</span></span>.
+                </p></li><li><p><tt class="computeroutput">openacs-<span class="replaceable"><span class="replaceable">x</span></span>-<span class="replaceable"><span class="replaceable">y</span></span>-compat</tt> tags point to the most recent released version of OpenACS <span class="replaceable"><span class="replaceable">X</span></span>.<span class="replaceable"><span class="replaceable">Y</span></span>.
             It is similar to openacs-x-y-z-compat, except that it will
             always get the most recent dot-release of Core and the
             most recent compatible, released version of all other
@@ -154,9 +155,9 @@
             packages, release branches are the recommended location
             for development.  For example, if you are working on
             calendar, which is compatible with openacs 5.0 but not
-                5.1, work on the oacs-5-0 branch.</p></li><li><p><code class="computeroutput">HEAD</code> is a branch used
-          for development of core packages.</p></li></ul></div></div></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="contributing-code"></a>Contributing code back to OpenACS</h3></div></div></div><p>There are three main ways to contribute code to OpenACS:</p><div class="orderedlist"><ol type="1"><li><p>To contribute a small fix, if you do not have a developer account, submit a <a href="http://openacs.org/bugtracker/openacs/patch-submission-instructions.htm" target="_top">patch</a>.</p></li><li><p>If you are making many changes, or would like to become a direct contributor, send mail to <a href="mailto:oct@openacs.org" target="_top">the Core Team</a> asking for commit rights.  You can then commit code directly to the repository:</p><div class="orderedlist"><ol type="a"><li><p>Use one of the checkout methods described above to get files to your system.  This takes the place of steps 1 and 2 in <a href="openacs.html#install-from-tarball" title="Installation Option 2: Install from tarball">the section called &#8220;Installation Option 2: Install from tarball&#8221;</a>.  Continue setting up the site as described there.</p></li><li><p>Fix bugs and add features.</p></li><li><p>
-            Commit that file (or files): </p><pre class="screen"><span class="action"><span class="action">cvs commit -m "what I did and why" filename</span></span></pre><p>
+                5.1, work on the oacs-5-0 branch.</p></li><li><p><tt class="computeroutput">HEAD</tt> is a branch used
+          for development of core packages.</p></li></ul></div></div></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="contributing-code"></a>Contributing code back to OpenACS</h3></div></div><div></div></div><p>There are three main ways to contribute code to OpenACS:</p><div class="orderedlist"><ol type="1"><li><p>To contribute a small fix, if you do not have a developer account, submit a <a href="http://openacs.org/bugtracker/openacs/patch-submission-instructions.htm" target="_top">patch</a>.</p></li><li><p>If you are making many changes, or would like to become a direct contributor, send mail to <a href="mailto:oct@openacs.org" target="_top">the Core Team</a> asking for commit rights.  You can then commit code directly to the repository:</p><div class="orderedlist"><ol type="a"><li><p>Use one of the checkout methods described above to get files to your system.  This takes the place of steps 1 and 2 in <a href="openacs.html#install-from-tarball" title="Installation Option 2: Install from tarball">Section�, &#8220;Installation Option 2: Install from tarball&#8221;</a>.  Continue setting up the site as described there.</p></li><li><p>Fix bugs and add features.</p></li><li><p>
+            Commit that file (or files): </p><pre class="screen"><span class="action"><span class="action">cvs commit -m &quot;what I did and why&quot; filename</span></span></pre><p>
             Because this occurs in your personal checkout and not an anonymous
             one, this commit automagically moves back upstream to the Mother
             Ship repository at cvs.openacs.org.  The names of the changed files, and your comments, are sent to a mailing list for OpenACS developers.  A Core Team developer may review or roll back your changes if necessary.
@@ -167,18 +168,18 @@
                 </p></li></ol></div></li><li><p>Add a new package.  Contact the <a href="mailto:oct@openacs.org" target="_top">Core Team</a> to get approval and to get a module alias created.</p><div class="orderedlist"><ol type="a"><li><p>
                 Check out acs-core on the HEAD branch.  (Weird things happen if you add files to a branch but not to HEAD):</p><pre class="screen"><span class="action"><span class="action">cd /tmp
 cvs -d:ext:cvs.openacs.org:/cvsroot checkout acs-core</span></span></pre><p>Copy your package directory from your working directory to this directory.  Make sure not to copy any CVS directories.</p><pre class="screen"><span class="action"><span class="action">cp -r /var/lib/aolserver/<span class="replaceable"><span class="replaceable">service0</span></span>/packages/<span class="replaceable"><span class="replaceable">newpackage</span></span> /tmp/openacs-4/packages</span></span></pre><p>Import the package into the cvs.openacs.org cvs repository:</p><pre class="screen"><span class="action"><span class="action">cd /tmp/openacs-4/packages/<span class="replaceable"><span class="replaceable">newpackage</span></span>
-cvs import -m "Initial import of <span class="replaceable"><span class="replaceable">newpackage</span></span>" openacs-4/packages/newpackage <span class="replaceable"><span class="replaceable">myname</span></span> <span class="replaceable"><span class="replaceable">newpackage-0-1d</span></span></span></span></pre></li><li><p>Add the new package to the modules file. (An administrator has to do this step.)  On any machine, in a temporary directory:</p><pre class="screen"><span class="action"><span class="action">cvs -d :ext:cvs.openacs.org:/cvsroot co CVSROOT
+cvs import -m &quot;Initial import of <span class="replaceable"><span class="replaceable">newpackage</span></span>&quot; openacs-4/packages/newpackage <span class="replaceable"><span class="replaceable">myname</span></span> <span class="replaceable"><span class="replaceable">newpackage-0-1d</span></span></span></span></pre></li><li><p>Add the new package to the modules file. (An administrator has to do this step.)  On any machine, in a temporary directory:</p><pre class="screen"><span class="action"><span class="action">cvs -d :ext:cvs.openacs.org:/cvsroot co CVSROOT
 cd CVSROOT
-emacs modules</span></span></pre><p>Add a line of the form:</p><pre class="programlisting"><span class="replaceable"><span class="replaceable">photo-album-portlet</span></span> openacs-4/packages/<span class="replaceable"><span class="replaceable">photo-album-portlet</span></span></pre><p>Commit the change:</p><pre class="screen"><span class="action"><span class="action">cvs commit -m "added alias for package <span class="replaceable"><span class="replaceable">newpackage</span></span>" modules</span></span></pre><p>This should print something like:</p><div class="literallayout"><p>cvs�commit:�Examining�.<br>
+emacs modules</span></span></pre><p>Add a line of the form:</p><pre class="programlisting"><span class="replaceable"><span class="replaceable">photo-album-portlet</span></span> openacs-4/packages/<span class="replaceable"><span class="replaceable">photo-album-portlet</span></span></pre><p>Commit the change:</p><pre class="screen"><span class="action"><span class="action">cvs commit -m &quot;added alias for package <span class="replaceable"><span class="replaceable">newpackage</span></span>&quot; modules</span></span></pre><p>This should print something like:</p><div class="literallayout"><p>cvs�commit:�Examining�.<br>
 ****�Access�allowed:�Personal�Karma�exceeds�Environmental�Karma.<br>
 Checking�in�modules;<br>
 /cvsroot/CVSROOT/modules,v��&lt;--��modules<br>
 new�revision:�1.94;�previous�revision:�1.93<br>
 done<br>
 cvs�commit:�Rebuilding�administrative�file�database</p></div></li><li><p>Although you should add your package on HEAD, you should do package development on the latest release branch that your code is compatible with.  So, after completing the import, you may want to branch your package:</p><pre class="programlisting">cd /var/lib/aolserver/<span class="replaceable"><span class="replaceable">service0</span></span>/packages/<span class="replaceable"><span class="replaceable">newpackage</span></span>
-cvs tag -b <span class="replaceable"><span class="replaceable">oacs-5-1</span></span></pre></li><li><p>See <a href="releasing-package.html" title="How to package and release an OpenACS Package">the section called &#8220;How to package and release an OpenACS Package&#8221;</a></p></li></ol></div><div class="note" style="margin-left: 0.5in; margin-right: 0.5in;"><h3 class="title">Note</h3><p>Some packages are already in cvs at <code class="computeroutput">openacs-4/contrib/packages</code>.  Starting with OpenACS 5.1, we have a Maturity mechanism in the APM which makes the <code class="computeroutput">contrib</code> directory un-necessary.  If you are working on a <code class="computeroutput">contrib</code> package, you should move it to <code class="computeroutput">/packages</code>.  This must be done by an OpenACS administrator.  On cvs.openacs.org:</p><div class="orderedlist"><ol type="a"><li><pre class="programlisting">cp -r /cvsroot/openacs-4/contrib/packages/<span class="replaceable"><span class="replaceable">package0</span></span> /cvsroot/openacs-4/packages</pre></li><li><p>Update the modules file as described above.</p></li><li><p>Remove the directory from cvs in the old location using <code class="computeroutput">cvs rm</code>.  One approach <code class="computeroutput">for file in `find | grep -v CVS`; do rm $file; cvs remove $file; done</code></p></li></ol></div></div></li></ol></div><div class="sect3" lang="en"><div class="titlepage"><div><div><h4 class="title"><a name="Commit_Rules"></a>
+cvs tag -b <span class="replaceable"><span class="replaceable">oacs-5-1</span></span></pre></li><li><p>See <a href="releasing-package.html" title="How to package and release an OpenACS Package">Section�, &#8220;How to package and release an OpenACS Package&#8221;</a></p></li></ol></div><div class="note" style="margin-left: 0.5in; margin-right: 0.5in;"><h3 class="title">Note</h3><p>Some packages are already in cvs at <tt class="computeroutput">openacs-4/contrib/packages</tt>.  Starting with OpenACS 5.1, we have a Maturity mechanism in the APM which makes the <tt class="computeroutput">contrib</tt> directory un-necessary.  If you are working on a <tt class="computeroutput">contrib</tt> package, you should move it to <tt class="computeroutput">/packages</tt>.  This must be done by an OpenACS administrator.  On cvs.openacs.org:</p><div class="orderedlist"><ol type="a"><li><pre class="programlisting">cp -r /cvsroot/openacs-4/contrib/packages/<span class="replaceable"><span class="replaceable">package0</span></span> /cvsroot/openacs-4/packages</pre></li><li><p>Update the modules file as described above.</p></li><li><p>Remove the directory from cvs in the old location using <tt class="computeroutput">cvs rm</tt>.  One approach <tt class="computeroutput">for file in `find | grep -v CVS`; do rm $file; cvs remove $file; done</tt></p></li></ol></div></div></li></ol></div><div class="sect3" lang="en"><div class="titlepage"><div><div><h4 class="title"><a name="Commit_Rules"></a>
       Rules for Committing Code to the OpenACS repository
-    </h4></div></div></div><p>
+    </h4></div></div><div></div></div><p>
       CVS commit procedures are governed by 
       <a href="http://openacs.org/forums/message-view?message_id=185506" target="_top">
         TIP (Technical Improvement Proposal) #61: Guidelines for CVS committers
@@ -205,9 +206,9 @@
               each dot release.
             </p></li></ol></div></li><li><p>
           New packages should be created in the 
-          <code class="computeroutput">
+          <tt class="computeroutput">
             /packages
-          </code>
+          </tt>
           directory
           and the maturity flag in the .info file should be zero. This is a change from
           previous policy, where new packages went to /contrib/packages)
@@ -243,11 +244,11 @@
               versions.
             </p></li><li><p>
               CVS commit messages and code comments should refer to
-              bug, tip, or patch number if appropriate, in the format "resolves
-              bug 11", "resolves bugs 11, resolves bug 22". "implements tip 42",
-              "implements tip 42, implements tip 50", "applies patch 456 by User
-              Name", "applies patch 456 by User Name, applies patch 523 by
-              ...".
+              bug, tip, or patch number if appropriate, in the format &quot;resolves
+              bug 11&quot;, &quot;resolves bugs 11, resolves bug 22&quot;. &quot;implements tip 42&quot;,
+              &quot;implements tip 42, implements tip 50&quot;, &quot;applies patch 456 by User
+              Name&quot;, &quot;applies patch 456 by User Name, applies patch 523 by
+              ...&quot;.
             </p></li></ol></div></li><li><p>
           When to TIP
         </p><div class="orderedlist"><ol type="1"><li><p>
@@ -283,7 +284,7 @@
           Tags
         </p><div class="orderedlist"><ol type="1"><li><p>
               When a package is released in final form, the developer
-              shall tag it "packagename-x-y-z-final" and "openacs-x-y-compat". x-y
+              shall tag it &quot;packagename-x-y-z-final&quot; and &quot;openacs-x-y-compat&quot;. x-y
               should correspond to the current branch. If the package is
               compatible with several different core versions, several compat
               tags should be applied.
@@ -316,9 +317,9 @@
           flag which defaults to no-effect wouldn't require a TIP. Added a
           new mandatory flag to an existing function would require a
           TIP.
-        </p></li></ol></div></div><div class="sect3" lang="en"><div class="titlepage"><div><div><h4 class="title"><a name="id1145613"></a>
+        </p></li></ol></div></div><div class="sect3" lang="en"><div class="titlepage"><div><div><h4 class="title"><a name="id3036639"></a>
       Informal Guidelines
-    </h4></div></div></div><p>
+    </h4></div></div><div></div></div><p>
       Informal guidelines which may be obsolete in places and should be reviewed:
     </p><div class="itemizedlist"><ul type="disc"><li><p>
           Before committing to cvs you must submit a bug report and
@@ -359,12 +360,12 @@
         </p></li><li><p>
           Always accompany a commit with a brief but informative
           comment. If your commit is related to bug number N and/or patch
-          number P, indicate this in the commit comment by including "bug N"
-          and/or "patch P". This allows us to link bugs and patches in the
+          number P, indicate this in the commit comment by including &quot;bug N&quot;
+          and/or &quot;patch P&quot;. This allows us to link bugs and patches in the
           Bug Tracker with changes to the source code. For example suppose
           you are committing a patch that closes a missing HTML tag, then an
-          appropriate comment could be "Fixing bug 321 by applying patch 134.
-          Added missing h3 HTML close tag".
+          appropriate comment could be &quot;Fixing bug 321 by applying patch 134.
+          Added missing h3 HTML close tag&quot;.
         </p></li><li><p>
           Commit one cohesive bug fix or feature change at a time.
           Don't put a bunch of unrelated changes into one commit.
@@ -390,7 +391,7 @@
           time, never stop questioning what you see. The code can always be
           improved, just make sure you change the code in a careful and
           systematic fashion.
-        </p></li></ul></div></div></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="cvs-resources"></a>Additional Resources for CVS</h3></div></div></div><div class="itemizedlist"><ul type="disc"><li><p>
+        </p></li></ul></div></div></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="cvs-resources"></a>Additional Resources for CVS</h3></div></div><div></div></div><div class="itemizedlist"><ul type="disc"><li><p>
           The 
             <a href="http://cvs.openacs.org/cvs/" target="_top">
               OpenACS cvs web</a>
Index: openacs-4/packages/acs-core-docs/www/database-management.html
===================================================================
RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/database-management.html,v
diff -u -r1.25 -r1.25.4.1
--- openacs-4/packages/acs-core-docs/www/database-management.html	17 Jul 2006 05:38:31 -0000	1.25
+++ openacs-4/packages/acs-core-docs/www/database-management.html	3 Feb 2008 12:07:38 -0000	1.25.4.1
@@ -1,4 +1,5 @@
-<html><head><meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"><title>Chapter�7.�Database Management</title><meta name="generator" content="DocBook XSL Stylesheets V1.70.1"><link rel="home" href="index.html" title="OpenACS Core Documentation"><link rel="up" href="acs-admin.html" title="Part�II.�Administrator's Guide"><link rel="previous" href="maint-performance.html" title="Diagnosing Performance Problems"><link rel="next" href="remote-postgres.html" title="Running a PostgreSQL database on another server"><link rel="stylesheet" href="openacs.css" type="text/css"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><a href="http://openacs.org"><img src="/doc/images/alex.jpg" border="0" alt="Alex logo"></a><table width="100%" summary="Navigation header" border="0"><tr><td width="20%" align="left"><a accesskey="p" href="maint-performance.html">Prev</a> </td><th width="60%" align="center">Part�II.�Administrator's Guide</th><td width="20%" align="right"> <a accesskey="n" href="remote-postgres.html">Next</a></td></tr></table><hr></div><div class="chapter" lang="en"><div class="titlepage"><div><div><h2 class="title"><a name="database-management"></a>Chapter�7.�Database Management</h2></div></div></div><div class="toc"><p><b>Table of Contents</b></p><dl><dt><span class="sect1"><a href="remote-postgres.html">Running a PostgreSQL database on another server</a></span></dt><dt><span class="sect1"><a href="install-openacs-delete-tablespace.html">Deleting a tablespace</a></span></dt><dt><span class="sect1"><a href="install-next-nightly-vacuum.html">Vacuum Postgres nightly</a></span></dt></dl></div><div class="authorblurb"><p>By <a href="mailto:joel@aufrecht.org" target="_top">Joel Aufrecht</a></p>
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html><head><meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"><title>Chapter�7.�Database Management</title><meta name="generator" content="DocBook XSL Stylesheets V1.60.1"><link rel="home" href="index.html" title="OpenACS Core Documentation"><link rel="up" href="acs-admin.html" title="Part�II.�Administrator's Guide"><link rel="previous" href="maint-performance.html" title="Diagnosing Performance Problems"><link rel="next" href="remote-postgres.html" title="Running a PostgreSQL database on another server"><link rel="stylesheet" href="openacs.css" type="text/css"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><a href="http://openacs.org"><img src="/doc/images/alex.jpg" border="0" alt="Alex logo"></a><table width="100%" summary="Navigation header" border="0"><tr><td width="20%" align="left"><a accesskey="p" href="maint-performance.html">Prev</a> </td><th width="60%" align="center">Part�II.�Administrator's Guide</th><td width="20%" align="right"> <a accesskey="n" href="remote-postgres.html">Next</a></td></tr></table><hr></div><div class="chapter" lang="en"><div class="titlepage"><div><div><h2 class="title"><a name="database-management"></a>Chapter�7.�Database Management</h2></div></div><div></div></div><div class="toc"><p><b>Table of Contents</b></p><dl><dt><a href="remote-postgres.html">Running a PostgreSQL database on another server</a></dt><dt><a href="install-openacs-delete-tablespace.html">Deleting a tablespace</a></dt><dt><a href="install-next-nightly-vacuum.html">Vacuum Postgres nightly</a></dt></dl></div><div class="authorblurb"><p>By <a href="mailto:joel@aufrecht.org" target="_top">Joel Aufrecht</a></p>
           OpenACS docs are written by the named authors, and may be edited
           by OpenACS documentation staff.
         </div></div><div class="navfooter"><hr><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="maint-performance.html">Prev</a> </td><td width="20%" align="center"><a accesskey="h" href="index.html">Home</a></td><td width="40%" align="right"> <a accesskey="n" href="remote-postgres.html">Next</a></td></tr><tr><td width="40%" align="left">Diagnosing Performance Problems </td><td width="20%" align="center"><a accesskey="u" href="acs-admin.html">Up</a></td><td width="40%" align="right"> Running a PostgreSQL database on another server</td></tr></table><hr><address><a href="mailto:docs@openacs.org">docs@openacs.org</a></address></div><a name="comments"></a><center><a href="http://openacs.org/doc/current/database-management.html#comments">View comments on this page at openacs.org</a></center></body></html>
Index: openacs-4/packages/acs-core-docs/www/db-api-detailed.html
===================================================================
RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/db-api-detailed.html,v
diff -u -r1.42 -r1.42.4.1
--- openacs-4/packages/acs-core-docs/www/db-api-detailed.html	17 Jul 2006 05:38:31 -0000	1.42
+++ openacs-4/packages/acs-core-docs/www/db-api-detailed.html	3 Feb 2008 12:07:38 -0000	1.42.4.1
@@ -1,23 +1,24 @@
-<html><head><meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"><title>Database Access API</title><meta name="generator" content="DocBook XSL Stylesheets V1.70.1"><link rel="home" href="index.html" title="OpenACS Core Documentation"><link rel="up" href="kernel-doc.html" title="Chapter�15.�Kernel Documentation"><link rel="previous" href="apm-design.html" title="Package Manager Design"><link rel="next" href="i18n-requirements.html" title="OpenACS Internationalization Requirements"><link rel="stylesheet" href="openacs.css" type="text/css"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><a href="http://openacs.org"><img src="/doc/images/alex.jpg" border="0" alt="Alex logo"></a><table width="100%" summary="Navigation header" border="0"><tr><td width="20%" align="left"><a accesskey="p" href="apm-design.html">Prev</a> </td><th width="60%" align="center">Chapter�15.�Kernel Documentation</th><td width="20%" align="right"> <a accesskey="n" href="i18n-requirements.html">Next</a></td></tr></table><hr></div><div class="sect1" lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="db-api-detailed"></a>Database Access API</h2></div></div></div><div class="authorblurb"><p>By <a href="mailto:jsalz@mit.edu" target="_top">Jon Salz</a>. Revised and expanded by Roberto Mello (rmello at fslc dot usu dot edu), July 2002. </p>
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html><head><meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"><title>Database Access API</title><meta name="generator" content="DocBook XSL Stylesheets V1.60.1"><link rel="home" href="index.html" title="OpenACS Core Documentation"><link rel="up" href="kernel-doc.html" title="Chapter�15.�Kernel Documentation"><link rel="previous" href="apm-design.html" title="Package Manager Design"><link rel="next" href="i18n-requirements.html" title="OpenACS Internationalization Requirements"><link rel="stylesheet" href="openacs.css" type="text/css"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><a href="http://openacs.org"><img src="/doc/images/alex.jpg" border="0" alt="Alex logo"></a><table width="100%" summary="Navigation header" border="0"><tr><td width="20%" align="left"><a accesskey="p" href="apm-design.html">Prev</a> </td><th width="60%" align="center">Chapter�15.�Kernel Documentation</th><td width="20%" align="right"> <a accesskey="n" href="i18n-requirements.html">Next</a></td></tr></table><hr></div><div class="sect1" lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="db-api-detailed"></a>Database Access API</h2></div></div><div></div></div><div class="authorblurb"><p>By <a href="mailto:jsalz@mit.edu" target="_top">Jon Salz</a>. Revised and expanded by Roberto Mello (rmello at fslc dot usu dot edu), July 2002. </p>
           OpenACS docs are written by the named authors, and may be edited
           by OpenACS documentation staff.
-        </div><div class="itemizedlist"><ul type="disc"><li><p>Tcl procedures: /packages/acs-kernel/10-database-procs.tcl</p></li><li><p>Tcl initialization: /packages/acs-kernel/database-init.tcl</p></li></ul></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="db-api-detailed-bigpicture"></a>The Big Picture</h3></div></div></div><p>
+        </div><div class="itemizedlist"><ul type="disc"><li><p>Tcl procedures: /packages/acs-kernel/10-database-procs.tcl</p></li><li><p>Tcl initialization: /packages/acs-kernel/database-init.tcl</p></li></ul></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="db-api-detailed-bigpicture"></a>The Big Picture</h3></div></div><div></div></div><p>
 One of OpenACS's great strengths is that code written for it is very close to
 the database. It is very easy to interact with the database from anywhere
 within OpenACS. Our goal is to develop a coherent API for database access which
 makes this even easier. 
 </p><p>There were four significant problems with the way OpenACS previously used the
-database (i.e., directly through the <code class="computeroutput">ns_db</code> interface):</p><div class="orderedlist"><ol type="1"><li><p><span class="strong"><strong>Handle management</strong></span>. We required code to pass database
+database (i.e., directly through the <tt class="computeroutput">ns_db</tt> interface):</p><div class="orderedlist"><ol type="1"><li><p><span class="strong">Handle management</span>. We required code to pass database
 handles around, and for routines which needed to perform database access but
 didn't receive a database handle as input, it was difficult to know from
-which of the three "magic pools" (main, subquery, and log) to
+which of the three &quot;magic pools&quot; (main, subquery, and log) to
 allocate a new handle. 
 
 
-</p></li><li><p><span class="strong"><strong>Nested transactions</strong></span>. In our Oracle driver, <code class="computeroutput">begin
-transaction</code> really means "turn auto-commit mode off" and
-<code class="computeroutput">end transaction</code> means "commit the current transaction and
-turn auto-commit mode on." Thus if transactional code needed to call a
+</p></li><li><p><span class="strong">Nested transactions</span>. In our Oracle driver, <tt class="computeroutput">begin
+transaction</tt> really means &quot;turn auto-commit mode off&quot; and
+<tt class="computeroutput">end transaction</tt> means &quot;commit the current transaction and
+turn auto-commit mode on.&quot; Thus if transactional code needed to call a
 routine which needed to operate transactionally, the semantics were
 non-obvious. Consider: </p><pre class="programlisting">
 
@@ -28,31 +29,31 @@
 }
 
 db_transaction {
-db_dml unused "insert into greeble(bork) values(33)"
+db_dml unused &quot;insert into greeble(bork) values(33)&quot;
 foo $db
-db_dml unused "insert into greeble(bork) values(50)"
+db_dml unused &quot;insert into greeble(bork) values(50)&quot;
 }
 
 </pre><p>
-This would insert greeble #33 and do all the stuff in <code class="computeroutput">foo</code>
-transactionally, but the <code class="computeroutput">end transaction</code> in <code class="computeroutput">foo</code>
+This would insert greeble #33 and do all the stuff in <tt class="computeroutput">foo</tt>
+transactionally, but the <tt class="computeroutput">end transaction</tt> in <tt class="computeroutput">foo</tt>
 would actually cause a commit, and greeble #50 would later be inserted in
 auto-commit mode. This could cause subtle bugs: e.g., in the case that the
-insert for greeble #50 failed, part of the "transaction" would have
+insert for greeble #50 failed, part of the &quot;transaction&quot; would have
 already have been committed!. This is not a good thing. 
 
 
-</p></li><li><p><span class="strong"><strong>Unorthodox use of variables</strong></span>. The standard mechanism for
+</p></li><li><p><span class="strong">Unorthodox use of variables</span>. The standard mechanism for
 mapping column values into variables involved the use of the
-<code class="computeroutput">set_variables_after_query</code> routine, which relies on an uplevel
-variable named <code class="computeroutput">selection</code> (likewise for
-<code class="computeroutput">set_variables_after_subquery</code> and <code class="computeroutput">subselection</code>). 
+<tt class="computeroutput">set_variables_after_query</tt> routine, which relies on an uplevel
+variable named <tt class="computeroutput">selection</tt> (likewise for
+<tt class="computeroutput">set_variables_after_subquery</tt> and <tt class="computeroutput">subselection</tt>). 
 
 
-</p></li><li><p><span class="strong"><strong>Hard-coded reliance on Oracle</strong></span>. It's difficult to
+</p></li><li><p><span class="strong">Hard-coded reliance on Oracle</span>. It's difficult to
 write code supporting various different databases (dynamically using the
 appropriate dialect based on the type of database being used, e.g., using
-<code class="computeroutput">DECODE</code> on Oracle and <code class="computeroutput">CASE ... WHEN</code> on
+<tt class="computeroutput">DECODE</tt> on Oracle and <tt class="computeroutput">CASE ... WHEN</tt> on
 Postgres).</p></li></ol></div><p>
 The Database Access API addresses the first three problems by: 
 </p><div class="orderedlist"><ol type="1"><li><p>making use of database handles transparent</p></li><li><p>wrapping common database operations (including transaction management) in
@@ -61,14 +62,14 @@
 SQL statement a logical name. In a future version of the OpenACS Core, this API
 will translate logical statement names into actual SQL, based on the type of
 database in use. (To smooth the learning curve, we provide a facility for
-writing SQL inline for a "default SQL dialect", which we assume to
+writing SQL inline for a &quot;default SQL dialect&quot;, which we assume to
 be Oracle for now.) 
 </p><p>To be clear, SQL abstraction is <span class="emphasis"><em>not</em></span> fully implemented in OpenACS
 3.3.1. The statement names supplied to each call are not used by the API at
 all. The API's design for SQL abstraction is in fact incomplete;
-unresolved issues include:</p><div class="itemizedlist"><ul type="disc"><li><p>how to add <code class="computeroutput">WHERE</code> clause criteria dynamically</p></li><li><p>how to build a dynamic <code class="computeroutput">ORDER BY</code> clause (Ben Adida has a
+unresolved issues include:</p><div class="itemizedlist"><ul type="disc"><li><p>how to add <tt class="computeroutput">WHERE</tt> clause criteria dynamically</p></li><li><p>how to build a dynamic <tt class="computeroutput">ORDER BY</tt> clause (Ben Adida has a
 proposed solution for this)</p></li><li><p>how to define a statement's formal interface (i.e., what bind
-variables it expects, what columns its <code class="computeroutput">SELECT</code> clause must
+variables it expects, what columns its <tt class="computeroutput">SELECT</tt> clause must
 contain if it's a query) without actually implementing the statement in a
 specific SQL dialect</p></li></ul></div><p>
 So why is the incremental change of adding statement naming to the API worth
@@ -77,81 +78,81 @@
 design. Therefore, we know that the effort will not be wasted, and taking
 advantage of the new support for bind variables will already require code
 that uses 3.3.0 version of the API to be updated. 
-</p></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="db-api-detailed-set-var-aft-query"></a>The Bell Tolls for <code class="computeroutput">set_variables_after_query</code></h3></div></div></div><p>
-<code class="computeroutput">set_variables_after_query</code> is gone! (Well, it's still there,
+</p></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="db-api-detailed-set-var-aft-query"></a>The Bell Tolls for <tt class="computeroutput">set_variables_after_query</tt></h3></div></div><div></div></div><p>
+<tt class="computeroutput">set_variables_after_query</tt> is gone! (Well, it's still there,
 but you'll never need to use it.) The new API routines set local
 variables automatically. For instance: 
 </p><pre class="programlisting">
 
-db_1row select_names "select first_names, last_name from users where user_id = [ad_get_user_id]"
-doc_body_append "Hello, $first_names $last_name!"
+db_1row select_names &quot;select first_names, last_name from users where user_id = [ad_get_user_id]&quot;
+doc_body_append &quot;Hello, $first_names $last_name!&quot;
 
 </pre><p>
-Like <code class="computeroutput">ns_db 1row</code>, this will bomb if the query doesn't return
+Like <tt class="computeroutput">ns_db 1row</tt>, this will bomb if the query doesn't return
 any rows (no such user exists). If this isn't what you want, you can
 write: 
 </p><pre class="programlisting">
 
-if { [db_0or1row select_names "select first_names, last_name from users where user_id = [ad_get_user_id]"] } {
-    doc_body_append "Hello, $first_names $last_name!"
+if { [db_0or1row select_names &quot;select first_names, last_name from users where user_id = [ad_get_user_id]&quot;] } {
+    doc_body_append &quot;Hello, $first_names $last_name!&quot;
 } else {
     # Executed if the query returns no rows.
-    doc_body_append "There's no such user!"
+    doc_body_append &quot;There's no such user!&quot;
 }
 
 </pre><p>
 Selecting a bunch of rows is a lot prettier now: 
 
  </p><pre class="programlisting">
 
-db_foreach select_names "select first_names, last_name from users" {
-     doc_body_append "Say hi to $first_names $last_name for me!&lt;br&gt;"
+db_foreach select_names &quot;select first_names, last_name from users&quot; {
+     doc_body_append &quot;Say hi to $first_names $last_name for me!&lt;br&gt;&quot;
 }
 
 </pre><p>
-That's right, <code class="computeroutput">db_foreach</code> is now like <code class="computeroutput">ns_db
-select</code> plus a <code class="computeroutput">while</code> loop plus
-<code class="computeroutput">set_variables_after_query</code> plus an <code class="computeroutput">if</code> statement
+That's right, <tt class="computeroutput">db_foreach</tt> is now like <tt class="computeroutput">ns_db
+select</tt> plus a <tt class="computeroutput">while</tt> loop plus
+<tt class="computeroutput">set_variables_after_query</tt> plus an <tt class="computeroutput">if</tt> statement
 (containing code to be executed if no rows are returned). 
 
  </p><pre class="programlisting">
 
-db_foreach select_names "select first_names, last_name from users where last_name like 'S%'" {
-     doc_body_append "Say hi to $first_names $last_name for me!&lt;br&gt;"
+db_foreach select_names &quot;select first_names, last_name from users where last_name like 'S%'&quot; {
+     doc_body_append &quot;Say hi to $first_names $last_name for me!&lt;br&gt;&quot;
 } if_no_rows {
-     doc_body_append "There aren't any users with last names beginnings with S!"
+     doc_body_append &quot;There aren't any users with last names beginnings with S!&quot;
 }
 
-</pre></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="db-api-detailed-handles"></a>Handle Management</h3></div></div></div><p>
+</pre></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="db-api-detailed-handles"></a>Handle Management</h3></div></div><div></div></div><p>
 The new API keeps track of which handles are in use, and automatically
 allocates new handles when they are necessary (e.g., to perform subqueries
 while a select is active). For example: 
 </p><pre class="programlisting">
 
-doc_body_append "&lt;ul&gt;"
-db_foreach select_names "select first_names, last_name, user_id from users" {
+doc_body_append &quot;&lt;ul&gt;&quot;
+db_foreach select_names &quot;select first_names, last_name, user_id from users&quot; {
     # Automatically allocated a database handle from the main pool.
-    doc_body_append "&lt;li&gt;User $first_names $last_name\n&lt;ul&gt;"
+    doc_body_append &quot;&lt;li&gt;User $first_names $last_name\n&lt;ul&gt;&quot;
 
-    db_foreach select_groups "select group_id from user_group_map where user_id = $user_id" {
+    db_foreach select_groups &quot;select group_id from user_group_map where user_id = $user_id&quot; {
         # There's a selection in progress, so we allocated a database handle
         # from the subquery pool for this selection.
-        doc_body_append "&lt;li&gt;Member of group #$group_id.\n"
+        doc_body_append &quot;&lt;li&gt;Member of group #$group_id.\n&quot;
     } if_no_rows {
         # Not a member of any groups.
-        doc_body_append "&lt;li&gt;Not a member of any group.\n"
+        doc_body_append &quot;&lt;li&gt;Not a member of any group.\n&quot;
     }
 }
-doc_body_append "&lt;/ul&gt;"
+doc_body_append &quot;&lt;/ul&gt;&quot;
 db_release_unused_handles
 
 </pre><p>
 A new handle isn't actually allocated and released for every selection,
 of course - as a performance optimization, the API keeps old handles around
-until <code class="computeroutput">db_release_unused_handles</code> is invoked (or the script
+until <tt class="computeroutput">db_release_unused_handles</tt> is invoked (or the script
 terminates). 
-</p><p>Note that there is no analogue to <code class="computeroutput">ns_db gethandle</code> - the
-handle is always automatically allocated the first time it's needed.</p></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="db-api-detailed-bindvars"></a>Bind Variables</h3></div></div></div><p><span class="strong"><strong>Introduction</strong></span></p><p>
+</p><p>Note that there is no analogue to <tt class="computeroutput">ns_db gethandle</tt> - the
+handle is always automatically allocated the first time it's needed.</p></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="db-api-detailed-bindvars"></a>Bind Variables</h3></div></div><div></div></div><p><span class="strong">Introduction</span></p><p>
 Most SQL statements require that the code invoking the statement pass along
 data associated with that statement, usually obtained from the user. For
 instance, in order to delete a WimpyPoint presentation, a Tcl script might
@@ -161,10 +162,10 @@
 delete from wp_presentations where presentation_id = <span class="emphasis"><em>some_presentation_id</em></span>
 
 </pre><p>
-where <span class="emphasis"><em><code class="computeroutput">some_presentation_id</code></em></span> is a number which is a valid
+where <span class="emphasis"><em><tt class="computeroutput">some_presentation_id</tt></em></span> is a number which is a valid
 presentation ID of the presentation I want to delete. It's easy to write
 code handling situations like this since SQL statements can include
-<span class="strong"><strong>bind variables</strong></span>, which represent placeholders for actual
+<span class="strong">bind variables</span>, which represent placeholders for actual
 data. A bind variable is specified as a colon followed by an identifier, so
 the statement above can be coded as: 
 </p><pre class="programlisting">
@@ -175,43 +176,43 @@
 
 </pre><p>
 When this SQL statement is invoked, the value for the bind variable
-<code class="computeroutput">:some_presentation_id</code> is pulled from the Tcl variable
-<code class="computeroutput">$some_presentation_id</code> (in the caller's environment). Note
+<tt class="computeroutput">:some_presentation_id</tt> is pulled from the Tcl variable
+<tt class="computeroutput">$some_presentation_id</tt> (in the caller's environment). Note
 that bind variables are not limited to one per statement; you can use an
 arbitrary number, and each will pull from the correspondingly named Tcl
-variable. (Alternatively, you can also specify an list or <code class="computeroutput">ns_set</code>
+variable. (Alternatively, you can also specify an list or <tt class="computeroutput">ns_set</tt>
 providing bind variables' values; see <span class="emphasis"><em>Usage</em></span>.) 
 </p><p>The value of a bind variable is taken literally by the database driver, so
 there is never any need to put single-quotes around the value for a bind
-variable, or to use <code class="computeroutput">db_quote</code> to escape single-quotes contained
+variable, or to use <tt class="computeroutput">db_quote</tt> to escape single-quotes contained
 in the value. The following works fine, despite the apostrophe:</p><pre class="programlisting">
 
-set exclamation "That's all, folks!"
+set exclamation &quot;That's all, folks!&quot;
 db_dml exclamation_insert { insert into exclamations(exclamation) values(:exclamation) }
 
 </pre><p>Note that you can use a bind variable in a SQL statement only where you
 could use a literal (a number or single-quoted string). Bind variables cannot
 be placeholders for things like SQL keywords, table names, or column names,
-so the following will not work, even if <code class="computeroutput">$table_name</code> is set
+so the following will not work, even if <tt class="computeroutput">$table_name</tt> is set
 properly:</p><pre class="programlisting">
 
 select * from :table_name
 
-</pre><p><span class="strong"><strong>Why Bind Variables Are Useful</strong></span></p><p>
+</pre><p><span class="strong">Why Bind Variables Are Useful</span></p><p>
 Why bother with bind variables at all - why not just write the Tcl statement
 above like this: 
 </p><pre class="programlisting">
 
-db_dml presentation_delete "
+db_dml presentation_delete &quot;
     delete from wp_presentations where presentation_id = $some_presentation_id
-"
+&quot;
 
 </pre><p>
 (Note the use of double-quotes to allow the variable reference to
-<code class="computeroutput">$some_presentation_id</code> to be interpolated in.) This will work,
+<tt class="computeroutput">$some_presentation_id</tt> to be interpolated in.) This will work,
 but consider the case where some devious user causes
-<code class="computeroutput">some_presentation_id</code> to be set to something like <code class="computeroutput">'3 or
-1 = 1'</code>, which would result in the following statement being
+<tt class="computeroutput">some_presentation_id</tt> to be set to something like <tt class="computeroutput">'3 or
+1 = 1'</tt>, which would result in the following statement being
 executed: 
 </p><pre class="programlisting">
 
@@ -221,24 +222,24 @@
 This deletes every presentation in the database! Using bind variables
 eliminates this gaping security hole: since bind variable values are taken
 literally. Oracle will attempt to delete presentations whose presentation ID
-is literally <code class="computeroutput">'3 or 1 = 1'</code> (i.e., no presentations, since
-<code class="computeroutput">'3 or 1 = 1'</code> can't possibly be a valid integer
-primary key for <code class="computeroutput">wp_presentations</code>. In general, since Oracle
+is literally <tt class="computeroutput">'3 or 1 = 1'</tt> (i.e., no presentations, since
+<tt class="computeroutput">'3 or 1 = 1'</tt> can't possibly be a valid integer
+primary key for <tt class="computeroutput">wp_presentations</tt>. In general, since Oracle
 always considers the values of bind variables to be literals, it becomes more
 difficult for users to perform URL surgery to trick scripts into running
 dangerous queries and DML. 
-</p><p><span class="strong"><strong>Usage</strong></span></p><p>Every <code class="computeroutput">db_*</code> command accepting a SQL command as an argument
-supports bind variables. You can either</p><div class="itemizedlist"><ul type="disc"><li><p>specify the <code class="computeroutput">-bind</code> switch to provide a set with bind variable
-values, or</p></li><li><p>specify the <code class="computeroutput">-bind</code> switch to explicitly provide a list of
+</p><p><span class="strong">Usage</span></p><p>Every <tt class="computeroutput">db_*</tt> command accepting a SQL command as an argument
+supports bind variables. You can either</p><div class="itemizedlist"><ul type="disc"><li><p>specify the <tt class="computeroutput">-bind</tt> switch to provide a set with bind variable
+values, or</p></li><li><p>specify the <tt class="computeroutput">-bind</tt> switch to explicitly provide a list of
 bind variable names and values, or</p></li><li><p>not specify a bind variable list at all, in which case Tcl variables are
 used as bind variables.</p></li></ul></div><p>
-The default behavior (i.e., if the <code class="computeroutput">-bind</code> switch is omitted) is
+The default behavior (i.e., if the <tt class="computeroutput">-bind</tt> switch is omitted) is
 that these procedures expect to find local variables that correspond in name
 to the referenced bind variables, e.g.: 
 </p><pre class="programlisting">
 
 set user_id 123456
-set role "administrator"
+set role &quot;administrator&quot;
 
 db_foreach user_group_memberships_by_role {
     select g.group_id, g.group_name
@@ -248,18 +249,18 @@
     and map.role = :role
 } {
     # do something for each group of which user 123456 is in the role
-    # of "administrator"
+    # of &quot;administrator&quot;
 }
 
 </pre><p>
-The value of the local Tcl variable <code class="computeroutput">user_id</code> (123456) is bound to
-the <code class="computeroutput">user_id</code> bind variable. 
-</p><p>The <code class="computeroutput">-bind</code> switch can takes the name of an <code class="computeroutput">ns_set</code>
+The value of the local Tcl variable <tt class="computeroutput">user_id</tt> (123456) is bound to
+the <tt class="computeroutput">user_id</tt> bind variable. 
+</p><p>The <tt class="computeroutput">-bind</tt> switch can takes the name of an <tt class="computeroutput">ns_set</tt>
 containing keys for each bind variable named in the query, e.g.:</p><pre class="programlisting">
 
 set bind_vars [ns_set create]
 ns_set put $bind_vars user_id 123456
-ns_set put $bind_vars role "administrator"
+ns_set put $bind_vars role &quot;administrator&quot;
 
 db_foreach user_group_memberships_by_role {
     select g.group_id, g.group_name
@@ -269,11 +270,11 @@
     and map.role = :role
 } -bind $bind_vars {
     # do something for each group in which user 123456 has the role
-    # of "administrator"
+    # of &quot;administrator&quot;
 }
 
 </pre><p>
-Alternatively, as an argument to <code class="computeroutput">-bind</code> you can specify a list of
+Alternatively, as an argument to <tt class="computeroutput">-bind</tt> you can specify a list of
 alternating name/value pairs for bind variables: 
 </p><pre class="programlisting">
 
@@ -283,22 +284,22 @@
     where g.group_id = map.user_id
     and map.user_id = :user_id
     and map.role = :role
-} -bind [list user_id 123456 role "administrator"] {
+} -bind [list user_id 123456 role &quot;administrator&quot;] {
     # do something for each group in which user 123456 has the role
-    # of "administrator"
+    # of &quot;administrator&quot;
 }
 
-</pre><p><span class="strong"><strong><a name="kernel.dbapi_nulls_and_bind_vars"></a>Nulls and Bind Variables</strong></span></p><p>
+</pre><p><span class="strong"><a name="kernel.dbapi_nulls_and_bind_vars"></a>Nulls and Bind Variables</span></p><p>
 When processing a DML statement, Oracle coerces empty strings into
-<code class="computeroutput">null</code>. (This coercion does <span class="emphasis"><em>not</em></span> occur in the
-<code class="computeroutput">WHERE</code> clause of a query, i.e.
-<code class="computeroutput">col = ''</code> and
-<code class="computeroutput">col is null</code> are not equivalent.) 
+<tt class="computeroutput">null</tt>. (This coercion does <span class="emphasis"><em>not</em></span> occur in the
+<tt class="computeroutput">WHERE</tt> clause of a query, i.e.
+<tt class="computeroutput">col = ''</tt> and
+<tt class="computeroutput">col is null</tt> are not equivalent.) 
 </p><p>As a result, when using bind variables, the only way to make Oracle set a
-column value to <code class="computeroutput">null</code> is to set the corresponding bind variable
+column value to <tt class="computeroutput">null</tt> is to set the corresponding bind variable
 to the empty string, since a bind variable whose value is the string
-"null" will be interpreted as the literal string
-"null".</p><p>These Oracle quirks complicate the process of writing clear and abstract
+&quot;null&quot; will be interpreted as the literal string
+&quot;null&quot;.</p><p>These Oracle quirks complicate the process of writing clear and abstract
 DML difficult. Here is an example that illustrates why:</p><pre class="programlisting">
 
 #
@@ -310,259 +311,259 @@
 #   );
 #
 
-set bar ""
-set baz ""
+set bar &quot;&quot;
+set baz &quot;&quot;
 
-db_dml foo_create "insert into foo(bar, baz) values(:bar, :baz)"
+db_dml foo_create &quot;insert into foo(bar, baz) values(:bar, :baz)&quot;
 #
-# the values of the "bar" and "baz" columns in the new row are both
+# the values of the &quot;bar&quot; and &quot;baz&quot; columns in the new row are both
 # null, because Oracle has coerced the empty string (even for the
-# numeric column "bar") into null in both cases
+# numeric column &quot;bar&quot;) into null in both cases
 
 </pre><p>
 Since databases other than Oracle do not coerce empty strings into
-<code class="computeroutput">null</code>, this code has different semantics depending on the
+<tt class="computeroutput">null</tt>, this code has different semantics depending on the
 underlying database (i.e., the row that gets inserted may not have null as
 its column values), which defeats the purpose of SQL abstraction. 
 </p><p>Therefore, the Database Access API provides a database-independent way to
-represent <code class="computeroutput">null</code> (instead of the Oracle-specific idiom of the
-empty string): <span class="strong"><strong><code class="computeroutput">db_null</code></strong></span>.</p><p>Use it instead of the empty string whenever you want to set a column value
-explicitly to <code class="computeroutput">null</code>, e.g.:</p><pre class="programlisting">
+represent <tt class="computeroutput">null</tt> (instead of the Oracle-specific idiom of the
+empty string): <span class="strong"><tt class="computeroutput">db_null</tt></span>.</p><p>Use it instead of the empty string whenever you want to set a column value
+explicitly to <tt class="computeroutput">null</tt>, e.g.:</p><pre class="programlisting">
 
 set bar [db_null]
 set baz [db_null]
 
-db_dml foo_create "insert into foo(bar, baz) values(:bar, :baz)"
+db_dml foo_create &quot;insert into foo(bar, baz) values(:bar, :baz)&quot;
 #
-# sets the values for both the "bar" and "baz" columns to null
+# sets the values for both the &quot;bar&quot; and &quot;baz&quot; columns to null
 
-</pre></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="db-api-detailed-sql-abstraction"></a>SQL Abstraction</h3></div></div></div><p>
+</pre></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="db-api-detailed-sql-abstraction"></a>SQL Abstraction</h3></div></div><div></div></div><p>
 We now require that each SQL statement be assigned a logical name for the
 statement that is unique to the procedure or page in which it is defined.
 This is so that (eventually) we can implement logically named statements with
 alternative SQL for non-Oracle databases (e.g., Postgres). More on this
 later. 
-</p></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="db-api-detailed-placing-values"></a>Placing Column Values in Arrays and Sets</h3></div></div></div><p>
-Normally, <code class="computeroutput">db_foreach</code>, <code class="computeroutput">db_0or1row</code>, and
-<code class="computeroutput">db_1row</code> places the results of queries in Tcl variables, so you
+</p></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="db-api-detailed-placing-values"></a>Placing Column Values in Arrays and Sets</h3></div></div><div></div></div><p>
+Normally, <tt class="computeroutput">db_foreach</tt>, <tt class="computeroutput">db_0or1row</tt>, and
+<tt class="computeroutput">db_1row</tt> places the results of queries in Tcl variables, so you
 can say: 
 </p><pre class="programlisting">
 
-db_foreach users_select "select first_names, last_name from users" {
-    doc_body_append "&lt;li&gt;$first_names $last_name\n"
+db_foreach users_select &quot;select first_names, last_name from users&quot; {
+    doc_body_append &quot;&lt;li&gt;$first_names $last_name\n&quot;
 }
 
 </pre><p>
 However, sometimes this is not sufficient: you may need to examine the rows
 returned, to dynamically determine the set of columns returned by the query,
 or to avoid collisions with existing variables. You can use the
-<code class="computeroutput">-column_array</code> and <code class="computeroutput">-column_set</code> switches to
-<code class="computeroutput">db_foreach</code>, <code class="computeroutput">db_0or1row</code>, and <code class="computeroutput">db_1row</code> to
+<tt class="computeroutput">-column_array</tt> and <tt class="computeroutput">-column_set</tt> switches to
+<tt class="computeroutput">db_foreach</tt>, <tt class="computeroutput">db_0or1row</tt>, and <tt class="computeroutput">db_1row</tt> to
 instruct the database routines to place the results in a Tcl array or
-<code class="computeroutput">ns_set</code>, respectively, where the keys are the column names and
+<tt class="computeroutput">ns_set</tt>, respectively, where the keys are the column names and
 the values are the column values. For example: 
 </p><pre class="programlisting">
 
-db_foreach users_select "select first_names, last_name from users" -column_set columns {
+db_foreach users_select &quot;select first_names, last_name from users&quot; -column_set columns {
     # Now $columns is an ns_set.
-    doc_body_append "&lt;li&gt;"
+    doc_body_append &quot;&lt;li&gt;&quot;
     for { set i 0 } { $i &lt; [ns_set size $columns] } { incr i } {
-        doc_body_append "[ns_set key $columns $i] is [ns_set value $columns $i]. \n"
+        doc_body_append &quot;[ns_set key $columns $i] is [ns_set value $columns $i]. \n&quot;
     }
 }
 
 </pre><p>
 will write something like: 
-</p><div class="itemizedlist"><ul type="disc"><li><p>first_names is Jon. last_name is Salz.</p></li><li><p>first_names is Lars. last_name is Pind.</p></li><li><p>first_names is Michael. last_name is Yoon.</p></li></ul></div></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="dp-api-detailed-api"></a>API</h3></div></div></div><p>
-Note that you never have to use <code class="computeroutput">ns_db</code> anymore (including
-<code class="computeroutput">ns_db gethandle</code>)! Just start doing stuff, and (if you want) call
-<code class="computeroutput">db_release_unused_handles</code> when you're done as a hint to
+</p><div class="itemizedlist"><ul type="disc"><li><p>first_names is Jon. last_name is Salz.</p></li><li><p>first_names is Lars. last_name is Pind.</p></li><li><p>first_names is Michael. last_name is Yoon.</p></li></ul></div></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="dp-api-detailed-api"></a>API</h3></div></div><div></div></div><p>
+Note that you never have to use <tt class="computeroutput">ns_db</tt> anymore (including
+<tt class="computeroutput">ns_db gethandle</tt>)! Just start doing stuff, and (if you want) call
+<tt class="computeroutput">db_release_unused_handles</tt> when you're done as a hint to
 release the database handle. 
-</p><div class="variablelist"><dl><dt><span class="term"><span class="strong"><strong><code class="computeroutput"><a name="kernel.dbapi_db_null"></a>db_null</code></strong></span>
+</p><div class="variablelist"><dl><dt><span class="term"><span class="strong"><tt class="computeroutput"><a name="kernel.dbapi_db_null"></a>db_null</tt></span>
 
 </span></dt><dd><pre class="programlisting">
-<span class="strong"><strong><code class="computeroutput">db_null</code></strong></span>
+<span class="strong"><tt class="computeroutput">db_null</tt></span>
 </pre><p>Returns a value which can be used in a bind variable to represent the SQL
-value <code class="computeroutput">null</code>. See <a href="db-api.html#dbapi_nulls_and_bind_vars" title="Nulls and Bind Variables">Nulls and Bind Variables</a>
+value <tt class="computeroutput">null</tt>. See <a href="db-api.html#dbapi_nulls_and_bind_vars" title="Nulls and Bind Variables">Nulls and Bind Variables</a>
 above.</p></dd><dt><span class="term">
-<span class="strong"><strong><code class="computeroutput"><a name="kernel.dbapi_db_foreach"></a>db_foreach</code></strong></span>
+<span class="strong"><tt class="computeroutput"><a name="kernel.dbapi_db_foreach"></a>db_foreach</tt></span>
 </span></dt><dd><pre class="programlisting">
-<span class="strong"><strong>db_foreach</strong></span> <span class="emphasis"><em>statement-name sql</em></span> [ -bind <span class="emphasis"><em>bind_set_id</em></span> | -bind <span class="emphasis"><em>bind_value_list</em></span> ] \
+<span class="strong">db_foreach</span> <span class="emphasis"><em>statement-name sql</em></span> [ -bind <span class="emphasis"><em>bind_set_id</em></span> | -bind <span class="emphasis"><em>bind_value_list</em></span> ] \
     [ -column_array <span class="emphasis"><em>array_name</em></span> | -column_set <span class="emphasis"><em>set_name</em></span> ] \
     <span class="emphasis"><em>code_block</em></span> [ if_no_rows <span class="emphasis"><em>if_no_rows_block ]</em></span>
-</pre><p>Performs the SQL query <span class="emphasis"><em><code class="computeroutput">sql</code></em></span>, executing
-<span class="emphasis"><em><code class="computeroutput">code_block</code></em></span> once for each row with variables set to
-column values (or a set or array populated if <code class="computeroutput">-column_array</code> or
-<code class="computeroutput">column_set</code> is specified). If the query returns no rows, executes
-<span class="emphasis"><em><code class="computeroutput">if_no_rows_block</code></em></span> (if provided). </p><p>Example:</p><pre class="programlisting">
+</pre><p>Performs the SQL query <span class="emphasis"><em><tt class="computeroutput">sql</tt></em></span>, executing
+<span class="emphasis"><em><tt class="computeroutput">code_block</tt></em></span> once for each row with variables set to
+column values (or a set or array populated if <tt class="computeroutput">-column_array</tt> or
+<tt class="computeroutput">column_set</tt> is specified). If the query returns no rows, executes
+<span class="emphasis"><em><tt class="computeroutput">if_no_rows_block</tt></em></span> (if provided). </p><p>Example:</p><pre class="programlisting">
 
-db_foreach select_foo "select foo, bar from greeble" {
-    doc_body_append "&lt;li&gt;foo=$foo; bar=$bar\n"
+db_foreach select_foo &quot;select foo, bar from greeble&quot; {
+    doc_body_append &quot;&lt;li&gt;foo=$foo; bar=$bar\n&quot;
 } if_no_rows {
-    doc_body_append "&lt;li&gt;There are no greebles in the database.\n"
+    doc_body_append &quot;&lt;li&gt;There are no greebles in the database.\n&quot;
 }
 
 </pre><p>
-The code block may contain <code class="computeroutput">break</code> statements (which terminate the
-loop and flush the database handle) and <code class="computeroutput">continue</code> statements
-(which continue to the next row of the loop). </p></dd><dt><span class="term"><span class="strong"><strong><code class="computeroutput"><a name="kernel.dbapi_db_1row"></a>db_1row</code></strong></span></span></dt><dd><pre class="programlisting">
-<span class="strong"><strong>db_1row</strong></span> <span class="emphasis"><em>statement-name</em></span> <span class="emphasis"><em>sql</em></span> [ -bind <span class="emphasis"><em>bind_set_id</em></span> | -bind <span class="emphasis"><em>bind_value_list</em></span> ] \
+The code block may contain <tt class="computeroutput">break</tt> statements (which terminate the
+loop and flush the database handle) and <tt class="computeroutput">continue</tt> statements
+(which continue to the next row of the loop). </p></dd><dt><span class="term"><span class="strong"><tt class="computeroutput"><a name="kernel.dbapi_db_1row"></a>db_1row</tt></span></span></dt><dd><pre class="programlisting">
+<span class="strong">db_1row</span> <span class="emphasis"><em>statement-name</em></span> <span class="emphasis"><em>sql</em></span> [ -bind <span class="emphasis"><em>bind_set_id</em></span> | -bind <span class="emphasis"><em>bind_value_list</em></span> ] \
     [ -column_array <span class="emphasis"><em>array_name</em></span> | -column_set <span class="emphasis"><em>set_name</em></span> ]
-</pre><p>Performs the SQL query <span class="emphasis"><em><code class="computeroutput">sql</code></em></span>, setting variables to
+</pre><p>Performs the SQL query <span class="emphasis"><em><tt class="computeroutput">sql</tt></em></span>, setting variables to
 column values. Raises an error if the query does not return exactly 1 row. </p><p>Example:</p><pre class="programlisting">
 
-db_1row select_foo "select foo, bar from greeble where greeble_id = $greeble_id"
+db_1row select_foo &quot;select foo, bar from greeble where greeble_id = $greeble_id&quot;
 # Bombs if there's no such greeble!
 # Now $foo and $bar are set.
 
-</pre></dd><dt><span class="term"><span class="strong"><strong><code class="computeroutput"><a name="kernel.dbapi_db_0or1row"></a>db_0or1row</code></strong></span> </span></dt><dd><pre class="programlisting">
-<span class="strong"><strong>db_0or1row</strong></span> <span class="emphasis"><em>statement-name</em></span> <span class="emphasis"><em>sql</em></span> [ -bind <span class="emphasis"><em>bind_set_id</em></span> | -bind <span class="emphasis"><em>bind_value_list</em></span> ] \
+</pre></dd><dt><span class="term"><span class="strong"><tt class="computeroutput"><a name="kernel.dbapi_db_0or1row"></a>db_0or1row</tt></span> </span></dt><dd><pre class="programlisting">
+<span class="strong">db_0or1row</span> <span class="emphasis"><em>statement-name</em></span> <span class="emphasis"><em>sql</em></span> [ -bind <span class="emphasis"><em>bind_set_id</em></span> | -bind <span class="emphasis"><em>bind_value_list</em></span> ] \
     [ -column_array <span class="emphasis"><em>array_name</em></span> | -column_set <span class="emphasis"><em>set_name</em></span> ]
-</pre><p>Performs the SQL query <span class="emphasis"><em><code class="computeroutput">sql</code></em></span>. If a row is returned,
+</pre><p>Performs the SQL query <span class="emphasis"><em><tt class="computeroutput">sql</tt></em></span>. If a row is returned,
 sets variables to column values and returns 1. If no rows are returned,
-returns 0. If more than one row is returned, throws an error. </p></dd><dt><span class="term"><span class="strong"><strong><code class="computeroutput"><a name="kernel.dbapi_db_string"></a>db_string</code></strong></span> </span></dt><dd><pre class="programlisting">
-<span class="strong"><strong>db_string</strong></span> <span class="emphasis"><em>statement-name</em></span> <span class="emphasis"><em>sql</em></span> [ -default <span class="emphasis"><em>default</em></span> ] [ -bind <span class="emphasis"><em>bind_set_id</em></span> | -bind <span class="emphasis"><em>bind_value_list</em></span> ]
+returns 0. If more than one row is returned, throws an error. </p></dd><dt><span class="term"><span class="strong"><tt class="computeroutput"><a name="kernel.dbapi_db_string"></a>db_string</tt></span> </span></dt><dd><pre class="programlisting">
+<span class="strong">db_string</span> <span class="emphasis"><em>statement-name</em></span> <span class="emphasis"><em>sql</em></span> [ -default <span class="emphasis"><em>default</em></span> ] [ -bind <span class="emphasis"><em>bind_set_id</em></span> | -bind <span class="emphasis"><em>bind_value_list</em></span> ]
 </pre><p>Returns the first column of the result of SQL query
-<span class="emphasis"><em><code class="computeroutput">sql</code></em></span>. If <span class="emphasis"><em><code class="computeroutput">sql</code></em></span> doesn't return a
-row, returns <span class="emphasis"><em><code class="computeroutput">default</code></em></span> (or throws an error if
-<span class="emphasis"><em><code class="computeroutput">default</code></em></span> is unspecified). Analogous to
-<code class="computeroutput">database_to_tcl_string</code> and
-<code class="computeroutput">database_to_tcl_string_or_null</code>. 
+<span class="emphasis"><em><tt class="computeroutput">sql</tt></em></span>. If <span class="emphasis"><em><tt class="computeroutput">sql</tt></em></span> doesn't return a
+row, returns <span class="emphasis"><em><tt class="computeroutput">default</tt></em></span> (or throws an error if
+<span class="emphasis"><em><tt class="computeroutput">default</tt></em></span> is unspecified). Analogous to
+<tt class="computeroutput">database_to_tcl_string</tt> and
+<tt class="computeroutput">database_to_tcl_string_or_null</tt>. 
 
-</p></dd><dt><span class="term"><span class="strong"><strong><code class="computeroutput"><a name="kernel.dbapi_db_nextval"></a>db_nextval</code></strong></span> </span></dt><dd><pre class="programlisting">
-<span class="strong"><strong>db_nextval</strong></span> <span class="emphasis"><em>sequence-name</em></span>
+</p></dd><dt><span class="term"><span class="strong"><tt class="computeroutput"><a name="kernel.dbapi_db_nextval"></a>db_nextval</tt></span> </span></dt><dd><pre class="programlisting">
+<span class="strong">db_nextval</span> <span class="emphasis"><em>sequence-name</em></span>
 </pre><p>Returns the next value for the sequence <span class="emphasis"><em>sequence-name</em></span> (using a
-SQL statement like <code class="computeroutput">SELECT</code> <span class="emphasis"><em><code class="computeroutput">sequence-name</code></em></span><code class="computeroutput">.nextval FROM
-DUAL</code>). If sequence pooling is enabled for the sequence, transparently
+SQL statement like <tt class="computeroutput">SELECT</tt> <span class="emphasis"><em><tt class="computeroutput">sequence-name</tt></em></span><tt class="computeroutput">.nextval FROM
+DUAL</tt>). If sequence pooling is enabled for the sequence, transparently
 uses a value from the pool if available to save a round-trip to the database.
 
-</p></dd><dt><span class="term"><span class="strong"><strong><code class="computeroutput"><a name="kernel.dbapi_db_list"></a>db_list</code></strong></span></span></dt><dd><pre class="programlisting">
-<span class="strong"><strong>db_list</strong></span> <span class="emphasis"><em>statement-name</em></span> <span class="emphasis"><em>sql</em></span> [ -bind <span class="emphasis"><em>bind_set_id</em></span> | -bind <span class="emphasis"><em>bind_value_list</em></span> ]
+</p></dd><dt><span class="term"><span class="strong"><tt class="computeroutput"><a name="kernel.dbapi_db_list"></a>db_list</tt></span></span></dt><dd><pre class="programlisting">
+<span class="strong">db_list</span> <span class="emphasis"><em>statement-name</em></span> <span class="emphasis"><em>sql</em></span> [ -bind <span class="emphasis"><em>bind_set_id</em></span> | -bind <span class="emphasis"><em>bind_value_list</em></span> ]
 </pre><p>Returns a Tcl list of the values in the first column of the result of SQL
-query <span class="emphasis"><em><code class="computeroutput">sql</code></em></span>. If <span class="emphasis"><em><code class="computeroutput">sql</code></em></span> doesn't
+query <span class="emphasis"><em><tt class="computeroutput">sql</tt></em></span>. If <span class="emphasis"><em><tt class="computeroutput">sql</tt></em></span> doesn't
 return any rows, returns an empty list. Analogous to
-<code class="computeroutput">database_to_tcl_list</code>. 
+<tt class="computeroutput">database_to_tcl_list</tt>. 
 
-</p></dd><dt><span class="term"><span class="strong"><strong><code class="computeroutput"><a name="kernel.dbapi_db_list_of_lists"></a>db_list_of_lists</code></strong></span></span></dt><dd><pre class="programlisting">
-<span class="strong"><strong>db_list_of_lists</strong></span> <span class="emphasis"><em>statement-name</em></span> <span class="emphasis"><em>sql</em></span> [ -bind <span class="emphasis"><em>bind_set_id</em></span> | -bind <span class="emphasis"><em>bind_value_list</em></span> ]
+</p></dd><dt><span class="term"><span class="strong"><tt class="computeroutput"><a name="kernel.dbapi_db_list_of_lists"></a>db_list_of_lists</tt></span></span></dt><dd><pre class="programlisting">
+<span class="strong">db_list_of_lists</span> <span class="emphasis"><em>statement-name</em></span> <span class="emphasis"><em>sql</em></span> [ -bind <span class="emphasis"><em>bind_set_id</em></span> | -bind <span class="emphasis"><em>bind_value_list</em></span> ]
 </pre><p>Returns a Tcl list, each element of which is a list of all column values
-in a row of the result of SQL query <span class="emphasis"><em><code class="computeroutput">sql</code></em></span>. If
-<span class="emphasis"><em><code class="computeroutput">sql</code></em></span> doesn't return any rows, returns an empty list.
-(Analogous to <code class="computeroutput">database_to_tcl_list_list</code>.) 
+in a row of the result of SQL query <span class="emphasis"><em><tt class="computeroutput">sql</tt></em></span>. If
+<span class="emphasis"><em><tt class="computeroutput">sql</tt></em></span> doesn't return any rows, returns an empty list.
+(Analogous to <tt class="computeroutput">database_to_tcl_list_list</tt>.) 
 
-</p></dd><dt><span class="term"><span class="strong"><strong><code class="computeroutput"><a name="kernel.dbapi_db_list_of_ns_sets"></a>db_list_of_ns_sets</code></strong></span></span></dt><dd><pre class="programlisting">
-<span class="strong"><strong>db_list_of_ns_sets</strong></span> <span class="emphasis"><em>statement-name</em></span> <span class="emphasis"><em>sql</em></span> [ -bind <span class="emphasis"><em>bind_set_id</em></span> | -bind <span class="emphasis"><em>bind_value_list</em></span> ]
+</p></dd><dt><span class="term"><span class="strong"><tt class="computeroutput"><a name="kernel.dbapi_db_list_of_ns_sets"></a>db_list_of_ns_sets</tt></span></span></dt><dd><pre class="programlisting">
+<span class="strong">db_list_of_ns_sets</span> <span class="emphasis"><em>statement-name</em></span> <span class="emphasis"><em>sql</em></span> [ -bind <span class="emphasis"><em>bind_set_id</em></span> | -bind <span class="emphasis"><em>bind_value_list</em></span> ]
 </pre><p>
 	Returns a list of ns_sets with the values of each column of each row
-	returned by the <code class="computeroutput">sql</code> query specified.
-  </p></dd><dt><span class="term"><span class="strong"><strong><code class="computeroutput"><a name="kernel.dbapi_db_dml"></a>db_dml</code></strong></span></span></dt><dd><pre class="programlisting">
-<span class="strong"><strong>db_dml</strong></span> <span class="emphasis"><em>statement-name</em></span> <span class="emphasis"><em>sql</em></span> \
+	returned by the <tt class="computeroutput">sql</tt> query specified.
+  </p></dd><dt><span class="term"><span class="strong"><tt class="computeroutput"><a name="kernel.dbapi_db_dml"></a>db_dml</tt></span></span></dt><dd><pre class="programlisting">
+<span class="strong">db_dml</span> <span class="emphasis"><em>statement-name</em></span> <span class="emphasis"><em>sql</em></span> \
     [ -bind <span class="emphasis"><em>bind_set_id</em></span> | -bind <span class="emphasis"><em>bind_value_list</em></span> ] \
     [ -blobs <span class="emphasis"><em>blob_list</em></span> | -clobs <span class="emphasis"><em>clob_list</em></span> |
       -blob_files <span class="emphasis"><em>blob_file_list</em></span> | -clob_files <span class="emphasis"><em>clob_file_list</em></span> ]
-</pre><p>Performs the DML or DDL statement <span class="emphasis"><em><code class="computeroutput">sql</code></em></span>. </p><p>If a length-<span class="emphasis"><em>n</em></span> list of blobs or clobs is provided, then the SQL
+</pre><p>Performs the DML or DDL statement <span class="emphasis"><em><tt class="computeroutput">sql</tt></em></span>. </p><p>If a length-<span class="emphasis"><em>n</em></span> list of blobs or clobs is provided, then the SQL
 should return <span class="emphasis"><em>n</em></span> blobs or clobs into the bind variables
-<code class="computeroutput">:1</code>, <code class="computeroutput">:2</code>, ... :<span class="emphasis"><em><code class="computeroutput">n</code></em></span>.
-<span class="emphasis"><em><code class="computeroutput">blobs</code></em></span> or <span class="emphasis"><em><code class="computeroutput">clobs</code></em></span>, if specified,
+<tt class="computeroutput">:1</tt>, <tt class="computeroutput">:2</tt>, ... :<span class="emphasis"><em><tt class="computeroutput">n</tt></em></span>.
+<span class="emphasis"><em><tt class="computeroutput">blobs</tt></em></span> or <span class="emphasis"><em><tt class="computeroutput">clobs</tt></em></span>, if specified,
 should be a list of individual BLOBs or CLOBs to insert;
-<span class="emphasis"><em><code class="computeroutput">blob_files</code></em></span> or <span class="emphasis"><em><code class="computeroutput">clob_files</code></em></span>, if
+<span class="emphasis"><em><tt class="computeroutput">blob_files</tt></em></span> or <span class="emphasis"><em><tt class="computeroutput">clob_files</tt></em></span>, if
 specified, should be a list of <span class="emphasis"><em>paths to files</em></span> containing the data to
-insert. Only one of <code class="computeroutput">-blobs</code>, <code class="computeroutput">-clobs</code>,
-<code class="computeroutput">-blob_files</code>, and <code class="computeroutput">-clob_files</code> may be provided.</p><p>Example:</p><pre class="programlisting">
+insert. Only one of <tt class="computeroutput">-blobs</tt>, <tt class="computeroutput">-clobs</tt>,
+<tt class="computeroutput">-blob_files</tt>, and <tt class="computeroutput">-clob_files</tt> may be provided.</p><p>Example:</p><pre class="programlisting">
 
-db_dml insert_photos "
+db_dml insert_photos &quot;
         insert photos(photo_id, image, thumbnail_image)
         values(photo_id_seq.nextval, empty_blob(), empty_blob())
         returning image, thumbnail_image into :1, :2
-    "  -blob_files [list "/var/tmp/the_photo" "/var/tmp/the_thumbnail"] 
+    &quot;  -blob_files [list &quot;/var/tmp/the_photo&quot; &quot;/var/tmp/the_thumbnail&quot;] 
 
 </pre><p>
-This inserts a new row into the <code class="computeroutput">photos</code> table, with the contents
-of the files <code class="computeroutput">/var/tmp/the_photo</code> and
-<code class="computeroutput">/var/tmp/the_thumbnail</code> in the <code class="computeroutput">image</code> and
-<code class="computeroutput">thumbnail</code> columns, respectively. 
+This inserts a new row into the <tt class="computeroutput">photos</tt> table, with the contents
+of the files <tt class="computeroutput">/var/tmp/the_photo</tt> and
+<tt class="computeroutput">/var/tmp/the_thumbnail</tt> in the <tt class="computeroutput">image</tt> and
+<tt class="computeroutput">thumbnail</tt> columns, respectively. 
 
 
 </p></dd><dt><span class="term">
-<span class="strong"><strong><code class="computeroutput"><a name="kernel.dbapi_db_write_clob"></a>db_write_clob</code></strong></span>,
-<span class="strong"><strong><code class="computeroutput"><a name="kernel.dbapi_db_write_blob"></a>db_write_blob</code></strong></span>,
-<span class="strong"><strong><code class="computeroutput"><a name="kernel.dbapi_db_blob_get_file"></a>db_blob_get_file</code></strong></span>
+<span class="strong"><tt class="computeroutput"><a name="kernel.dbapi_db_write_clob"></a>db_write_clob</tt></span>,
+<span class="strong"><tt class="computeroutput"><a name="kernel.dbapi_db_write_blob"></a>db_write_blob</tt></span>,
+<span class="strong"><tt class="computeroutput"><a name="kernel.dbapi_db_blob_get_file"></a>db_blob_get_file</tt></span>
 </span></dt><dd><pre class="programlisting">
-<span class="strong"><strong>db_write_clob</strong></span> <span class="emphasis"><em>statement-name</em></span> <span class="emphasis"><em>sql</em></span> [ -bind <span class="emphasis"><em>bind_set_id</em></span> | -bind <span class="emphasis"><em>bind_value_list</em></span> ]
+<span class="strong">db_write_clob</span> <span class="emphasis"><em>statement-name</em></span> <span class="emphasis"><em>sql</em></span> [ -bind <span class="emphasis"><em>bind_set_id</em></span> | -bind <span class="emphasis"><em>bind_value_list</em></span> ]
 
-<span class="strong"><strong>db_write_blob</strong></span> <span class="emphasis"><em>statement-name</em></span> <span class="emphasis"><em>sql</em></span> [ -bind <span class="emphasis"><em>bind_set_id</em></span> | -bind <span class="emphasis"><em>bind_value_list</em></span> ]
+<span class="strong">db_write_blob</span> <span class="emphasis"><em>statement-name</em></span> <span class="emphasis"><em>sql</em></span> [ -bind <span class="emphasis"><em>bind_set_id</em></span> | -bind <span class="emphasis"><em>bind_value_list</em></span> ]
 
-<span class="strong"><strong>db_blob_get_file</strong></span> <span class="emphasis"><em>statement-name</em></span> <span class="emphasis"><em>sql</em></span> [ -bind <span class="emphasis"><em>bind_set_id</em></span> | -bind <span class="emphasis"><em>bind_value_list</em></span> ]
-</pre><p>Analagous to <code class="computeroutput">ns_ora write_clob/write_blob/blob_get_file</code>. 
+<span class="strong">db_blob_get_file</span> <span class="emphasis"><em>statement-name</em></span> <span class="emphasis"><em>sql</em></span> [ -bind <span class="emphasis"><em>bind_set_id</em></span> | -bind <span class="emphasis"><em>bind_value_list</em></span> ]
+</pre><p>Analagous to <tt class="computeroutput">ns_ora write_clob/write_blob/blob_get_file</tt>. 
 
 
-</p></dd><dt><span class="term"><span class="strong"><strong><code class="computeroutput"><a name="kernel.dbapi_db_release_unused_handles"></a>db_release_unused_handles</code></strong></span></span></dt><dd><pre class="programlisting">
-<span class="strong"><strong>db_release_unused_handles</strong></span>
-</pre><p>Releases any allocated, unused database handles. </p></dd><dt><span class="term"><span class="strong"><strong><code class="computeroutput"><a name="kernel.dbapi_db_transaction"></a>db_transaction</code></strong></span></span></dt><dd><pre class="programlisting">
-<span class="strong"><strong>db_transaction</strong></span> <span class="emphasis"><em>code_block</em></span> [ on_error { <span class="emphasis"><em>code_block</em></span> } ]
-</pre><p>Executes <span class="emphasis"><em><code class="computeroutput">code_block</code></em></span> transactionally. Nested
-transactions are supported (<code class="computeroutput">end transaction</code> is transparently
-<code class="computeroutput">ns_db dml</code>'ed when the outermost transaction completes). The
-<code class="computeroutput">db_abort_transaction</code> command can be used to abort all levels of
-transactions. It is possible to specify an optional <code class="computeroutput">on_error</code>
+</p></dd><dt><span class="term"><span class="strong"><tt class="computeroutput"><a name="kernel.dbapi_db_release_unused_handles"></a>db_release_unused_handles</tt></span></span></dt><dd><pre class="programlisting">
+<span class="strong">db_release_unused_handles</span>
+</pre><p>Releases any allocated, unused database handles. </p></dd><dt><span class="term"><span class="strong"><tt class="computeroutput"><a name="kernel.dbapi_db_transaction"></a>db_transaction</tt></span></span></dt><dd><pre class="programlisting">
+<span class="strong">db_transaction</span> <span class="emphasis"><em>code_block</em></span> [ on_error { <span class="emphasis"><em>code_block</em></span> } ]
+</pre><p>Executes <span class="emphasis"><em><tt class="computeroutput">code_block</tt></em></span> transactionally. Nested
+transactions are supported (<tt class="computeroutput">end transaction</tt> is transparently
+<tt class="computeroutput">ns_db dml</tt>'ed when the outermost transaction completes). The
+<tt class="computeroutput">db_abort_transaction</tt> command can be used to abort all levels of
+transactions. It is possible to specify an optional <tt class="computeroutput">on_error</tt>
 code block that will be executed if some code in <span class="emphasis"><em>code_block</em></span> throws
-an exception. The variable <code class="computeroutput">errmsg</code> will be bound in that scope.
-If there is no <code class="computeroutput">on_error</code> code, any errors will be propagated. </p><p>Example:</p><pre class="programlisting">
+an exception. The variable <tt class="computeroutput">errmsg</tt> will be bound in that scope.
+If there is no <tt class="computeroutput">on_error</tt> code, any errors will be propagated. </p><p>Example:</p><pre class="programlisting">
 
 proc replace_the_foo { col } {
     db_transaction {
-        db_dml "delete from foo"
-        db_dml "insert into foo(col) values($col)"
+        db_dml &quot;delete from foo&quot;
+        db_dml &quot;insert into foo(col) values($col)&quot;
     }
 }
 
 proc print_the_foo {} {
-    doc_body_append "foo is [db_string "select col from foo"]&lt;br&gt;\n"
+    doc_body_append &quot;foo is [db_string &quot;select col from foo&quot;]&lt;br&gt;\n&quot;
 }
 
 replace_the_foo 8
-print_the_foo ; # Writes out "foo is 8"
+print_the_foo ; # Writes out &quot;foo is 8&quot;
 
 db_transaction {
     replace_the_foo 14
-    print_the_foo ; # Writes out "foo is 14"
-    db_dml "insert into some_other_table(col) values(999)"
+    print_the_foo ; # Writes out &quot;foo is 14&quot;
+    db_dml &quot;insert into some_other_table(col) values(999)&quot;
     ...
     db_abort_transaction
 } on_error {
-    doc_body_append "Error in transaction: $errmsg"
+    doc_body_append &quot;Error in transaction: $errmsg&quot;
 }
     
 
-print_the_foo ; # Writes out "foo is 8"
+print_the_foo ; # Writes out &quot;foo is 8&quot;
 
-</pre></dd><dt><span class="term"><span class="strong"><strong><code class="computeroutput"><a name="kernel.dbapi_db_abort_transaction"></a>db_abort_transaction</code></strong></span>
+</pre></dd><dt><span class="term"><span class="strong"><tt class="computeroutput"><a name="kernel.dbapi_db_abort_transaction"></a>db_abort_transaction</tt></span>
 </span></dt><dd><pre class="programlisting">
-<span class="strong"><strong>db_abort_transaction</strong></span>
+<span class="strong">db_abort_transaction</span>
 </pre><p>Aborts all levels of a transaction. That is if this is called within
 several nested transactions, all of them are terminated. Use this insetead of
-<code class="computeroutput">db_dml "abort" "abort transaction"</code>. 
+<tt class="computeroutput">db_dml &quot;abort&quot; &quot;abort transaction&quot;</tt>. 
 
 
-</p></dd><dt><span class="term"><span class="strong"><strong><code class="computeroutput"><a name="kernel.dbapi_db_multirow"></a>db_multirow</code></strong></span></span></dt><dd><pre class="programlisting">
-<span class="strong"><strong>db_multirow</strong></span> [ -local ] [ -append ] [ -extend <span class="emphasis"><em>column_list</em></span> ] \
+</p></dd><dt><span class="term"><span class="strong"><tt class="computeroutput"><a name="kernel.dbapi_db_multirow"></a>db_multirow</tt></span></span></dt><dd><pre class="programlisting">
+<span class="strong">db_multirow</span> [ -local ] [ -append ] [ -extend <span class="emphasis"><em>column_list</em></span> ] \
     <span class="emphasis"><em>var-name</em></span> <span class="emphasis"><em>statement-name</em></span> <span class="emphasis"><em>sql</em></span> \
     [ -bind <span class="emphasis"><em>bind_set_id</em></span> | -bind <span class="emphasis"><em>bind_value_list</em></span> ] \
     <span class="emphasis"><em>code_block</em></span> [ if_no_rows <span class="emphasis"><em>if_no_rows_block ]</em></span>
 </pre><p>
-	Performs the SQL query <code class="computeroutput">sql</code>, saving results in variables
+	Performs the SQL query <tt class="computeroutput">sql</tt>, saving results in variables
     of the form
-    <code class="computeroutput"><span class="replaceable"><span class="replaceable">var_name</span></span>:1</code>, <code class="computeroutput"><span class="replaceable"><span class="replaceable">var_name</span></span>:2</code>, etc,
-    setting <code class="computeroutput"><span class="replaceable"><span class="replaceable">var_name</span></span>:rowcount</code> to the total number
-    of rows, and setting <code class="computeroutput"><span class="replaceable"><span class="replaceable">var_name</span></span>:columns</code> to a
+    <tt class="computeroutput"><span class="replaceable"><span class="replaceable">var_name</span></span>:1</tt>, <tt class="computeroutput"><span class="replaceable"><span class="replaceable">var_name</span></span>:2</tt>, etc,
+    setting <tt class="computeroutput"><span class="replaceable"><span class="replaceable">var_name</span></span>:rowcount</tt> to the total number
+    of rows, and setting <tt class="computeroutput"><span class="replaceable"><span class="replaceable">var_name</span></span>:columns</tt> to a
     list of column names. 
     </p><p>
     Each row also has a column, rownum, automatically
     added and set to the row number, starting with 1. Note that this will
     override any column in the SQL statement named 'rownum', also if you're
     using the Oracle rownum pseudo-column.
     </p><p>
-    If the <code class="computeroutput">-local</code> is passed, the variables defined
+    If the <tt class="computeroutput">-local</tt> is passed, the variables defined
     by db_multirow will be set locally (useful if you're compiling dynamic templates
     in a function or similar situations).
     </p><p>                                                                                                                                        
@@ -575,19 +576,19 @@
     multirow.
     </p><p>
     You may also add additional, computed columns to the multirow, using the
-    <code class="computeroutput">-extend { <span class="replaceable"><span class="replaceable">col_1</span></span> <span class="replaceable"><span class="replaceable">col_2</span></span> ... }</code> switch. This is
+    <tt class="computeroutput">-extend { <span class="replaceable"><span class="replaceable">col_1</span></span> <span class="replaceable"><span class="replaceable">col_2</span></span> ... }</tt> switch. This is
     useful for things like constructing a URL for the object retrieved by
     the query.
     </p><p>
     If you're constructing your multirow through multiple queries with the
     same set of columns, but with different rows, you can use the
-    <code class="computeroutput">-append</code> switch. This causes the rows returned by this query
+    <tt class="computeroutput">-append</tt> switch. This causes the rows returned by this query
     to be appended to the rows already in the multirow, instead of starting
     a clean multirow, as is the normal behavior. The columns must match the
     columns in the original multirow, or an error will be thrown.
     </p><p>
-    Your code block may call <code class="computeroutput">continue</code> in order to skip a row
-    and not include it in the multirow. Or you can call <code class="computeroutput">break</code>
+    Your code block may call <tt class="computeroutput">continue</tt> in order to skip a row
+    and not include it in the multirow. Or you can call <tt class="computeroutput">break</tt>
     to skip this row and quit looping.
     </p><p>
 
@@ -602,28 +603,28 @@
 } {
     set user_url [acs_community_member_url -user_id $user_id]
 }
-    </pre></dd><dt><span class="term"><span class="strong"><strong><code class="computeroutput"><a name="kernel.dbapi_db_resultrows"></a>db_resultrows</code></strong></span></span></dt><dd><pre class="programlisting">
-<span class="strong"><strong>db_resultrows</strong></span>
+    </pre></dd><dt><span class="term"><span class="strong"><tt class="computeroutput"><a name="kernel.dbapi_db_resultrows"></a>db_resultrows</tt></span></span></dt><dd><pre class="programlisting">
+<span class="strong">db_resultrows</span>
 </pre><p>Returns the number of rows affected or returned by the previous
 statement. 
 
 
-</p></dd><dt><span class="term"><span class="strong"><strong><code class="computeroutput"><a name="kernel.dbapi_db_with_handle"></a>db_with_handle</code></strong></span></span></dt><dd><pre class="programlisting">
-<span class="strong"><strong>db_with_handle</strong></span> <span class="emphasis"><em>var</em></span> <span class="emphasis"><em>code_block</em></span>
-</pre><p>Places a database handle into the variable <span class="emphasis"><em><code class="computeroutput">var</code></em></span> and
-executes <span class="emphasis"><em><code class="computeroutput">code_block</code></em></span>. This is useful when you don't
-want to have to use the new API (<code class="computeroutput">db_foreach</code>,
-<code class="computeroutput">db_1row</code>, etc.), but need to use database handles explicitly. </p><p>Example:</p><pre class="programlisting">
+</p></dd><dt><span class="term"><span class="strong"><tt class="computeroutput"><a name="kernel.dbapi_db_with_handle"></a>db_with_handle</tt></span></span></dt><dd><pre class="programlisting">
+<span class="strong">db_with_handle</span> <span class="emphasis"><em>var</em></span> <span class="emphasis"><em>code_block</em></span>
+</pre><p>Places a database handle into the variable <span class="emphasis"><em><tt class="computeroutput">var</tt></em></span> and
+executes <span class="emphasis"><em><tt class="computeroutput">code_block</tt></em></span>. This is useful when you don't
+want to have to use the new API (<tt class="computeroutput">db_foreach</tt>,
+<tt class="computeroutput">db_1row</tt>, etc.), but need to use database handles explicitly. </p><p>Example:</p><pre class="programlisting">
 
 proc lookup_the_foo { foo } {
     db_with_handle db {
-        return [db_string unused "select ..."]
+        return [db_string unused &quot;select ...&quot;]
     }
 }
 
 db_with_handle db {
     # Now there's a database handle in $db.
-    set selection [ns_db select $db "select foo from bar"]
+    set selection [ns_db select $db &quot;select foo from bar&quot;]
     while { [ns_db getrow $db $selection] } {
         set_variables_after_query
 
@@ -632,96 +633,96 @@
 }
 
 </pre></dd><dt><span class="term">
-		<span class="strong"><strong>
-			<code class="computeroutput">
+		<span class="strong">
+			<tt class="computeroutput">
 				<a name="kernel.dbapi_db_name"></a>db_name
-			</code>
-		</strong></span>
+			</tt>
+		</span>
 	</span></dt><dd><pre class="programlisting">
-			<span class="strong"><strong>
-				<code class="computeroutput">db_name</code>
-			</strong></span>
+			<span class="strong">
+				<tt class="computeroutput">db_name</tt>
+			</span>
 		</pre><p>
 		 	Returns the name of the database, as returned by the driver.
 		</p></dd><dt><span class="term">
-		<span class="strong"><strong>
-			<code class="computeroutput">
+		<span class="strong">
+			<tt class="computeroutput">
 				<a name="kernel.dbapi_db_type"></a>db_type
-			</code>
-		</strong></span>
+			</tt>
+		</span>
 	</span></dt><dd><pre class="programlisting">
-			<span class="strong"><strong>
-				<code class="computeroutput">db_type</code>
-			</strong></span>
+			<span class="strong">
+				<tt class="computeroutput">db_type</tt>
+			</span>
 		</pre><p>
 			Returns the RDBMS type (i.e. oracle, postgresql) this OpenACS installation is
 			using.  The nsv ad_database_type is set up during the bootstrap process.
 		</p></dd><dt><span class="term">
-		<span class="strong"><strong>
-			<code class="computeroutput">
+		<span class="strong">
+			<tt class="computeroutput">
 				<a name="kernel.dbapi_db_compatible_rdbms_p"></a>db_compatible_rdbms_p
-			</code>
-		</strong></span>
+			</tt>
+		</span>
 	</span></dt><dd><pre class="programlisting">
-			<span class="strong"><strong>db_compatible_rdbms_p</strong></span> db_type
+			<span class="strong">db_compatible_rdbms_p</span> db_type
 		</pre><p>
 			Returns 1 if the given db_type is compatible with the current RDBMS.
 		</p></dd><dt><span class="term">
-		<span class="strong"><strong>
-			<code class="computeroutput">
+		<span class="strong">
+			<tt class="computeroutput">
 				<a name="kernel.dbapi_db_package_supports_rdbms_p"></a>db_package_supports_rdbms_p
-			</code>
-		</strong></span>
+			</tt>
+		</span>
 	</span></dt><dd><pre class="programlisting">
-			<span class="strong"><strong>db_package_supports_rdbms_p</strong></span> db_type_list
+			<span class="strong">db_package_supports_rdbms_p</span> db_type_list
 		</pre><p>
 			Returns 1 if db_type_list contains the current RDMBS type.  A package
 			intended to run with a given RDBMS must note this in it's package info
 			file regardless of whether or not it actually uses the database. 
 		</p></dd><dt><span class="term">
-		<span class="strong"><strong>
-			<code class="computeroutput">
+		<span class="strong">
+			<tt class="computeroutput">
 				<a name="kernel.dbapi_db_legacy_package_p"></a>db_legacy_package_p
-			</code>
-		</strong></span>
+			</tt>
+		</span>
 	</span></dt><dd><pre class="programlisting">
-			<span class="strong"><strong>db_legacy_package_p</strong></span> db_type_list
+			<span class="strong">db_legacy_package_p</span> db_type_list
 		</pre><p>
 			Returns 1 if the package is a legacy package.  We can only tell for certain if
 			it explicitly supports Oracle 8.1.6 rather than the OpenACS more general oracle.
 		</p></dd><dt><span class="term">
-		<span class="strong"><strong>
-			<code class="computeroutput">
+		<span class="strong">
+			<tt class="computeroutput">
 				<a name="kernel.dbapi_db_version"></a>db_version
-			</code>
-		</strong></span>
+			</tt>
+		</span>
 	</span></dt><dd><pre class="programlisting">
-			<span class="strong"><strong>db_version</strong></span>
+			<span class="strong">db_version</span>
 		</pre><p>
 			Returns the RDBMS version (i.e. 8.1.6 is a recent Oracle version; 7.1 a
 			recent PostgreSQL version.
 		</p></dd><dt><span class="term">
-		<span class="strong"><strong>
-			<code class="computeroutput">
+		<span class="strong">
+			<tt class="computeroutput">
 				<a name="kernel.dbapi_db_current_rdbms"></a>db_current_rdbms
-			</code>
-		</strong></span>
+			</tt>
+		</span>
 	</span></dt><dd><pre class="programlisting">
-			<span class="strong"><strong>db_current_rdbms</strong></span>
+			<span class="strong">db_current_rdbms</span>
 		</pre><p>
 			Returns the current rdbms type and version.
 		</p></dd><dt><span class="term">
-		<span class="strong"><strong>
-			<code class="computeroutput">
+		<span class="strong">
+			<tt class="computeroutput">
 				<a name="kernel.dbapi_db_known_database_types"></a>db_known_database_types
-			</code>
-		</strong></span>
+			</tt>
+		</span>
 	</span></dt><dd><pre class="programlisting">
-			<span class="strong"><strong>db_known_database_types</strong></span>
+			<span class="strong">db_known_database_types</span>
 		</pre><p>
 			Returns a list of three-element lists describing the database engines known
 			to OpenACS.  Each sublist contains the internal database name (used in file
-			paths, etc), the driver name, and a "pretty name" to be used in selection
+			paths, etc), the driver name, and a &quot;pretty name&quot; to be used in selection
 			forms displayed to the user.
 		</p><p>
 			The nsv containing the list is initialized by the bootstrap script and should
Index: openacs-4/packages/acs-core-docs/www/db-api.html
===================================================================
RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/db-api.html,v
diff -u -r1.43 -r1.43.4.1
--- openacs-4/packages/acs-core-docs/www/db-api.html	17 Jul 2006 05:38:31 -0000	1.43
+++ openacs-4/packages/acs-core-docs/www/db-api.html	3 Feb 2008 12:07:38 -0000	1.43.4.1
@@ -1,21 +1,22 @@
-<html><head><meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"><title>The OpenACS Database Access API</title><meta name="generator" content="DocBook XSL Stylesheets V1.70.1"><link rel="home" href="index.html" title="OpenACS Core Documentation"><link rel="up" href="dev-guide.html" title="Chapter�11.�Development Reference"><link rel="previous" href="request-processor.html" title="The Request Processor"><link rel="next" href="templates.html" title="Using Templates in OpenACS"><link rel="stylesheet" href="openacs.css" type="text/css"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><a href="http://openacs.org"><img src="/doc/images/alex.jpg" border="0" alt="Alex logo"></a><table width="100%" summary="Navigation header" border="0"><tr><td width="20%" align="left"><a accesskey="p" href="request-processor.html">Prev</a> </td><th width="60%" align="center">Chapter�11.�Development Reference</th><td width="20%" align="right"> <a accesskey="n" href="templates.html">Next</a></td></tr></table><hr></div><div class="sect1" lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="db-api"></a>The OpenACS Database Access API</h2></div></div></div><p>
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html><head><meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"><title>The OpenACS Database Access API</title><meta name="generator" content="DocBook XSL Stylesheets V1.60.1"><link rel="home" href="index.html" title="OpenACS Core Documentation"><link rel="up" href="dev-guide.html" title="Chapter�11.�Development Reference"><link rel="previous" href="request-processor.html" title="The Request Processor"><link rel="next" href="templates.html" title="Using Templates in OpenACS"><link rel="stylesheet" href="openacs.css" type="text/css"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><a href="http://openacs.org"><img src="/doc/images/alex.jpg" border="0" alt="Alex logo"></a><table width="100%" summary="Navigation header" border="0"><tr><td width="20%" align="left"><a accesskey="p" href="request-processor.html">Prev</a> </td><th width="60%" align="center">Chapter�11.�Development Reference</th><td width="20%" align="right"> <a accesskey="n" href="templates.html">Next</a></td></tr></table><hr></div><div class="sect1" lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="db-api"></a>The OpenACS Database Access API</h2></div></div><div></div></div><p>
     By Pete Su and Jon Salz. Modified by Roberto Mello.
-  </p><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="db-api-overview"></a>Overview</h3></div></div></div><p>
+  </p><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="db-api-overview"></a>Overview</h3></div></div><div></div></div><p>
       One of OpenACS's great strengths is that code written for it is
       very close to the database. It is very easy to interact with the
       database from anywhere within OpenACS, and we have a
       coherent API for database access which makes this even easier.
     </p><p>
       More detailed information about the DB api is available at
       <a href="db-api-detailed.html">Database Access API</a>.
-    </p></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="db-api-examples"></a>DB API Examples</h3></div></div></div><p>
+    </p></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="db-api-examples"></a>DB API Examples</h3></div></div><div></div></div><p>
       The OpenACS database API is meant to save developers from making
       common mistakes and to provide a more structured syntax for
       specifying database operations, including transactions.  Here's
       an example of the API.
     </p><pre class="programlisting">
 set count 0
-set tcl_var "foo"
+set tcl_var &quot;foo&quot;
 set sql {
       	SELECT foo, bar, baz
        FROM some_table, some_other_table
@@ -38,17 +39,17 @@
 	    No explicit code for grabbing and releasing handles. Usage of the
 	    Database API implicitly deals with all handle management issues.
 	  </p></li><li><p>
-	    The <code class="computeroutput">db_transaction</code> command
+	    The <tt class="computeroutput">db_transaction</tt> command
 	    makes the scope of a transaction
-	    clear; <code class="computeroutput">db_transaction</code> takes the
+	    clear; <tt class="computeroutput">db_transaction</tt> takes the
 	    code block argument and automatically runs it in the context of a
 	    transaction.  If you use something like db_foreach though, you need to 
             make sure that there are no calls in the code block which would take
             a second db handle since the transaction is only valid for 
             one handle (thats why we build up a list of returned values and call 
             a second proc outside the db_foreach loop).
 	  </p></li><li><p>
-	    The command <code class="computeroutput">db_foreach</code> writes
+	    The command <tt class="computeroutput">db_foreach</tt> writes
 	    our old while loop for us.
 	  </p></li><li><p>
 	    Every SQL query has a name, which is used in conjunction with .XQL files
@@ -57,7 +58,7 @@
 	    Finally and most importantly, there API implements bind variables, which we will cover next.
 	  </p></li></ol></div><p>
 
-    </p></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="db-api-bindvariables"></a>Bind Variables</h3></div></div></div><p>
+    </p></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="db-api-bindvariables"></a>Bind Variables</h3></div></div><div></div></div><p>
       Bind variables are placeholders for literal values in an SQL
       query being sent to the server.  In the old way, data was
       generally passed to directly to the DB backend, via Tcl string
@@ -128,8 +129,8 @@
       query, and Tcl style string interpolation does not happen. So you
       cannot do something like:
     </p><pre class="programlisting">
-set table "baz"
-set condition "where foo = bar"
+set table &quot;baz&quot;
+set condition &quot;where foo = bar&quot;
 
 db_foreach my_query { select :table from some_table where :condition }
     </pre><p>
@@ -141,24 +142,24 @@
       Finally, the DB API has several different styles for passing bind
       variable values to queries. In general, use the style presented here
       because it is the most convenient. 
-    </p><div class="sect3" lang="en"><div class="titlepage"><div><div><h4 class="title"><a name="db-api-bind-vars-usage"></a>Usage</h4></div></div></div><p>Every <code class="computeroutput">db_*</code> command accepting a SQL command as an argument
+    </p><div class="sect3" lang="en"><div class="titlepage"><div><div><h4 class="title"><a name="db-api-bind-vars-usage"></a>Usage</h4></div></div><div></div></div><p>Every <tt class="computeroutput">db_*</tt> command accepting a SQL command as an argument
 	supports bind variables. You can either</p><div class="itemizedlist"><ul type="disc"><li><p>
-	    Specify the <code class="computeroutput">-bind</code> switch to provide a set with bind variable
+	    Specify the <tt class="computeroutput">-bind</tt> switch to provide a set with bind variable
 	    values, or
 	  </p></li><li><p>
-	    Specify the <code class="computeroutput">-bind</code> switch to explicitly provide a list of
+	    Specify the <tt class="computeroutput">-bind</tt> switch to explicitly provide a list of
 	    bind variable names and values, or
 	  </p></li><li><p>
 	    Not specify a bind variable list at all, in which case Tcl variables are
 	    used as bind variables.
 	  </p></li></ul></div><p>
-	The default behavior (i.e., if the <code class="computeroutput">-bind</code> switch is omitted) is
+	The default behavior (i.e., if the <tt class="computeroutput">-bind</tt> switch is omitted) is
 	that these procedures expect to find local variables that correspond in name
 	to the referenced bind variables, e.g.: 
       </p><pre class="programlisting">
 
 set user_id 123456
-set role "administrator"
+set role &quot;administrator&quot;
 
 db_foreach user_group_memberships_by_role {
     select g.group_id, g.group_name
@@ -168,18 +169,18 @@
     and map.role = :role
 } {
     # do something for each group of which user 123456 is in the role
-    # of "administrator"
+    # of &quot;administrator&quot;
 }
 
       </pre><p>
-	The value of the local Tcl variable <code class="computeroutput">user_id</code> (123456) is bound to
-	the <code class="computeroutput">user_id</code> bind variable. 
-      </p><p>The <code class="computeroutput">-bind</code> switch can takes the name of an <code class="computeroutput">ns_set</code>
+	The value of the local Tcl variable <tt class="computeroutput">user_id</tt> (123456) is bound to
+	the <tt class="computeroutput">user_id</tt> bind variable. 
+      </p><p>The <tt class="computeroutput">-bind</tt> switch can takes the name of an <tt class="computeroutput">ns_set</tt>
 	containing keys for each bind variable named in the query, e.g.:</p><pre class="programlisting">
 
 set bind_vars [ns_set create]
 ns_set put $bind_vars user_id 123456
-ns_set put $bind_vars role "administrator"
+ns_set put $bind_vars role &quot;administrator&quot;
 
 db_foreach user_group_memberships_by_role {
     select g.group_id, g.group_name
@@ -189,11 +190,11 @@
     and map.role = :role
 } -bind $bind_vars {
     # do something for each group in which user 123456 has the role
-    # of "administrator"
+    # of &quot;administrator&quot;
 }
 
       </pre><p>
-	Alternatively, as an argument to <code class="computeroutput">-bind</code> you can specify a list of
+	Alternatively, as an argument to <tt class="computeroutput">-bind</tt> you can specify a list of
 	alternating name/value pairs for bind variables: 
       </p><pre class="programlisting">
 	
@@ -203,22 +204,22 @@
     where g.group_id = map.user_id
     and map.user_id = :user_id
     and map.role = :role
-} -bind [list user_id 123456 role "administrator"] {
+} -bind [list user_id 123456 role &quot;administrator&quot;] {
     # do something for each group in which user 123456 has the role
-    # of "administrator"
+    # of &quot;administrator&quot;
 }
 
-      </pre></div><div class="sect3" lang="en"><div class="titlepage"><div><div><h4 class="title"><a name="dbapi_nulls_and_bind_vars"></a>Nulls and Bind Variables</h4></div></div></div><p>
+      </pre></div><div class="sect3" lang="en"><div class="titlepage"><div><div><h4 class="title"><a name="dbapi_nulls_and_bind_vars"></a>Nulls and Bind Variables</h4></div></div><div></div></div><p>
 	When processing a DML statement, Oracle coerces empty strings into
-	<code class="computeroutput">null</code>. (This coercion does <span class="emphasis"><em>not</em></span> occur in the
-	<code class="computeroutput">WHERE</code> clause of a query, i.e.
-	<code class="computeroutput">col = ''</code> and
-	<code class="computeroutput">col is null</code> are not equivalent.) 
+	<tt class="computeroutput">null</tt>. (This coercion does <span class="emphasis"><em>not</em></span> occur in the
+	<tt class="computeroutput">WHERE</tt> clause of a query, i.e.
+	<tt class="computeroutput">col = ''</tt> and
+	<tt class="computeroutput">col is null</tt> are not equivalent.) 
       </p><p>As a result, when using bind variables, the only way to make Oracle set a
-	column value to <code class="computeroutput">null</code> is to set the corresponding bind variable
+	column value to <tt class="computeroutput">null</tt> is to set the corresponding bind variable
 	to the empty string, since a bind variable whose value is the string
-	"null" will be interpreted as the literal string
-	"null".</p><p>These Oracle quirks complicate the process of writing clear and abstract
+	&quot;null&quot; will be interpreted as the literal string
+	&quot;null&quot;.</p><p>These Oracle quirks complicate the process of writing clear and abstract
 	DML difficult. Here is an example that illustrates why:</p><pre class="programlisting">
 
 #
@@ -230,43 +231,43 @@
 #   );
 #
 
-set bar ""
-set baz ""
+set bar &quot;&quot;
+set baz &quot;&quot;
 
-db_dml foo_create "insert into foo(bar, baz) values(:bar, :baz)"
+db_dml foo_create &quot;insert into foo(bar, baz) values(:bar, :baz)&quot;
 #
-# the values of the "bar" and "baz" columns in the new row are both
+# the values of the &quot;bar&quot; and &quot;baz&quot; columns in the new row are both
 # null, because Oracle has coerced the empty string (even for the
-# numeric column "bar") into null in both cases
+# numeric column &quot;bar&quot;) into null in both cases
 
       </pre><p>
 	Since databases other than Oracle do not coerce empty strings into
-	<code class="computeroutput">null</code>, this code has different semantics depending on the
+	<tt class="computeroutput">null</tt>, this code has different semantics depending on the
 	underlying database (i.e., the row that gets inserted may not have null as
 	its column values), which defeats the purpose of SQL abstraction. 
       </p><p>Therefore, the Database Access API provides a database-independent way to
-	represent <code class="computeroutput">null</code> (instead of the Oracle-specific idiom of the
-	empty string): <code class="computeroutput">db_null</code>.</p><p>Use it instead of the empty string whenever you want to set a column value
-	explicitly to <code class="computeroutput">null</code>, e.g.:</p><pre class="programlisting">set bar [db_null]
+	represent <tt class="computeroutput">null</tt> (instead of the Oracle-specific idiom of the
+	empty string): <tt class="computeroutput">db_null</tt>.</p><p>Use it instead of the empty string whenever you want to set a column value
+	explicitly to <tt class="computeroutput">null</tt>, e.g.:</p><pre class="programlisting">set bar [db_null]
 set baz [db_null]
 
-db_dml foo_create "insert into foo(bar, baz) values(:bar, :baz)"
+db_dml foo_create &quot;insert into foo(bar, baz) values(:bar, :baz)&quot;
 #
-# sets the values for both the "bar" and "baz" columns to null</pre></div></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="db-api-pooling"></a>Sequence Pooling</h3></div></div></div><p>
+# sets the values for both the &quot;bar&quot; and &quot;baz&quot; columns to null</pre></div></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="db-api-pooling"></a>Sequence Pooling</h3></div></div><div></div></div><p>
       The database library can transparently maintain pools of sequence values, so
-      that each request for a new sequence value (using <code class="computeroutput">db_nextval</code>)
+      that each request for a new sequence value (using <tt class="computeroutput">db_nextval</tt>)
       does not incur a roundtrip to the server. For instance, this functionality is
       very useful in the security/sessions library, which very frequently allocates
-      values from the <code class="computeroutput">sec_id_seq</code> sequence. To utilize this
+      values from the <tt class="computeroutput">sec_id_seq</tt> sequence. To utilize this
       functionality for a particular sequence, register the sequence to be pooled,
-      either using the <code class="computeroutput">db_register_pooled_sequence</code> procedure at server
+      either using the <tt class="computeroutput">db_register_pooled_sequence</tt> procedure at server
       startup time, or by including a configuration parameter of the form 
     </p><pre class="programlisting">
 
 PoolSequence.<span class="emphasis"><em>sequence_name_seq</em></span>=<span class="emphasis"><em>count</em></span>
 
     </pre><p>
-      in <span class="emphasis"><em>any</em></span> configuration section in the <code class="computeroutput">yourservername.ini</code>
+      in <span class="emphasis"><em>any</em></span> configuration section in the <tt class="computeroutput">yourservername.ini</tt>
       file, e.g., 
     </p><pre class="programlisting">
 
@@ -278,49 +279,49 @@
       startup. It will periodically scan pools and allocate new values for
       sequences which are less than half-full. (This normally occurs every 60
       seconds, and is configurable via the
-      <code class="computeroutput">PooledSequenceUpdateInterval</code> parameter in the
-      <code class="computeroutput">[ns/server/</code>
-      <span class="emphasis"><em><code class="computeroutput">yourservername</code></em></span>
-      <code class="computeroutput">/acs/database]</code> configuration
+      <tt class="computeroutput">PooledSequenceUpdateInterval</tt> parameter in the
+      <tt class="computeroutput">[ns/server/</tt>
+      <span class="emphasis"><em><tt class="computeroutput">yourservername</tt></em></span>
+      <tt class="computeroutput">/acs/database]</tt> configuration
       section.) 
-    </p></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="db-api-basicapi"></a>Basic API</h3></div></div></div><p>
+    </p></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="db-api-basicapi"></a>Basic API</h3></div></div><div></div></div><p>
       The Database API has several functions that wrap familiar parts of the
       AOLserver database API. 
     </p><p>
-      Note that you never have to use <code class="computeroutput">ns_db</code> anymore (including
-      <code class="computeroutput">ns_db gethandle</code>)! Just start doing stuff, and (if you want) call
-      <code class="computeroutput">db_release_unused_handles</code> when you're done as a hint to
+      Note that you never have to use <tt class="computeroutput">ns_db</tt> anymore (including
+      <tt class="computeroutput">ns_db gethandle</tt>)! Just start doing stuff, and (if you want) call
+      <tt class="computeroutput">db_release_unused_handles</tt> when you're done as a hint to
       release the database handle. 
     </p><div class="variablelist"><dl><dt><span class="term">
-	    <code class="computeroutput">
+	    <tt class="computeroutput">
 	      <a name="devguide.dbapi_db_abort_transaction"></a>db_abort_transaction
-	    </code>
+	    </tt>
 	</span></dt><dd><pre class="programlisting">
 db_abort_transaction
 	  </pre><p>Aborts all levels of a transaction. That is if this is called within
 	    several nested transactions, all of them are terminated. Use this insetead of
-	    <code class="computeroutput">db_dml "abort" "abort transaction"</code>. 
+	    <tt class="computeroutput">db_dml &quot;abort&quot; &quot;abort transaction&quot;</tt>. 
 	    
 
-	  </p></dd><dt><span class="term"><span class="strong"><strong><code class="computeroutput"><a name="devguide.dbapi_db_multirow"></a>db_multirow</code></strong></span></span></dt><dd><pre class="programlisting">
-<span class="strong"><strong>db_multirow</strong></span> [ -local ] [ -append ] [ -extend <span class="emphasis"><em>column_list</em></span> ] \
+	  </p></dd><dt><span class="term"><span class="strong"><tt class="computeroutput"><a name="devguide.dbapi_db_multirow"></a>db_multirow</tt></span></span></dt><dd><pre class="programlisting">
+<span class="strong">db_multirow</span> [ -local ] [ -append ] [ -extend <span class="emphasis"><em>column_list</em></span> ] \
     <span class="emphasis"><em>var-name</em></span> <span class="emphasis"><em>statement-name</em></span> <span class="emphasis"><em>sql</em></span> \
     [ -bind <span class="emphasis"><em>bind_set_id</em></span> | -bind <span class="emphasis"><em>bind_value_list</em></span> ] \
     <span class="emphasis"><em>code_block</em></span> [ if_no_rows <span class="emphasis"><em>if_no_rows_block ]</em></span>
 	</pre><p>
-	Performs the SQL query <code class="computeroutput">sql</code>, saving results in variables
+	Performs the SQL query <tt class="computeroutput">sql</tt>, saving results in variables
     of the form
-    <code class="computeroutput"><span class="replaceable"><span class="replaceable">var_name</span></span>:1</code>, <code class="computeroutput"><span class="replaceable"><span class="replaceable">var_name</span></span>:2</code>, etc,
-    setting <code class="computeroutput"><span class="replaceable"><span class="replaceable">var_name</span></span>:rowcount</code> to the total number
-    of rows, and setting <code class="computeroutput"><span class="replaceable"><span class="replaceable">var_name</span></span>:columns</code> to a
+    <tt class="computeroutput"><span class="replaceable"><span class="replaceable">var_name</span></span>:1</tt>, <tt class="computeroutput"><span class="replaceable"><span class="replaceable">var_name</span></span>:2</tt>, etc,
+    setting <tt class="computeroutput"><span class="replaceable"><span class="replaceable">var_name</span></span>:rowcount</tt> to the total number
+    of rows, and setting <tt class="computeroutput"><span class="replaceable"><span class="replaceable">var_name</span></span>:columns</tt> to a
     list of column names. 
     </p><p>
     Each row also has a column, rownum, automatically
     added and set to the row number, starting with 1. Note that this will
     override any column in the SQL statement named 'rownum', also if you're
     using the Oracle rownum pseudo-column.
     </p><p>
-    If the <code class="computeroutput">-local</code> is passed, the variables defined
+    If the <tt class="computeroutput">-local</tt> is passed, the variables defined
     by db_multirow will be set locally (useful if you're compiling dynamic templates
     in a function or similar situations).
     </p><p>                                                                                                                                        
@@ -333,19 +334,19 @@
     multirow.
     </p><p>
     You may also add additional, computed columns to the multirow, using the
-    <code class="computeroutput">-extend { <span class="replaceable"><span class="replaceable">col_1</span></span> <span class="replaceable"><span class="replaceable">col_2</span></span> ... }</code> switch. This is
+    <tt class="computeroutput">-extend { <span class="replaceable"><span class="replaceable">col_1</span></span> <span class="replaceable"><span class="replaceable">col_2</span></span> ... }</tt> switch. This is
     useful for things like constructing a URL for the object retrieved by
     the query.
     </p><p>
     If you're constructing your multirow through multiple queries with the
     same set of columns, but with different rows, you can use the
-    <code class="computeroutput">-append</code> switch. This causes the rows returned by this query
+    <tt class="computeroutput">-append</tt> switch. This causes the rows returned by this query
     to be appended to the rows already in the multirow, instead of starting
     a clean multirow, as is the normal behavior. The columns must match the
     columns in the original multirow, or an error will be thrown.
     </p><p>
-    Your code block may call <code class="computeroutput">continue</code> in order to skip a row
-    and not include it in the multirow. Or you can call <code class="computeroutput">break</code>
+    Your code block may call <tt class="computeroutput">continue</tt> in order to skip a row
+    and not include it in the multirow. Or you can call <tt class="computeroutput">break</tt>
     to skip this row and quit looping.
     </p><p>
     Notice the nonstandard numbering (everything
@@ -379,240 +380,240 @@
           </pre><p>Technically it's equivalent to using a code block on
           the end of your db_multirow.</p></dd><dt><span class="term">
 	  
-	    <code class="computeroutput">
+	    <tt class="computeroutput">
 	      <a name="devguide.dbapi_db_null"></a>db_null
-	    </code>
+	    </tt>
 	  
 
 	</span></dt><dd><pre class="programlisting">
-<code class="computeroutput">db_null</code>
+<tt class="computeroutput">db_null</tt>
 	  </pre><p>
 	    Returns a value which can be used in a bind variable
 	    to represent the SQL value
-	    <code class="computeroutput">null</code>.
+	    <tt class="computeroutput">null</tt>.
 	    See <a href="db-api.html#dbapi_nulls_and_bind_vars" title="Nulls and Bind Variables">Nulls and
 	    Bind Variables</a> above.
 	  </p></dd><dt><span class="term">
 	  
-	    <code class="computeroutput">
+	    <tt class="computeroutput">
 	      <a name="devguide.dbapi_db_foreach"></a>db_foreach
-	    </code>
+	    </tt>
 	  
 	</span></dt><dd><pre class="programlisting">
 db_foreach <span class="emphasis"><em>statement-name sql</em></span> [ -bind <span class="emphasis"><em>bind_set_id</em></span> | -bind <span class="emphasis"><em>bind_value_list</em></span> ] \
     [ -column_array <span class="emphasis"><em>array_name</em></span> | -column_set <span class="emphasis"><em>set_name</em></span> ] \
     <span class="emphasis"><em>code_block</em></span> [ if_no_rows <span class="emphasis"><em>if_no_rows_block ]</em></span>
 	  </pre><p>
 	    Performs the SQL query <span class="emphasis"><em>
-	      <code class="computeroutput">sql</code>
+	      <tt class="computeroutput">sql</tt>
 	    </em></span>, executing
-	    <span class="emphasis"><em><code class="computeroutput">code_block
-	      </code></em></span> once for each row
+	    <span class="emphasis"><em><tt class="computeroutput">code_block
+	      </tt></em></span> once for each row
 	    with variables set to column values (or a set or array
 	    populated if
-	    <code class="computeroutput">-column_array</code> or
-	    <code class="computeroutput">column_set</code> is
+	    <tt class="computeroutput">-column_array</tt> or
+	    <tt class="computeroutput">column_set</tt> is
 	    specified). If the query returns no rows, executes
-	    <span class="emphasis"><em><code class="computeroutput">if_no_rows_block
-	      </code></em></span> (if provided).
+	    <span class="emphasis"><em><tt class="computeroutput">if_no_rows_block
+	      </tt></em></span> (if provided).
 	  </p><p>Example:</p><pre class="programlisting">
 
-db_foreach select_foo "select foo, bar from greeble" {
-    doc_body_append "&lt;li&gt;foo=$foo; bar=$bar\n"
+db_foreach select_foo &quot;select foo, bar from greeble&quot; {
+    doc_body_append &quot;&lt;li&gt;foo=$foo; bar=$bar\n&quot;
 } if_no_rows {
-    doc_body_append "&lt;li&gt;There are no greebles in the database.\n"
+    doc_body_append &quot;&lt;li&gt;There are no greebles in the database.\n&quot;
 }
 
 	  </pre><p>
-	    The code block may contain <code class="computeroutput">break</code> statements (which terminate the
-	    loop and flush the database handle) and <code class="computeroutput">continue</code> statements
+	    The code block may contain <tt class="computeroutput">break</tt> statements (which terminate the
+	    loop and flush the database handle) and <tt class="computeroutput">continue</tt> statements
 	    (which continue to the next row of the loop). </p></dd><dt><span class="term">
 	  
-	    <code class="computeroutput">
+	    <tt class="computeroutput">
 	      <a name="devguide.dbapi_db_1row"></a>db_1row
-	    </code>
+	    </tt>
 	  
 	</span></dt><dd><pre class="programlisting">
 db_1row <span class="emphasis"><em>statement-name</em></span> <span class="emphasis"><em>sql</em></span> [ -bind <span class="emphasis"><em>bind_set_id</em></span> | -bind <span class="emphasis"><em>bind_value_list</em></span> ] \
     [ -column_array <span class="emphasis"><em>array_name</em></span> | -column_set <span class="emphasis"><em>set_name</em></span> ]
 	  </pre><p>
 	    Performs the SQL query <span class="emphasis"><em>
-	      <code class="computeroutput">sql</code></em></span>,
+	      <tt class="computeroutput">sql</tt></em></span>,
 	    setting variables to column values. Raises an error if the
 	    query does not return exactly 1 row.
 	  </p><p>Example:</p><pre class="programlisting">
 
-db_1row select_foo "select foo, bar from greeble where greeble_id = $greeble_id"
+db_1row select_foo &quot;select foo, bar from greeble where greeble_id = $greeble_id&quot;
 # Bombs if there's no such greeble!
 # Now $foo and $bar are set.
 
 	  </pre></dd><dt><span class="term">
 	  
-	    <code class="computeroutput">
+	    <tt class="computeroutput">
 	      <a name="devguide.dbapi_db_0or1row"></a>db_0or1row
-	    </code>
+	    </tt>
 	  
 	</span></dt><dd><pre class="programlisting">
 db_0or1row <span class="emphasis"><em>statement-name</em></span> <span class="emphasis"><em>sql</em></span> [ -bind <span class="emphasis"><em>bind_set_id</em></span> | -bind <span class="emphasis"><em>bind_value_list</em></span> ] \
     [ -column_array <span class="emphasis"><em>array_name</em></span> | -column_set <span class="emphasis"><em>set_name</em></span> ]
 	  </pre><p>
 	    Performs the SQL query
-	    <span class="emphasis"><em><code class="computeroutput">sql</code></em></span>.
+	    <span class="emphasis"><em><tt class="computeroutput">sql</tt></em></span>.
 	    If a row is returned, sets variables to column values and
 	    returns 1. If no rows are returned, returns 0. If more
 	    than one row is returned, throws an error.
-	  </p></dd><dt><span class="term"><code class="computeroutput"><a name="devguide.dbapi_db_nextval"></a>db_nextval</code> </span></dt><dd><pre class="programlisting">
+	  </p></dd><dt><span class="term"><tt class="computeroutput"><a name="devguide.dbapi_db_nextval"></a>db_nextval</tt> </span></dt><dd><pre class="programlisting">
 db_nextval <span class="emphasis"><em>sequence-name</em></span>
 	  </pre><p>
 	    Returns the next value for the sequence <span class="emphasis"><em>sequence-name</em></span> (using a
-	    SQL statement like <code class="computeroutput">SELECT</code>
-	    <span class="emphasis"><em><code class="computeroutput">sequence-name</code></em></span><code class="computeroutput">.nextval FROM
-	      DUAL</code>). If sequence pooling is enabled for the sequence, transparently
+	    SQL statement like <tt class="computeroutput">SELECT</tt>
+	    <span class="emphasis"><em><tt class="computeroutput">sequence-name</tt></em></span><tt class="computeroutput">.nextval FROM
+	      DUAL</tt>). If sequence pooling is enabled for the sequence, transparently
 	    uses a value from the pool if available to save a round-trip to the database
 	    (see <span class="emphasis"><em><a href="db-api.html#db-api-pooling">Sequence Pooling</a></em></span>). 
 	  </p></dd><dt><span class="term">
 	  
-	    <code class="computeroutput">
+	    <tt class="computeroutput">
 	      <a name="devguide.dbapi_db_register_pooled_sequence"></a>db_register_pooled_sequence
-	    </code>
+	    </tt>
 	  
 	</span></dt><dd><pre class="programlisting">
 db_register_pooled_sequence <span class="emphasis"><em>sequence-name</em></span> <span class="emphasis"><em>pool-size</em></span>
 	  </pre><p>Registers the sequence <span class="emphasis"><em>sequence-name</em></span> to be pooled, with a pool
 	    size of <span class="emphasis"><em>pool-size</em></span> sequence values
 	    (see <span class="emphasis"><em><a href="db-api.html#db-api-pooling">Sequence Pooling</a></em></span>). 
 
-	  </p></dd><dt><span class="term"><code class="computeroutput"><a name="devguide.dbapi_db_string"></a>db_string</code> </span></dt><dd><pre class="programlisting">
+	  </p></dd><dt><span class="term"><tt class="computeroutput"><a name="devguide.dbapi_db_string"></a>db_string</tt> </span></dt><dd><pre class="programlisting">
 db_string <span class="emphasis"><em>statement-name</em></span> <span class="emphasis"><em>sql</em></span> [ -default <span class="emphasis"><em>default</em></span> ] [ -bind <span class="emphasis"><em>bind_set_id</em></span> | -bind <span class="emphasis"><em>bind_value_list</em></span> ]
 	  </pre><p>Returns the first column of the result of SQL query
-	    <span class="emphasis"><em><code class="computeroutput">sql</code></em></span>.
-	    If <span class="emphasis"><em><code class="computeroutput">sql</code></em></span> doesn't return a
+	    <span class="emphasis"><em><tt class="computeroutput">sql</tt></em></span>.
+	    If <span class="emphasis"><em><tt class="computeroutput">sql</tt></em></span> doesn't return a
 	    row, returns
-	    <span class="emphasis"><em><code class="computeroutput">default</code></em></span>
+	    <span class="emphasis"><em><tt class="computeroutput">default</tt></em></span>
 	    (or throws an error if
-	    <span class="emphasis"><em><code class="computeroutput">default</code></em></span> is unspecified). Analogous to
-	    <code class="computeroutput">database_to_tcl_string</code> and
-	    <code class="computeroutput">database_to_tcl_string_or_null</code>. 
+	    <span class="emphasis"><em><tt class="computeroutput">default</tt></em></span> is unspecified). Analogous to
+	    <tt class="computeroutput">database_to_tcl_string</tt> and
+	    <tt class="computeroutput">database_to_tcl_string_or_null</tt>. 
 
-	  </p></dd><dt><span class="term"><code class="computeroutput"><a name="devguide.dbapi_db_list"></a>db_list</code></span></dt><dd><pre class="programlisting">
+	  </p></dd><dt><span class="term"><tt class="computeroutput"><a name="devguide.dbapi_db_list"></a>db_list</tt></span></dt><dd><pre class="programlisting">
 db_list <span class="emphasis"><em>statement-name</em></span> <span class="emphasis"><em>sql</em></span> [ -bind <span class="emphasis"><em>bind_set_id</em></span> | -bind <span class="emphasis"><em>bind_value_list</em></span> ]
 	  </pre><p>Returns a Tcl list of the values in the first column of the result of SQL
 	    query
-	    <span class="emphasis"><em><code class="computeroutput">sql</code></em></span>.
-	    If <span class="emphasis"><em><code class="computeroutput">sql</code></em></span> doesn't
+	    <span class="emphasis"><em><tt class="computeroutput">sql</tt></em></span>.
+	    If <span class="emphasis"><em><tt class="computeroutput">sql</tt></em></span> doesn't
 	    return any rows, returns an empty list. Analogous to
-	    <code class="computeroutput">database_to_tcl_list</code>. 
+	    <tt class="computeroutput">database_to_tcl_list</tt>. 
 
-	  </p></dd><dt><span class="term"><code class="computeroutput"><a name="devguide.dbapi_db_list_of_lists"></a>db_list_of_lists</code></span></dt><dd><pre class="programlisting">
+	  </p></dd><dt><span class="term"><tt class="computeroutput"><a name="devguide.dbapi_db_list_of_lists"></a>db_list_of_lists</tt></span></dt><dd><pre class="programlisting">
 db_list_of_lists <span class="emphasis"><em>statement-name</em></span> <span class="emphasis"><em>sql</em></span> [ -bind <span class="emphasis"><em>bind_set_id</em></span> | -bind <span class="emphasis"><em>bind_value_list</em></span> ]
 	  </pre><p>Returns a Tcl list, each element of which is a list of all column values
-	    in a row of the result of SQL query <span class="emphasis"><em><code class="computeroutput">sql</code></em></span>. If
-	    <span class="emphasis"><em><code class="computeroutput">sql</code></em></span> doesn't return any rows, returns an empty list.
-	    (Analogous to <code class="computeroutput">database_to_tcl_list_list</code>.) 
+	    in a row of the result of SQL query <span class="emphasis"><em><tt class="computeroutput">sql</tt></em></span>. If
+	    <span class="emphasis"><em><tt class="computeroutput">sql</tt></em></span> doesn't return any rows, returns an empty list.
+	    (Analogous to <tt class="computeroutput">database_to_tcl_list_list</tt>.) 
 
-	  </p></dd><dt><span class="term"><code class="computeroutput"><a name="devguide.dbapi_db_dml"></a>db_dml</code></span></dt><dd><pre class="programlisting">
+	  </p></dd><dt><span class="term"><tt class="computeroutput"><a name="devguide.dbapi_db_dml"></a>db_dml</tt></span></dt><dd><pre class="programlisting">
 db_dml <span class="emphasis"><em>statement-name</em></span> <span class="emphasis"><em>sql</em></span> \
     [ -bind <span class="emphasis"><em>bind_set_id</em></span> | -bind <span class="emphasis"><em>bind_value_list</em></span> ] \
     [ -blobs <span class="emphasis"><em>blob_list</em></span> | -clobs <span class="emphasis"><em>clob_list</em></span> |
       -blob_files <span class="emphasis"><em>blob_file_list</em></span> | -clob_files <span class="emphasis"><em>clob_file_list</em></span> ]
-	  </pre><p>Performs the DML or DDL statement <span class="emphasis"><em><code class="computeroutput">sql</code></em></span>. </p><p>If a length-<span class="emphasis"><em>n</em></span> list of blobs or clobs is provided, then the SQL
+	  </pre><p>Performs the DML or DDL statement <span class="emphasis"><em><tt class="computeroutput">sql</tt></em></span>. </p><p>If a length-<span class="emphasis"><em>n</em></span> list of blobs or clobs is provided, then the SQL
 	    should return <span class="emphasis"><em>n</em></span> blobs or clobs into the bind variables
-	    <code class="computeroutput">:1</code>, <code class="computeroutput">:2</code>, ... :<span class="emphasis"><em><code class="computeroutput">n</code></em></span>.
-	    <span class="emphasis"><em><code class="computeroutput">blobs</code></em></span> or <span class="emphasis"><em><code class="computeroutput">clobs</code></em></span>, if specified,
+	    <tt class="computeroutput">:1</tt>, <tt class="computeroutput">:2</tt>, ... :<span class="emphasis"><em><tt class="computeroutput">n</tt></em></span>.
+	    <span class="emphasis"><em><tt class="computeroutput">blobs</tt></em></span> or <span class="emphasis"><em><tt class="computeroutput">clobs</tt></em></span>, if specified,
 	    should be a list of individual BLOBs or CLOBs to insert;
-	    <span class="emphasis"><em><code class="computeroutput">blob_files</code></em></span> or <span class="emphasis"><em><code class="computeroutput">clob_files</code></em></span>, if
+	    <span class="emphasis"><em><tt class="computeroutput">blob_files</tt></em></span> or <span class="emphasis"><em><tt class="computeroutput">clob_files</tt></em></span>, if
 	    specified, should be a list of <span class="emphasis"><em>paths to files</em></span> containing the data to
-	    insert. Only one of <code class="computeroutput">-blobs</code>, <code class="computeroutput">-clobs</code>,
-	    <code class="computeroutput">-blob_files</code>, and <code class="computeroutput">-clob_files</code> may be provided.</p><p>Example:</p><pre class="programlisting">
+	    insert. Only one of <tt class="computeroutput">-blobs</tt>, <tt class="computeroutput">-clobs</tt>,
+	    <tt class="computeroutput">-blob_files</tt>, and <tt class="computeroutput">-clob_files</tt> may be provided.</p><p>Example:</p><pre class="programlisting">
 
-db_dml insert_photos "
+db_dml insert_photos &quot;
         insert photos(photo_id, image, thumbnail_image)
         values(photo_id_seq.nextval, empty_blob(), empty_blob())
         returning image, thumbnail_image into :1, :2
-    "  -blob_files [list "/var/tmp/the_photo" "/var/tmp/the_thumbnail"] 
+    &quot;  -blob_files [list &quot;/var/tmp/the_photo&quot; &quot;/var/tmp/the_thumbnail&quot;] 
 
 	  </pre><p>
-	    This inserts a new row into the <code class="computeroutput">photos</code> table, with the contents
-	    of the files <code class="computeroutput">/var/tmp/the_photo</code> and
-	    <code class="computeroutput">/var/tmp/the_thumbnail</code> in the <code class="computeroutput">image</code> and
-	    <code class="computeroutput">thumbnail</code> columns, respectively. 
+	    This inserts a new row into the <tt class="computeroutput">photos</tt> table, with the contents
+	    of the files <tt class="computeroutput">/var/tmp/the_photo</tt> and
+	    <tt class="computeroutput">/var/tmp/the_thumbnail</tt> in the <tt class="computeroutput">image</tt> and
+	    <tt class="computeroutput">thumbnail</tt> columns, respectively. 
 	    
 
 	  </p></dd><dt><span class="term">
-	  <code class="computeroutput"><a name="devguide.dbapi_db_write_clob"></a>db_write_clob</code>,
-	  <code class="computeroutput"><a name="devguide.dbapi_db_write_blob"></a>db_write_blob</code>,
-	  <code class="computeroutput"><a name="devguide.dbapi_db_blob_get_file"></a>db_blob_get_file</code>
+	  <tt class="computeroutput"><a name="devguide.dbapi_db_write_clob"></a>db_write_clob</tt>,
+	  <tt class="computeroutput"><a name="devguide.dbapi_db_write_blob"></a>db_write_blob</tt>,
+	  <tt class="computeroutput"><a name="devguide.dbapi_db_blob_get_file"></a>db_blob_get_file</tt>
 	</span></dt><dd><pre class="programlisting">
 db_write_clob <span class="emphasis"><em>statement-name</em></span> <span class="emphasis"><em>sql</em></span> [ -bind <span class="emphasis"><em>bind_set_id</em></span> | -bind <span class="emphasis"><em>bind_value_list</em></span> ]
 
 db_write_blob <span class="emphasis"><em>statement-name</em></span> <span class="emphasis"><em>sql</em></span> [ -bind <span class="emphasis"><em>bind_set_id</em></span> | -bind <span class="emphasis"><em>bind_value_list</em></span> ]
 
 db_blob_get_file <span class="emphasis"><em>statement-name</em></span> <span class="emphasis"><em>sql</em></span> [ -bind <span class="emphasis"><em>bind_set_id</em></span> | -bind <span class="emphasis"><em>bind_value_list</em></span> ]
-	  </pre><p>Analagous to <code class="computeroutput">ns_ora write_clob/write_blob/blob_get_file</code>. 
+	  </pre><p>Analagous to <tt class="computeroutput">ns_ora write_clob/write_blob/blob_get_file</tt>. 
 
 
-	  </p></dd><dt><span class="term"><code class="computeroutput"><a name="devguide.dbapi_db_release_unused_handles"></a>db_release_unused_handles</code></span></dt><dd><pre class="programlisting">
+	  </p></dd><dt><span class="term"><tt class="computeroutput"><a name="devguide.dbapi_db_release_unused_handles"></a>db_release_unused_handles</tt></span></dt><dd><pre class="programlisting">
 	    db_release_unused_handles
-	  </pre><p>Releases any allocated, unused database handles. </p></dd><dt><span class="term"><code class="computeroutput"><a name="devguide.dbapi_db_transaction"></a>db_transaction</code></span></dt><dd><pre class="programlisting">
+	  </pre><p>Releases any allocated, unused database handles. </p></dd><dt><span class="term"><tt class="computeroutput"><a name="devguide.dbapi_db_transaction"></a>db_transaction</tt></span></dt><dd><pre class="programlisting">
 db_transaction <span class="emphasis"><em>code_block</em></span> [ on_error { <span class="emphasis"><em>code_block</em></span> } ]
-	  </pre><p>Executes <span class="emphasis"><em><code class="computeroutput">code_block</code></em></span> transactionally. Nested
-	    transactions are supported (<code class="computeroutput">end transaction</code> is transparently
-	    <code class="computeroutput">ns_db dml</code>'ed when the outermost transaction completes). The
-	    <code class="computeroutput">db_abort_transaction</code> command can be used to abort all levels of
-	    transactions. It is possible to specify an optional <code class="computeroutput">on_error</code>
+	  </pre><p>Executes <span class="emphasis"><em><tt class="computeroutput">code_block</tt></em></span> transactionally. Nested
+	    transactions are supported (<tt class="computeroutput">end transaction</tt> is transparently
+	    <tt class="computeroutput">ns_db dml</tt>'ed when the outermost transaction completes). The
+	    <tt class="computeroutput">db_abort_transaction</tt> command can be used to abort all levels of
+	    transactions. It is possible to specify an optional <tt class="computeroutput">on_error</tt>
 	    code block that will be executed if some code in <span class="emphasis"><em>code_block</em></span> throws
-	    an exception. The variable <code class="computeroutput">errmsg</code> will be bound in that scope.
-	    If there is no <code class="computeroutput">on_error</code> code, any errors will be propagated. </p><p>Example:</p><pre class="programlisting">
+	    an exception. The variable <tt class="computeroutput">errmsg</tt> will be bound in that scope.
+	    If there is no <tt class="computeroutput">on_error</tt> code, any errors will be propagated. </p><p>Example:</p><pre class="programlisting">
 
 proc replace_the_foo { col } {
     db_transaction {
-        db_dml "delete from foo"
-        db_dml "insert into foo(col) values($col)"
+        db_dml &quot;delete from foo&quot;
+        db_dml &quot;insert into foo(col) values($col)&quot;
     }
 }
 
 proc print_the_foo {} {
-    doc_body_append "foo is [db_string "select col from foo"]&lt;br&gt;\n"
+    doc_body_append &quot;foo is [db_string &quot;select col from foo&quot;]&lt;br&gt;\n&quot;
 }
 
 replace_the_foo 8
-print_the_foo ; # Writes out "foo is 8"
+print_the_foo ; # Writes out &quot;foo is 8&quot;
 
 db_transaction {
     replace_the_foo 14
-    print_the_foo ; # Writes out "foo is 14"
-    db_dml "insert into some_other_table(col) values(999)"
+    print_the_foo ; # Writes out &quot;foo is 14&quot;
+    db_dml &quot;insert into some_other_table(col) values(999)&quot;
     ...
     db_abort_transaction
 } on_error {
-    doc_body_append "Error in transaction: $errmsg"
+    doc_body_append &quot;Error in transaction: $errmsg&quot;
 }
     
 
-print_the_foo ; # Writes out "foo is 8"
+print_the_foo ; # Writes out &quot;foo is 8&quot;
 
-	  </pre></dd><dt><span class="term"><code class="computeroutput"><a name="devguide.dbapi_db_resultrows"></a>db_resultrows</code></span></dt><dd><pre class="programlisting">
+	  </pre></dd><dt><span class="term"><tt class="computeroutput"><a name="devguide.dbapi_db_resultrows"></a>db_resultrows</tt></span></dt><dd><pre class="programlisting">
 db_resultrows
 	  </pre><p>Returns the number of rows affected or returned by the previous
 	    statement. 
 
 
-	  </p></dd><dt><span class="term"><code class="computeroutput"><a name="devguide.dbapi_db_with_handle"></a>db_with_handle</code></span></dt><dd><pre class="programlisting">
+	  </p></dd><dt><span class="term"><tt class="computeroutput"><a name="devguide.dbapi_db_with_handle"></a>db_with_handle</tt></span></dt><dd><pre class="programlisting">
 db_with_handle <span class="emphasis"><em>var</em></span> <span class="emphasis"><em>code_block</em></span>
-	  </pre><p>Places a database handle into the variable <span class="emphasis"><em><code class="computeroutput">var</code></em></span> and
-	    executes <span class="emphasis"><em><code class="computeroutput">code_block</code></em></span>. This is useful when you don't
-	    want to have to use the new API (<code class="computeroutput">db_foreach</code>,
-	    <code class="computeroutput">db_1row</code>, etc.), but need to use database handles explicitly. </p><p>Example:</p><pre class="programlisting">
+	  </pre><p>Places a database handle into the variable <span class="emphasis"><em><tt class="computeroutput">var</tt></em></span> and
+	    executes <span class="emphasis"><em><tt class="computeroutput">code_block</tt></em></span>. This is useful when you don't
+	    want to have to use the new API (<tt class="computeroutput">db_foreach</tt>,
+	    <tt class="computeroutput">db_1row</tt>, etc.), but need to use database handles explicitly. </p><p>Example:</p><pre class="programlisting">
 
 proc lookup_the_foo { foo } {
     db_with_handle db {
-        return [db_string unused "select ..."]
+        return [db_string unused &quot;select ...&quot;]
     }
 }
 
 db_with_handle db {
     # Now there's a database handle in $db.
-    set selection [ns_db select $db "select foo from bar"]
+    set selection [ns_db select $db &quot;select foo from bar&quot;]
     while { [ns_db getrow $db $selection] } {
         set_variables_after_query
 
@@ -622,37 +623,37 @@
 
 	  </pre></dd><dt><span class="term">
 	  
-	    <code class="computeroutput">
+	    <tt class="computeroutput">
 	      <a name="devguide.dbapi_db_nullify_empty_string"></a>db_nullify_empty_string
-	    </code>
+	    </tt>
 	  
 	</span></dt><dd><pre class="programlisting">
 db_nullify_empty_string <span class="emphasis"><em>string</em></span>
 	  </pre><p>For true SQL purists, we provide the convenience function
-	    <code class="computeroutput">db_nullify_empty_string</code>, which returns
-	    [db_null] if its <span class="emphasis"><em><code class="computeroutput">string</code></em></span> argument is the empty string
+	    <tt class="computeroutput">db_nullify_empty_string</tt>, which returns
+	    [db_null] if its <span class="emphasis"><em><tt class="computeroutput">string</tt></em></span> argument is the empty string
 	    and can be used to encapsulate another Oracle quirk: </p><pre class="programlisting">
 
-set baz ""
+set baz &quot;&quot;
 
 # Clean out the foo table
 #
-db_dml unused "delete from foo"
+db_dml unused &quot;delete from foo&quot;
 
-db_dml unused "insert into foo(baz) values('$baz')"
+db_dml unused &quot;insert into foo(baz) values('$baz')&quot;
 
-set n_rows [db_string unused "select count(*) from foo where baz is null"]
+set n_rows [db_string unused &quot;select count(*) from foo where baz is null&quot;]
 #
-# $n_rows is 1; in effect, the "baz is null" criterion is matching
+# $n_rows is 1; in effect, the &quot;baz is null&quot; criterion is matching
 # the empty string we just inserted (because of Oracle's coercion
 # quirk)
 
 	  </pre><p>
-	    To balance out this asymmetry, you can explicitly set <code class="computeroutput">baz</code> to
-	    <code class="computeroutput">null</code> by writing: 
+	    To balance out this asymmetry, you can explicitly set <tt class="computeroutput">baz</tt> to
+	    <tt class="computeroutput">null</tt> by writing: 
 	  </p><pre class="programlisting">
 
-db_dml foo_insert "insert into foo(baz) values(:1)" {[db_nullify_empty_string $baz]}
+db_dml foo_insert &quot;insert into foo(baz) values(:1)&quot; {[db_nullify_empty_string $baz]}
 
 	  </pre></dd></dl></div><p>
       </p><div class="cvstag">($Id$)</div><p>
Index: openacs-4/packages/acs-core-docs/www/dev-guide.html
===================================================================
RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/dev-guide.html,v
diff -u -r1.29 -r1.29.4.1
--- openacs-4/packages/acs-core-docs/www/dev-guide.html	17 Jul 2006 05:38:31 -0000	1.29
+++ openacs-4/packages/acs-core-docs/www/dev-guide.html	3 Feb 2008 12:07:38 -0000	1.29.4.1
@@ -1 +1,2 @@
-<html><head><meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"><title>Chapter�11.�Development Reference</title><meta name="generator" content="DocBook XSL Stylesheets V1.70.1"><link rel="home" href="index.html" title="OpenACS Core Documentation"><link rel="up" href="acs-package-dev.html" title="Part�III.�For OpenACS Package Developers"><link rel="previous" href="tutorial-future-topics.html" title="Future Topics"><link rel="next" href="packages.html" title="OpenACS Packages"><link rel="stylesheet" href="openacs.css" type="text/css"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><a href="http://openacs.org"><img src="/doc/images/alex.jpg" border="0" alt="Alex logo"></a><table width="100%" summary="Navigation header" border="0"><tr><td width="20%" align="left"><a accesskey="p" href="tutorial-future-topics.html">Prev</a> </td><th width="60%" align="center">Part�III.�For OpenACS Package Developers</th><td width="20%" align="right"> <a accesskey="n" href="packages.html">Next</a></td></tr></table><hr></div><div class="chapter" lang="en"><div class="titlepage"><div><div><h2 class="title"><a name="dev-guide"></a>Chapter�11.�Development Reference</h2></div></div></div><div class="toc"><p><b>Table of Contents</b></p><dl><dt><span class="sect1"><a href="packages.html">OpenACS Packages</a></span></dt><dt><span class="sect1"><a href="objects.html">OpenACS Data Models and the Object System</a></span></dt><dt><span class="sect1"><a href="request-processor.html">The Request Processor</a></span></dt><dt><span class="sect1"><a href="db-api.html">The OpenACS Database Access API</a></span></dt><dt><span class="sect1"><a href="templates.html">Using Templates in OpenACS</a></span></dt><dt><span class="sect1"><a href="permissions.html">Groups, Context, Permissions</a></span></dt><dt><span class="sect1"><a href="subsites.html">Writing OpenACS Application Pages</a></span></dt><dt><span class="sect1"><a href="parties.html">Parties in OpenACS</a></span></dt><dt><span class="sect1"><a href="permissions-tediously-explained.html">OpenACS Permissions Tediously Explained</a></span></dt><dt><span class="sect1"><a href="object-identity.html">Object Identity</a></span></dt><dt><span class="sect1"><a href="programming-with-aolserver.html">Programming with AOLserver</a></span></dt><dt><span class="sect1"><a href="form-builder.html">Using Form Builder: building html forms dynamically</a></span></dt></dl></div></div><div class="navfooter"><hr><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="tutorial-future-topics.html">Prev</a> </td><td width="20%" align="center"><a accesskey="h" href="index.html">Home</a></td><td width="40%" align="right"> <a accesskey="n" href="packages.html">Next</a></td></tr><tr><td width="40%" align="left">Future Topics </td><td width="20%" align="center"><a accesskey="u" href="acs-package-dev.html">Up</a></td><td width="40%" align="right"> OpenACS Packages</td></tr></table><hr><address><a href="mailto:docs@openacs.org">docs@openacs.org</a></address></div><a name="comments"></a><center><a href="http://openacs.org/doc/current/dev-guide.html#comments">View comments on this page at openacs.org</a></center></body></html>
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html><head><meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"><title>Chapter�11.�Development Reference</title><meta name="generator" content="DocBook XSL Stylesheets V1.60.1"><link rel="home" href="index.html" title="OpenACS Core Documentation"><link rel="up" href="acs-package-dev.html" title="Part�III.�For OpenACS Package Developers"><link rel="previous" href="tutorial-future-topics.html" title="Future Topics"><link rel="next" href="packages.html" title="OpenACS Packages"><link rel="stylesheet" href="openacs.css" type="text/css"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><a href="http://openacs.org"><img src="/doc/images/alex.jpg" border="0" alt="Alex logo"></a><table width="100%" summary="Navigation header" border="0"><tr><td width="20%" align="left"><a accesskey="p" href="tutorial-future-topics.html">Prev</a> </td><th width="60%" align="center">Part�III.�For OpenACS Package Developers</th><td width="20%" align="right"> <a accesskey="n" href="packages.html">Next</a></td></tr></table><hr></div><div class="chapter" lang="en"><div class="titlepage"><div><div><h2 class="title"><a name="dev-guide"></a>Chapter�11.�Development Reference</h2></div></div><div></div></div><div class="toc"><p><b>Table of Contents</b></p><dl><dt><a href="packages.html">OpenACS Packages</a></dt><dt><a href="objects.html">OpenACS Data Models and the Object System</a></dt><dt><a href="request-processor.html">The Request Processor</a></dt><dt><a href="db-api.html">The OpenACS Database Access API</a></dt><dt><a href="templates.html">Using Templates in OpenACS</a></dt><dt><a href="permissions.html">Groups, Context, Permissions</a></dt><dt><a href="subsites.html">Writing OpenACS Application Pages</a></dt><dt><a href="parties.html">Parties in OpenACS</a></dt><dt><a href="permissions-tediously-explained.html">OpenACS Permissions Tediously Explained</a></dt><dt><a href="object-identity.html">Object Identity</a></dt><dt><a href="programming-with-aolserver.html">Programming with AOLserver</a></dt><dt><a href="form-builder.html">Using Form Builder: building html forms dynamically</a></dt></dl></div></div><div class="navfooter"><hr><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="tutorial-future-topics.html">Prev</a> </td><td width="20%" align="center"><a accesskey="h" href="index.html">Home</a></td><td width="40%" align="right"> <a accesskey="n" href="packages.html">Next</a></td></tr><tr><td width="40%" align="left">Future Topics </td><td width="20%" align="center"><a accesskey="u" href="acs-package-dev.html">Up</a></td><td width="40%" align="right"> OpenACS Packages</td></tr></table><hr><address><a href="mailto:docs@openacs.org">docs@openacs.org</a></address></div><a name="comments"></a><center><a href="http://openacs.org/doc/current/dev-guide.html#comments">View comments on this page at openacs.org</a></center></body></html>
Index: openacs-4/packages/acs-core-docs/www/doc-standards.html
===================================================================
RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/doc-standards.html,v
diff -u -r1.11 -r1.11.4.1
--- openacs-4/packages/acs-core-docs/www/doc-standards.html	17 Jul 2006 05:38:31 -0000	1.11
+++ openacs-4/packages/acs-core-docs/www/doc-standards.html	3 Feb 2008 12:07:38 -0000	1.11.4.1
@@ -1 +1,2 @@
-<html><head><meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"><title>Chapter�13.�Documentation Standards</title><meta name="generator" content="DocBook XSL Stylesheets V1.70.1"><link rel="home" href="index.html" title="OpenACS Core Documentation"><link rel="up" href="acs-package-dev.html" title="Part�III.�For OpenACS Package Developers"><link rel="previous" href="automated-testing-best-practices.html" title="Automated Testing"><link rel="next" href="docbook-primer.html" title="OpenACS Documentation Guide"><link rel="stylesheet" href="openacs.css" type="text/css"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><a href="http://openacs.org"><img src="/doc/images/alex.jpg" border="0" alt="Alex logo"></a><table width="100%" summary="Navigation header" border="0"><tr><td width="20%" align="left"><a accesskey="p" href="automated-testing-best-practices.html">Prev</a> </td><th width="60%" align="center">Part�III.�For OpenACS Package Developers</th><td width="20%" align="right"> <a accesskey="n" href="docbook-primer.html">Next</a></td></tr></table><hr></div><div class="chapter" lang="en"><div class="titlepage"><div><div><h2 class="title"><a name="doc-standards"></a>Chapter�13.�Documentation Standards</h2></div></div></div><div class="toc"><p><b>Table of Contents</b></p><dl><dt><span class="sect1"><a href="docbook-primer.html">OpenACS Documentation Guide</a></span></dt><dt><span class="sect1"><a href="psgml-mode.html">Using PSGML mode in Emacs</a></span></dt><dt><span class="sect1"><a href="nxml-mode.html">Using nXML mode in Emacs</a></span></dt><dt><span class="sect1"><a href="filename.html">Detailed Design Documentation Template</a></span></dt><dt><span class="sect1"><a href="requirements-template.html">System/Application Requirements Template</a></span></dt></dl></div></div><div class="navfooter"><hr><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="automated-testing-best-practices.html">Prev</a> </td><td width="20%" align="center"><a accesskey="h" href="index.html">Home</a></td><td width="40%" align="right"> <a accesskey="n" href="docbook-primer.html">Next</a></td></tr><tr><td width="40%" align="left">Automated Testing </td><td width="20%" align="center"><a accesskey="u" href="acs-package-dev.html">Up</a></td><td width="40%" align="right"> OpenACS Documentation Guide</td></tr></table><hr><address><a href="mailto:docs@openacs.org">docs@openacs.org</a></address></div><a name="comments"></a><center><a href="http://openacs.org/doc/current/doc-standards.html#comments">View comments on this page at openacs.org</a></center></body></html>
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html><head><meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"><title>Chapter�13.�Documentation Standards</title><meta name="generator" content="DocBook XSL Stylesheets V1.60.1"><link rel="home" href="index.html" title="OpenACS Core Documentation"><link rel="up" href="acs-package-dev.html" title="Part�III.�For OpenACS Package Developers"><link rel="previous" href="automated-testing-best-practices.html" title="Automated Testing"><link rel="next" href="docbook-primer.html" title="OpenACS Documentation Guide"><link rel="stylesheet" href="openacs.css" type="text/css"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><a href="http://openacs.org"><img src="/doc/images/alex.jpg" border="0" alt="Alex logo"></a><table width="100%" summary="Navigation header" border="0"><tr><td width="20%" align="left"><a accesskey="p" href="automated-testing-best-practices.html">Prev</a> </td><th width="60%" align="center">Part�III.�For OpenACS Package Developers</th><td width="20%" align="right"> <a accesskey="n" href="docbook-primer.html">Next</a></td></tr></table><hr></div><div class="chapter" lang="en"><div class="titlepage"><div><div><h2 class="title"><a name="doc-standards"></a>Chapter�13.�Documentation Standards</h2></div></div><div></div></div><div class="toc"><p><b>Table of Contents</b></p><dl><dt><a href="docbook-primer.html">OpenACS Documentation Guide</a></dt><dt><a href="psgml-mode.html">Using PSGML mode in Emacs</a></dt><dt><a href="nxml-mode.html">Using nXML mode in Emacs</a></dt><dt><a href="filename.html">Detailed Design Documentation Template</a></dt><dt><a href="requirements-template.html">System/Application Requirements Template</a></dt></dl></div></div><div class="navfooter"><hr><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="automated-testing-best-practices.html">Prev</a> </td><td width="20%" align="center"><a accesskey="h" href="index.html">Home</a></td><td width="40%" align="right"> <a accesskey="n" href="docbook-primer.html">Next</a></td></tr><tr><td width="40%" align="left">Automated Testing </td><td width="20%" align="center"><a accesskey="u" href="acs-package-dev.html">Up</a></td><td width="40%" align="right"> OpenACS Documentation Guide</td></tr></table><hr><address><a href="mailto:docs@openacs.org">docs@openacs.org</a></address></div><a name="comments"></a><center><a href="http://openacs.org/doc/current/doc-standards.html#comments">View comments on this page at openacs.org</a></center></body></html>
Index: openacs-4/packages/acs-core-docs/www/docbook-primer.html
===================================================================
RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/docbook-primer.html,v
diff -u -r1.45 -r1.45.4.1
--- openacs-4/packages/acs-core-docs/www/docbook-primer.html	17 Jul 2006 05:38:31 -0000	1.45
+++ openacs-4/packages/acs-core-docs/www/docbook-primer.html	3 Feb 2008 12:07:38 -0000	1.45.4.1
@@ -1,6 +1,7 @@
-<html><head><meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"><title>OpenACS Documentation Guide</title><meta name="generator" content="DocBook XSL Stylesheets V1.70.1"><link rel="home" href="index.html" title="OpenACS Core Documentation"><link rel="up" href="doc-standards.html" title="Chapter�13.�Documentation Standards"><link rel="previous" href="doc-standards.html" title="Chapter�13.�Documentation Standards"><link rel="next" href="psgml-mode.html" title="Using PSGML mode in Emacs"><link rel="stylesheet" href="openacs.css" type="text/css"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><a href="http://openacs.org"><img src="/doc/images/alex.jpg" border="0" alt="Alex logo"></a><table width="100%" summary="Navigation header" border="0"><tr><td width="20%" align="left"><a accesskey="p" href="doc-standards.html">Prev</a> </td><th width="60%" align="center">Chapter�13.�Documentation Standards</th><td width="20%" align="right"> <a accesskey="n" href="psgml-mode.html">Next</a></td></tr></table><hr></div><div class="sect1" lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="docbook-primer"></a>OpenACS Documentation Guide</h2></div></div></div><p>
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html><head><meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"><title>OpenACS Documentation Guide</title><meta name="generator" content="DocBook XSL Stylesheets V1.60.1"><link rel="home" href="index.html" title="OpenACS Core Documentation"><link rel="up" href="doc-standards.html" title="Chapter�13.�Documentation Standards"><link rel="previous" href="doc-standards.html" title="Chapter�13.�Documentation Standards"><link rel="next" href="psgml-mode.html" title="Using PSGML mode in Emacs"><link rel="stylesheet" href="openacs.css" type="text/css"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><a href="http://openacs.org"><img src="/doc/images/alex.jpg" border="0" alt="Alex logo"></a><table width="100%" summary="Navigation header" border="0"><tr><td width="20%" align="left"><a accesskey="p" href="doc-standards.html">Prev</a> </td><th width="60%" align="center">Chapter�13.�Documentation Standards</th><td width="20%" align="right"> <a accesskey="n" href="psgml-mode.html">Next</a></td></tr></table><hr></div><div class="sect1" lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="docbook-primer"></a>OpenACS Documentation Guide</h2></div></div><div></div></div><p>
     By Claus Rasmussen, with additions by Roberto Mello, Vinod Kurup, and the OpenACS Community
-  </p><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="dbprimer-overview"></a>Overview of OpenACS Documentation</h3></div></div></div><p>
+  </p><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="dbprimer-overview"></a>Overview of OpenACS Documentation</h3></div></div><div></div></div><p>
       <span class="productname">OpenACS</span>&#8482; is a powerful system with
       incredible possibilities and applications, but
       this power comes with some complexity and a steep learning curve
@@ -40,7 +41,7 @@
       This document attempts to shape ongoing documentation efforts by
       using principles of continual improvement to re-engineer
       documentation production.
-    </p></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="docs-managing"></a>Managing OpenACS Documentation</h3></div></div></div><p>  
+    </p></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="docs-managing"></a>Managing OpenACS Documentation</h3></div></div><div></div></div><p>  
       Documentation production shares many of the challenges of
       software development, such as managing contributions, revisions
       and the (editorial) release cycle. This is yet another
@@ -49,31 +50,31 @@
       efforts. These processes are outlined as project management 
       phases:
     </p><div class="orderedlist"><ol type="1"><li><p>
-        <span class="strong"><strong>Requirements phase</strong></span> is about setting goals and
+        <span class="strong">Requirements phase</span> is about setting goals and
         specifications, and includes exploration of scenarios, use cases
         etc.  As an example, see the <a href="http://openacs.org/doc/openacs-4/requirements-template.html" target="_top">
         OpenACS Documentation Requirements Template</a> which focuses on
         systems requirements for developers.
       </p></li><li><p>
-        <span class="strong"><strong>Strategy phase</strong></span> is about creating an approach
+        <span class="strong">Strategy phase</span> is about creating an approach
         to doing work. It sets behavioral guidelines and boundaries
         that help keep perspective on how efforts are directed.
         OpenACS developers discuss strategy when coordinating
         efforts such as code revisioning and new features.
       </p></li><li><p>
-        <span class="strong"><strong>Planning phase</strong></span> is about explicitly stating
+        <span class="strong">Planning phase</span> is about explicitly stating
         the way to implement the strategy as a set of methods.
         OpenACS system design requires planning. For example, see
         <a href="http://openacs.org/doc/openacs-4/filename.html" target="_top">OpenACS
         documentation template</a> planning relating to package
         design. 
       </p></li><li><p>
-        <span class="strong"><strong>Implementation phase</strong></span> is about performing the
+        <span class="strong">Implementation phase</span> is about performing the
         work according to the plan, where decisions on how to handle
         unforseen circumstances are guided by the strategy and
         requirements.
       </p></li><li><p>
-        <span class="strong"><strong>Verification phase</strong></span> measures how well the plan
+        <span class="strong">Verification phase</span> measures how well the plan
         was implemented. Success is measured by A) verifying if the
         project has met the established goals, and B) reviewing for
         ongoing problem areas etc.  OpenACS follows verification
@@ -87,7 +88,7 @@
       phases are mainly organized and fulfilled by a designated documentation maintainer.
       Hopefully the following sections will help spur greater
       direct participation by the OpenACS community.
-    </p></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="docs-requirements"></a>OpenACS General Documentation Requirements</h3></div></div></div><p>
+    </p></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="docs-requirements"></a>OpenACS General Documentation Requirements</h3></div></div><div></div></div><p>
       By the OpenACS Community. This section is a collection of
       documentation requirements that have been expressed in the
       OpenACS forums to 4th July 2003.
@@ -96,7 +97,7 @@
       significance has been given to the order presented, topic breadth or depth here.
     </p><div class="itemizedlist"><ul type="disc"><li><p>
         clarity in presentation. <a href="http://www.lifewithqmail.org/lwq.html" target="_top">Life with
-        qmail</a> is a recommended example of "rated high" online
+        qmail</a> is a recommended example of &quot;rated high&quot; online
         documentation.
       </p></li><li><p>
         Avoid requirements that significantly increase the labor
@@ -128,14 +129,14 @@
           </p></li><li><p>
             Do not make informal exclamations about difficulty/ease
             for users to complete tasks or understand... for
-            example, "Simply...".  Readers come from many different
+            example, &quot;Simply...&quot;.  Readers come from many different
             backgrounds --remember that the greater audience is
             likely as varied as the readers on the internet--- If
             important, state pre-conditions or knowledge
             requirements etc. if different than the rest of the
-            context of the document. For example, "requires basic
+            context of the document. For example, &quot;requires basic
             competency with a text-based editor such as vi or emacs
-            via telnet"
+            via telnet&quot;
           </p></li></ul></div></li><li><p>
         Show where to find current information instead of writing
         about current info that becomes obsolete. If the information
@@ -193,10 +194,10 @@
           </p></li><li><p>
             Use generic DocBook syntax to maximize reader familiarity with the documents.
               </p><pre class="programlisting">
-                &lt;book&gt;&lt;title&gt;&lt;part label="Part 1"&gt;&lt;etc...&gt;
+                &lt;book&gt;&lt;title&gt;&lt;part label=&quot;Part 1&quot;&gt;&lt;etc...&gt;
               </pre><p>
           </p></li></ul></div><p>
-      </p></li></ul></div></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="docs-end-user-reqs"></a>OpenACS Documentation Requirements for End-users</h3></div></div></div><p>
+      </p></li></ul></div></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="docs-end-user-reqs"></a>OpenACS Documentation Requirements for End-users</h3></div></div><div></div></div><p>
       By the OpenACS Community. This section is a collection of
       documentation requirements that have been expressed in the
       OpenACS forums to 4th July 2003.
@@ -224,10 +225,10 @@
         solution, customer cost, convenience, value). A
         comprehensive community communications system; How this
         system is valuable to users; Reasons others use OpenACS
-        (with quotes in their own words) "...the most important
+        (with quotes in their own words) &quot;...the most important
         thing that the ACS does is manage users, i.e. provide  a way
         to group, view and manipulate members of the web community.
-        -- Talli Somekh, September 19, 2001"   using it to
+        -- Talli Somekh, September 19, 2001&quot;   using it to
         communicate, cooperate, collaborate... OpenACS offers
         directed content functionality with the OpenACS templating
         system.   ... OpenACS is more than a data collection and
@@ -247,14 +248,14 @@
      </p></li><li><p>
         From a marketing perspective, 
         </p><div class="itemizedlist"><ul type="circle"><li><p>
-            differentiate "product" by highlighting features,
+            differentiate &quot;product&quot; by highlighting features,
             performance quality, conformance to standards,
             durability (handling of technological obsolescence),
             reliability, repairability, style of use, design
             (strategy in design, specifications, integrated,
             well-matched systems etc).
           </p></li><li><p>
-            differentiate "service" by highlighting software
+            differentiate &quot;service&quot; by highlighting software
             availability (licensing and completeness from mature to early
             adopters or development versions), community incident
             support, project collaborative opportunities, and
@@ -338,7 +339,7 @@
         development document templates: a <a href="http://openacs.org/doc/current/requirements-template.html" target="_top">
         Requirements Template</a> and <a href="http://openacs.org/doc/current/filename.html" target="_top">Detailed
         Design Document</a>.
-      </p></li></ul></div></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="docs-admin-reqs"></a>OpenACS Documentation Requirements for Site and Administrators</h3></div></div></div><p>
+      </p></li></ul></div></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="docs-admin-reqs"></a>OpenACS Documentation Requirements for Site and Administrators</h3></div></div><div></div></div><p>
       By the OpenACS Community. This section is a collection of
       documentation requirements that have been expressed in the
       OpenACS forums to 4th July 2003.
@@ -350,7 +351,7 @@
         and other documentation for more detail.
       </p></li><li><p>
         Describe a structural overview of a working system and how
-        the components work together. "The Layered Cake view" a
+        the components work together. &quot;The Layered Cake view&quot; a
         general network view of system; a table showing system
         levels versus roles to help with understanding how the
         subsystems are interconnected. 
@@ -376,15 +377,15 @@
         subsystems, work/group communication skills et cetera
       </p></li><li><p>
         Describe how to set up typical site moderation and
-        administration including parameters, permissions, "Hello
-        World" page
+        administration including parameters, permissions, &quot;Hello
+        World&quot; page
       </p></li><li><p>
         Show directory structure of a typical package, explanation
         of the various file types in a package (tcl,adp,xql) and how
         those relate to the previously described subsystems, when
         they get refreshed etc.
       </p></li><li><p>
-        Ways to build a "Hello World" page
+        Ways to build a &quot;Hello World&quot; page
       </p></li><li><p>
         Show examples of how the OpenACS templating system is used,
         including portal sections of pages. For example, create a
@@ -403,30 +404,30 @@
       </p></li><li><p>
         FAQs: Administration tasks commonly discussed on boards:
         admin page flow, how to change the looks of a subsite with a
-        new master.adp, options on "user pages" , a quick
+        new master.adp, options on &quot;user pages&quot; , a quick
         introduction to the functions and processes. info about the
         user variables, file locations
-      </p></li></ul></div></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="docs-install-reqs"></a>OpenACS Installation Documentation Requirements</h3></div></div></div><p>
+      </p></li></ul></div></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="docs-install-reqs"></a>OpenACS Installation Documentation Requirements</h3></div></div><div></div></div><p>
       By the OpenACS Community. This section is a collection of
       documentation requirements that have been expressed in the
       OpenACS forums to 4th July 2003.
     </p><p>
       OpenACS installation documentation should meet the following requirements. No
       significance has been given to the order presented, topic breadth or depth here.
     </p><div class="itemizedlist"><ul type="disc"><li><p>
-        state installation prerequisites. For example: "You should
+        state installation prerequisites. For example: &quot;You should
         read through the installation process to familiarize
         yourself with the installation process, before beginning an
-        installation."
+        installation.&quot;
       </p></li><li><p>
         list critical decisions (perhaps as questions) that need to
         be made before starting: which OS, which DB, which aolserver
         version, system name, dependencies et cetera. Maybe summarize
-        options as tables or decision-trees. For example, "As you
+        options as tables or decision-trees. For example, &quot;As you
         proceed throughout the installation, you will be acting on
         decisions that have an impact on how the remaining part of
         the system is installed. Here is a list of questions you
-        should answer before beginning." 
+        should answer before beginning.&quot; 
       </p></li><li><p>
         list pre-installation assumptions
       </p></li><li><p>
@@ -436,7 +437,7 @@
         for OpenACS, RDBMS(s) install and configure, Webserver
         install and configure, OpenACS install and configure,
         post-install work
-      </p></li></ul></div></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="docs-developer-tutorial-reqs"></a>OpenACS Developer Tutorial Documentation Requirements</h3></div></div></div><p>
+      </p></li></ul></div></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="docs-developer-tutorial-reqs"></a>OpenACS Developer Tutorial Documentation Requirements</h3></div></div><div></div></div><p>
       By the OpenACS Community. This section is a collection of
       documentation requirements that have been expressed in the
       OpenACS forums to 4th July 2003.
@@ -472,7 +473,7 @@
         that meets current recommended coding styles of OpenACS
         package development, by referring to developer resources.
       </p></li><li><p>
-        Use the ArsDigita problem sets and "what Lars produced for ACS Java" as inspiration for a
+        Use the ArsDigita problem sets and &quot;what Lars produced for ACS Java&quot; as inspiration for a
         PostgreSQL equivalent tutorial about developing a new
         OpenACS package including discussion of the significance of
         the package documentation templates
@@ -481,7 +482,7 @@
       </p></li><li><p>
         Note any deprecated tools and methods by linking to prior
         versions instead of describing them in current docs
-      </p></li></ul></div></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="docs-developer-reqs"></a>OpenACS Developer Documentation Requirements</h3></div></div></div><p>
+      </p></li></ul></div></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="docs-developer-reqs"></a>OpenACS Developer Documentation Requirements</h3></div></div><div></div></div><p>
       By the OpenACS Community. This section is a collection of
       documentation requirements that have been expressed in the
       OpenACS forums to 4th July 2003.
@@ -520,7 +521,7 @@
         including planning, core functions, testing, usability, and
         creating case studies
       </p></li><li><p>
-        Standard package conventions, where to see "model" code, and
+        Standard package conventions, where to see &quot;model&quot; code, and
         guidelines (or where to find them) for:
         </p><div class="itemizedlist"><ul type="circle"><li><p>
             programming tcl/sql
@@ -553,10 +554,10 @@
         Document kernel coding requirements, strategy and guidelines
         to help code changers make decisions that meet kernel
         designers' criteria
-      </p></li></ul></div></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="doc-strategy"></a>OpenACS Documentation Strategy</h3></div></div></div><p>
+      </p></li></ul></div></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="doc-strategy"></a>OpenACS Documentation Strategy</h3></div></div><div></div></div><p>
       OpenACS documentation development is subject to the
       constraints of the software project development and release
-      methods and cycles (<a href="cvs-guidelines.html#using-cvs-with-openacs" title="Using CVS with OpenACS">the section called &#8220;Using CVS with OpenACS&#8221;</a>).
+      methods and cycles (<a href="cvs-guidelines.html#using-cvs-with-openacs" title="Using CVS with OpenACS">Section�, &#8220;Using CVS with OpenACS&#8221;</a>).
       Essentially, all phases of work may be active to accommodate
       the asynchronous nature of multiple subprojects evolving by
       the efforts of a global base of participants with culturally
@@ -566,7 +567,7 @@
       involve others by collaborating or obtaining guidance or
       feedback (peer review) to distribute the workload and increase
       the overall value of output for the OpenACS project. 
-    </p></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="dbprimer-why"></a>OpenACS Documentation Strategy: Why DocBook?</h3></div></div></div><p>
+    </p></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="dbprimer-why"></a>OpenACS Documentation Strategy: Why DocBook?</h3></div></div><div></div></div><p>
       OpenACS documentation is taking a dual approach to publishing.
     Documentation that is subject to rapid change and participation by
     the OpenACS community is managed through the <a href="http://openacs.org/xowiki/pages/en/Documentation_Project" target="_top">OpenACS
@@ -577,7 +578,7 @@
       DTD</a>. The remaining discussion is about publishing using
     Docbook.
 </p><p>
-<a class="indexterm" name="id1079991"></a> 
+<a class="indexterm" name="id2989964"></a> 
       is a publishing standard based on XML with
       similar goals to the OpenACS Documentation project.  Some specific reasons why we are using DocBook:
     </p><div class="itemizedlist"><ul type="disc"><li><p>      
@@ -628,9 +629,9 @@
       should be able to extract details of a specific reference from
       a bibliographic (table) and present a footnote  at the
       point where referenced. DocBook 4.4 allows for this with
-      <code class="computeroutput">bibliocoverage</code>,
-      <code class="computeroutput">bibliorelation</code>, and
-      <code class="computeroutput">bibliosource</code>. <a href="http://www.docbook.org/tdg/en/html/docbook.html" target="_top">DocBook:
+      <tt class="computeroutput">bibliocoverage</tt>,
+      <tt class="computeroutput">bibliorelation</tt>, and
+      <tt class="computeroutput">bibliosource</tt>. <a href="http://www.docbook.org/tdg/en/html/docbook.html" target="_top">DocBook:
       The Definitive Guide</a> is a good start for learning how
       to represent paper-based books online.
     </p><p>
@@ -639,16 +640,16 @@
       <a href="http://docbook.org/tdg/en/html/part2.html" target="_top">
     list of elements</a> and use more exotic features in your
       documents. The list is made up of SGML-elements but basically
-      the same elements are valid in the XML DTD <span class="strong"><strong>as long as you remember to</strong></span>:
-      <a class="indexterm" name="id1075216"></a>
+      the same elements are valid in the XML DTD <span class="strong">as long as you remember to</span>:
+      <a class="indexterm" name="id2990182"></a>
     </p><div class="itemizedlist"><ul type="disc"><li><p>
       Always close your tags with corresponding end-tags and to
-      <span class="strong"><strong>not use other tag minimization</strong></span>
+      <span class="strong">not use other tag minimization</span>
     </p></li><li><p>
       Write all elements and attributes in lowercase
     </p></li><li><p>
       Quote all attributes
-    </p></li></ul></div></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="dbprimer-validation"></a>Tools</h3></div></div></div><p>
+    </p></li></ul></div></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="dbprimer-validation"></a>Tools</h3></div></div><div></div></div><p>
       You are going to need the following to work with the OpenACS
       Docbook XML documentation:
     </p><div class="itemizedlist"><ul type="disc"><li><p>
@@ -662,7 +663,7 @@
     to HTML. We have been using a stylesheet based upon
     NWalsh's chunk.xsl.
     </p></li><li><p>
-    <code class="computeroutput">xsltproc</code> - The processor that
+    <tt class="computeroutput">xsltproc</tt> - The processor that
     will take an XML document and, given a xsl stylesheet, convert
     it to HTML. It needs libxml2 and libxslt (available in RPM and
     DEB formats or from <a href="http://xmlsoft.org/" target="_top">xmlsoft.org</a>.  
@@ -671,7 +672,7 @@
     modes. The <a href="http://en.tldp.org/LDP/LDP-Author-Guide/" target="_top">LDP Author
     Guide</a> and <a href="http://wiki.docbook.org/topic/DocBookAuthoringTools" target="_top">DocBook
     Wiki</a> list some alternates.
-    </p></li></ul></div></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="dbprimer-new-doc"></a>Writing New Docs</h3></div></div></div><p>
+    </p></li></ul></div></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="dbprimer-new-doc"></a>Writing New Docs</h3></div></div><div></div></div><p>
       After you have the tools mentioned above, you need to define a
       title for your document. Then start thinking about the possible
       sections and subsections you will have in your document. Make
@@ -685,196 +686,196 @@
       for acs-core-docs</a>, especially the <span class="emphasis"><em>
       Detailed Design Documentation Template</em></span> and the
       <span class="emphasis"><em>System/Application Requirements Template</em></span>.
-    </p></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="dbprimer-structure"></a>Document Structure</h3></div></div></div><p>
-      The documentation for each package will make up a little "book" that is structured like this 
+    </p></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="dbprimer-structure"></a>Document Structure</h3></div></div><div></div></div><p>
+      The documentation for each package will make up a little &quot;book&quot; that is structured like this 
       - examples are <span class="emphasis"><em>emphasized</em></span>:
 
-      <a class="indexterm" name="id973489"></a>
+      <a class="indexterm" name="id2990415"></a>
 
     </p><pre class="programlisting">
-    book                        : <span class="strong"><strong>Docs for one package</strong></span> - <span class="emphasis"><em>templating</em></span>
+    book                        : <span class="strong">Docs for one package</span> - <span class="emphasis"><em>templating</em></span>
      |
-     +--chapter                 : <span class="strong"><strong>One section</strong></span> - <span class="emphasis"><em>for developers</em></span>
+     +--chapter                 : <span class="strong">One section</span> - <span class="emphasis"><em>for developers</em></span>
          |
 ---------+------------------------------------------------------
          |
-         +--sect1               : <span class="strong"><strong>Single document</strong></span> - <span class="emphasis"><em>requirements</em></span>
+         +--sect1               : <span class="strong">Single document</span> - <span class="emphasis"><em>requirements</em></span>
              |
-             +--sect2           : <span class="strong"><strong>Sections</strong></span> - <span class="emphasis"><em>functional requirements</em></span>
+             +--sect2           : <span class="strong">Sections</span> - <span class="emphasis"><em>functional requirements</em></span>
                  |
-                 +--sect3       : <span class="strong"><strong>Subsections</strong></span> - <span class="emphasis"><em>Programmer's API</em></span>
+                 +--sect3       : <span class="strong">Subsections</span> - <span class="emphasis"><em>Programmer's API</em></span>
                      |
-                    ...         : <span class="strong"><strong>...</strong></span>
+                    ...         : <span class="strong">...</span>
     </pre><p>
       The actual content is split up into documents that start at a
-      <code class="computeroutput">sect1</code>-level. These are then tied together in a top-level document that 
+      <tt class="computeroutput">sect1</tt>-level. These are then tied together in a top-level document that 
       contains all the information above the line. This will be explained in more detail in a later document, 
       and we will provide a set of templates for documenting an entire package. </p><p>For now you can take a look at the
       <a href="http://openacs.org/cvs/openacs-4/packages/acs-core-docs/www/xml/engineering-standards" target="_top">sources of these DocBook documents</a>
       to get an idea of how they are tied together.
-    </p></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="dbprimer-sections"></a>Headlines, Sections</h3></div></div></div><p>
-      <a class="indexterm" name="id1073871"></a>
-      Given that your job starts at the <code class="computeroutput">sect1</code>-level, all your documents should open with a
-      <a href="http://docbook.org/tdg/en/html/sect1.html" target="_top"><code class="computeroutput">&lt;sect1&gt;</code></a>-tag and end 
-      with the corresponding <code class="computeroutput">&lt;/sect1&gt;</code>.
+    </p></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="dbprimer-sections"></a>Headlines, Sections</h3></div></div><div></div></div><p>
+      <a class="indexterm" name="id2990546"></a>
+      Given that your job starts at the <tt class="computeroutput">sect1</tt>-level, all your documents should open with a
+      <a href="http://docbook.org/tdg/en/html/sect1.html" target="_top"><tt class="computeroutput">&lt;sect1&gt;</tt></a>-tag and end 
+      with the corresponding <tt class="computeroutput">&lt;/sect1&gt;</tt>.
     </p><p>
-      <a class="indexterm" name="id1069319"></a>
-      You need to feed every <code class="computeroutput">&lt;sect1&gt;</code> two attributes. The first attribute,
-      <code class="computeroutput">id</code>, is standard and can be used with all elements. It comes in  very 
-      handy when interlinking between documents (more about this when talking about links in <a href="docbook-primer.html#dbprimer-links" title="Links">the section called &#8220;Links&#8221;</a>). 
-      The value of <code class="computeroutput">id</code> has to be unique 
-      throughout the book you're making since the <code class="computeroutput">id</code>'s in your 
-      <code class="computeroutput">sect1</code>'s will turn into filenames when the book is parsed into HTML.
+      <a class="indexterm" name="id3023553"></a>
+      You need to feed every <tt class="computeroutput">&lt;sect1&gt;</tt> two attributes. The first attribute,
+      <tt class="computeroutput">id</tt>, is standard and can be used with all elements. It comes in  very 
+      handy when interlinking between documents (more about this when talking about links in <a href="docbook-primer.html#dbprimer-links" title="Links">Section�, &#8220;Links&#8221;</a>). 
+      The value of <tt class="computeroutput">id</tt> has to be unique 
+      throughout the book you're making since the <tt class="computeroutput">id</tt>'s in your 
+      <tt class="computeroutput">sect1</tt>'s will turn into filenames when the book is parsed into HTML.
     </p><p>
-      <a class="indexterm" name="id962600"></a>
-      The other attribute is <code class="computeroutput">xreflabel</code>. The value of this is the text that will appear
-      as the link when referring to this <code class="computeroutput">sect1</code>.
+      <a class="indexterm" name="id3023612"></a>
+      The other attribute is <tt class="computeroutput">xreflabel</tt>. The value of this is the text that will appear
+      as the link when referring to this <tt class="computeroutput">sect1</tt>.
     </p><p>
       Right after the opening tag you put the title of the document - this is usually the same as 
-      <code class="computeroutput">xreflabel</code>-attribute. E.g. the top level of the document you're
+      <tt class="computeroutput">xreflabel</tt>-attribute. E.g. the top level of the document you're
       reading right now looks like this:
     </p><pre class="programlisting">
-&lt;sect1 id="docbook-primer" xreflabel="DocBook Primer"&gt;
+&lt;sect1 id=&quot;docbook-primer&quot; xreflabel=&quot;DocBook Primer&quot;&gt;
   &lt;title&gt;DocBook Primer&lt;/title&gt;
 
 ...
 
 &lt;/sect1&gt;
 </pre><p>
-      <a class="indexterm" name="id1045753"></a>
+      <a class="indexterm" name="id3023664"></a>
       Inside this container your document will be split up into 
-      <a href="http://docbook.org/tdg/en/html/sect2.html" target="_top"><code class="computeroutput">&lt;sect2&gt;</code></a>'s,
-      each with the same requirements - <code class="computeroutput">id</code> and <code class="computeroutput">xreflabel</code>
-      attributes, and a <code class="computeroutput">&lt;title&gt;</code>-tag inside. Actually, the <code class="computeroutput">xreflabel</code> is never required in sections, but it makes linking to that section a lot easier.
+      <a href="http://docbook.org/tdg/en/html/sect2.html" target="_top"><tt class="computeroutput">&lt;sect2&gt;</tt></a>'s,
+      each with the same requirements - <tt class="computeroutput">id</tt> and <tt class="computeroutput">xreflabel</tt>
+      attributes, and a <tt class="computeroutput">&lt;title&gt;</tt>-tag inside. Actually, the <tt class="computeroutput">xreflabel</tt> is never required in sections, but it makes linking to that section a lot easier.
     </p><p>
       When it comes to naming your
-      <code class="computeroutput">sect2</code>'s and below, prefix them with some abbreviation of the <code class="computeroutput">id</code> in the <code class="computeroutput">sect1</code> such as <code class="computeroutput">requirements-overview</code>.
-    </p></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="dbprimer-code"></a>Code</h3></div></div></div><p>
-      <a class="indexterm" name="id1007950"></a>
+      <tt class="computeroutput">sect2</tt>'s and below, prefix them with some abbreviation of the <tt class="computeroutput">id</tt> in the <tt class="computeroutput">sect1</tt> such as <tt class="computeroutput">requirements-overview</tt>.
+    </p></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="dbprimer-code"></a>Code</h3></div></div><div></div></div><p>
+      <a class="indexterm" name="id3023765"></a>
       For displaying a snippet of code, a filename or anything else you just want to appear as a part of
       a sentence, we use  
-      <a href="http://docbook.org/tdg/en/html/computeroutput.html" target="_top"><code class="computeroutput">&lt;computeroutput&gt;</code></a>
-      and <a href="http://docbook.org/tdg/en/html/code.html" target="_top"><code class="code">&lt;code&gt;</code></a>
+      <a href="http://docbook.org/tdg/en/html/computeroutput.html" target="_top"><tt class="computeroutput">&lt;computeroutput&gt;</tt></a>
+      and <a href="http://docbook.org/tdg/en/html/code.html" target="_top"><font color="red">&lt;code&gt;&lt;code&gt;&lt;/code&gt;</font></a>
       tags.
-      These replace the HTML-tag <code class="code">&lt;code&gt;</code> tag,
+      These replace the HTML-tag <font color="red">&lt;code&gt;&lt;code&gt;&lt;/code&gt;</font> tag,
       depending on whether the tag is describing computer output or
       computer code.
     </p><p>
       For bigger chunks of code such as SQL-blocks, the tag 
-      <a href="http://docbook.org/tdg/en/html/programlisting.html" target="_top"><code class="computeroutput">&lt;programlisting&gt;</code></a> is used. Just wrap your code block in it; mono-spacing, indents and all that stuff is taken care of
+      <a href="http://docbook.org/tdg/en/html/programlisting.html" target="_top"><tt class="computeroutput">&lt;programlisting&gt;</tt></a> is used. Just wrap your code block in it; mono-spacing, indents and all that stuff is taken care of
       automatically. 
     </p><p>For expressing user interaction via a terminal window, we wrap
-      the <a href="http://docbook.org/tdg/en/html/screen.html" target="_top"><code class="computeroutput">&lt;screen&gt;</code></a> 
-      tag around text that has been wrapped by combinations of <a href="http://docbook.org/tdg/en/html/computeroutput.html" target="_top"><code class="computeroutput">&lt;computeroutput&gt;</code></a>
-      and <a href="http://docbook.org/tdg/en/html/userinput.html" target="_top"><strong class="userinput"><code>&lt;userinput&gt;</code></strong></a>
-</p></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="dbprimer-links"></a>Links</h3></div></div></div><p>
-      <a class="indexterm" name="id1074832"></a>
+      the <a href="http://docbook.org/tdg/en/html/screen.html" target="_top"><tt class="computeroutput">&lt;screen&gt;</tt></a> 
+      tag around text that has been wrapped by combinations of <a href="http://docbook.org/tdg/en/html/computeroutput.html" target="_top"><tt class="computeroutput">&lt;computeroutput&gt;</tt></a>
+      and <a href="http://docbook.org/tdg/en/html/userinput.html" target="_top"><b class="userinput"><tt>&lt;userinput&gt;</tt></b></a>
+</p></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="dbprimer-links"></a>Links</h3></div></div><div></div></div><p>
+      <a class="indexterm" name="id3023883"></a>
       Linking falls into two different categories: inside the book you're making and outside:
-    </p><div class="variablelist"><dl><dt><span class="term"><span class="strong"><strong>1. Inside linking, cross-referencing other parts of your book</strong></span></span></dt><dd><p>
-        By having unique <code class="computeroutput">id</code>'s you can cross-reference any part of your book
+    </p><div class="variablelist"><dl><dt><span class="term"><span class="strong">1. Inside linking, cross-referencing other parts of your book</span></span></dt><dd><p>
+        By having unique <tt class="computeroutput">id</tt>'s you can cross-reference any part of your book
         with a simple tag, regardless of where that part is.
-      </p><p><a class="indexterm" name="id962924"></a>Check out how I link to a subsection of the Developer's Guide:</p><p>Put this in your XML:</p><pre class="programlisting">
+      </p><p><a class="indexterm" name="id3023925"></a>Check out how I link to a subsection of the Developer's Guide:</p><p>Put this in your XML:</p><pre class="programlisting">
 - Find information about creating a package in
-&lt;xref linkend="packages-making-a-package"&gt;&lt;/xref&gt;.
+&lt;xref linkend=&quot;packages-making-a-package&quot;&gt;&lt;/xref&gt;.
 </pre><p>And the output is:</p><pre class="programlisting">
 - Find information about creating a package in 
 <a href="packages.html#packages-making-a-package">Making a Package</a>.
 </pre><p>
         Note that even though this is an empty tag, you have to either:
       </p><div class="orderedlist"><ol type="1"><li><p>
-        Provide the end-tag, <code class="computeroutput">&lt;/xref&gt;</code>, or
+        Provide the end-tag, <tt class="computeroutput">&lt;/xref&gt;</tt>, or
           </p></li><li><p>
-        Put a slash before the ending-bracket: <code class="computeroutput">&lt;xref linkend="blahblah"/&gt;</code>
-          </p></li></ol></div><p>If the section you link to hasn't a specified <code class="computeroutput">xreflabel</code>-attribute,
+        Put a slash before the ending-bracket: <tt class="computeroutput">&lt;xref linkend=&quot;blahblah&quot;/&gt;</tt>
+          </p></li></ol></div><p>If the section you link to hasn't a specified <tt class="computeroutput">xreflabel</tt>-attribute,
         the link is going to look like this:</p><p>Put this in your XML:</p><pre class="programlisting">
 -Find information about what a package looks like in 
-&lt;xref linkend="packages-looks"&gt;&lt;/xref&gt;.
+&lt;xref linkend=&quot;packages-looks&quot;&gt;&lt;/xref&gt;.
 </pre><p>And the output is:</p><pre class="programlisting">
 - Find information about what a package looks like in 
-<a href="packages.html#packages-looks" title="What a Package Looks Like">the section called &#8220;What a Package Looks Like&#8221;</a>.
+<a href="packages.html#packages-looks" title="What a Package Looks Like">Section�, &#8220;What a Package Looks Like&#8221;</a>.
 </pre><p>
-        Note that since I haven't provided an <code class="computeroutput">xreflabel</code> for the subsection, 
-        <code class="computeroutput">packages-looks</code>, the
+        Note that since I haven't provided an <tt class="computeroutput">xreflabel</tt> for the subsection, 
+        <tt class="computeroutput">packages-looks</tt>, the
         parser will try its best to explain where the link takes you.
-      </p></dd><dt><span class="term"><span class="strong"><strong>2. Linking outside the documentation</strong></span></span></dt><dd><p>
-        <a class="indexterm" name="id1077714"></a>
+      </p></dd><dt><span class="term"><span class="strong">2. Linking outside the documentation</span></span></dt><dd><p>
+        <a class="indexterm" name="id3024097"></a>
         If you're hyper-linking out of the documentation, it works almost the same way as HTML - the tag is just
         a little different
 
-        (<a href="http://docbook.org/tdg/en/html/ulink.html" target="_top"><code class="computeroutput">&lt;ulink&gt;</code></a>):
+        (<a href="http://docbook.org/tdg/en/html/ulink.html" target="_top"><tt class="computeroutput">&lt;ulink&gt;</tt></a>):
 
-      </p><pre class="programlisting">&lt;ulink url="http://www.oracle.com/"&gt;Oracle Corporation&lt;/ulink&gt;</pre><p>
+      </p><pre class="programlisting">&lt;ulink url=&quot;http://www.oracle.com/&quot;&gt;Oracle Corporation&lt;/ulink&gt;</pre><p>
 
         ....will create a hyper-link to Oracle in the HTML-version of the documentation.
-      </p><p><span class="strong"><strong>NOTE:</strong></span> Do NOT use
+      </p><p><span class="strong">NOTE:</span> Do NOT use
         ampersands in your hyperlinks. These are reserved for
         referencing <a href="http://www.docbook.org/tdg/en/html/ch01.html#s-entities" target="_top">entities</a>.
-        To create an ampersand, use the entity <code class="code">&amp;amp;</code>
+        To create an ampersand, use the entity <font color="red">&lt;code&gt;&amp;amp;&lt;/code&gt;</font>
 
-      </p></dd></dl></div></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="dbprimer-graphics"></a>Graphics</h3></div></div></div><p>
+      </p></dd></dl></div></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="dbprimer-graphics"></a>Graphics</h3></div></div><div></div></div><p>
       <span class="emphasis"><em>
-    <span class="strong"><strong>Note:</strong></span> The graphics guidelines
+    <span class="strong">Note:</span> The graphics guidelines
     are not written in stone. Use another valid approach if it works better
     for you.
       </em></span>
     </p><p>
-      <a class="indexterm" name="id1076360"></a>
+      <a class="indexterm" name="id3024195"></a>
       To insert a graphic we use the elements 
-      <a href="http://docbook.org/tdg/en/html/mediaobject.html" target="_top"><code class="computeroutput">&lt;mediaobject&gt;</code></a>,
-      <a href="http://docbook.org/tdg/en/html/imageobject.html" target="_top"><code class="computeroutput">&lt;imageobject&gt;</code></a>,
-      <a href="http://docbook.org/tdg/en/html/imagedata.html" target="_top"><code class="computeroutput">&lt;imagedata&gt;</code></a>,
+      <a href="http://docbook.org/tdg/en/html/mediaobject.html" target="_top"><tt class="computeroutput">&lt;mediaobject&gt;</tt></a>,
+      <a href="http://docbook.org/tdg/en/html/imageobject.html" target="_top"><tt class="computeroutput">&lt;imageobject&gt;</tt></a>,
+      <a href="http://docbook.org/tdg/en/html/imagedata.html" target="_top"><tt class="computeroutput">&lt;imagedata&gt;</tt></a>,
       and 
-      <a href="http://docbook.org/tdg/en/html/textobject.html" target="_top"><code class="computeroutput">&lt;textobject&gt;</code></a>.
+      <a href="http://docbook.org/tdg/en/html/textobject.html" target="_top"><tt class="computeroutput">&lt;textobject&gt;</tt></a>.
       Two versions of all graphics are required. One for the Web
       (usually a JPEG or GIF), and a brief text description.  The
       description becomes the ALT text. You can also supply a version for print (EPS).
     </p><pre class="programlisting">
 &lt;mediaobject&gt;
   &lt;imageobject&gt;
-    &lt;imagedata fileref="../images/rp-flow.gif" format="GIF" align="center"/&gt;
+    &lt;imagedata fileref=&quot;../images/rp-flow.gif&quot; format=&quot;GIF&quot; align=&quot;center&quot;/&gt;
   &lt;/imageobject&gt;
   &lt;imageobject&gt;
-    &lt;imagedata fileref="../images/rp-flow.eps" format="EPS" align="center"/&gt;
+    &lt;imagedata fileref=&quot;../images/rp-flow.eps&quot; format=&quot;EPS&quot; align=&quot;center&quot;/&gt;
   &lt;/imageobject&gt;
   &lt;textobject&gt;
     &lt;phrase&gt;This is an image of the flow in the Request Processor&lt;/phrase&gt;
   &lt;/textobject&gt;
 &lt;/mediaobject&gt;
 </pre><p>
-      Put your graphics in a separate directory ("images") and link to them 
+      Put your graphics in a separate directory (&quot;images&quot;) and link to them 
       only with relative paths.
-    </p></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="dbprimer-lists"></a>Lists</h3></div></div></div><p>
-      <a class="indexterm" name="id1076436"></a>
+    </p></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="dbprimer-lists"></a>Lists</h3></div></div><div></div></div><p>
+      <a class="indexterm" name="id3058462"></a>
       Here's how you make the DocBook equivalent of the three usual HTML-lists:
-    </p><div class="variablelist"><dl><dt><span class="term"><span class="strong"><strong>1. How to make an &lt;ul&gt;</strong></span></span></dt><dd><p>
-        Making an unordered list is pretty much like doing the same thing in HTML - if you close your <code class="computeroutput">&lt;li&gt;</code>, that is. The only differences are that each list item has to be wrapped in something more, such as
-        <code class="computeroutput">&lt;para&gt;</code>, and that the tags are called
-        <a href="http://docbook.org/tdg/en/html/itemizedlist.html" target="_top"><code class="computeroutput">&lt;itemizedlist&gt;</code></a>
+    </p><div class="variablelist"><dl><dt><span class="term"><span class="strong">1. How to make an &lt;ul&gt;</span></span></dt><dd><p>
+        Making an unordered list is pretty much like doing the same thing in HTML - if you close your <tt class="computeroutput">&lt;li&gt;</tt>, that is. The only differences are that each list item has to be wrapped in something more, such as
+        <tt class="computeroutput">&lt;para&gt;</tt>, and that the tags are called
+        <a href="http://docbook.org/tdg/en/html/itemizedlist.html" target="_top"><tt class="computeroutput">&lt;itemizedlist&gt;</tt></a>
         and
-        <a href="http://docbook.org/tdg/en/html/listitem.html" target="_top"><code class="computeroutput">&lt;listitem&gt;</code></a>:
+        <a href="http://docbook.org/tdg/en/html/listitem.html" target="_top"><tt class="computeroutput">&lt;listitem&gt;</tt></a>:
       </p><pre class="programlisting">
 &lt;itemizedlist&gt;
 
   &lt;listitem&gt;&lt;para&gt;Stuff goes here&lt;/para&gt;&lt;/listitem&gt;
   &lt;listitem&gt;&lt;para&gt;More stuff goes here&lt;/para&gt;&lt;/listitem&gt;
 
 &lt;/itemizedlist&gt;
-</pre></dd><dt><span class="term"><span class="strong"><strong>2. How to make an &lt;ol&gt;</strong></span></span></dt><dd><p>
+</pre></dd><dt><span class="term"><span class="strong">2. How to make an &lt;ol&gt;</span></span></dt><dd><p>
         The ordered list is like the preceding, except that you use 
-        <a href="http://docbook.org/tdg/en/html/orderedlist.html" target="_top"><code class="computeroutput">&lt;orderedlist&gt;</code></a> instead:</p><pre class="programlisting">
+        <a href="http://docbook.org/tdg/en/html/orderedlist.html" target="_top"><tt class="computeroutput">&lt;orderedlist&gt;</tt></a> instead:</p><pre class="programlisting">
 &lt;orderedlist&gt;
 
   &lt;listitem&gt;&lt;para&gt;Stuff goes here&lt;/para&gt;&lt;/listitem&gt;
   &lt;listitem&gt;&lt;para&gt;More stuff goes here&lt;/para&gt;&lt;/listitem&gt;
 
 &lt;/orderedlist&gt;
-</pre></dd><dt><span class="term"><span class="strong"><strong>3. How to make a &lt;dl&gt;</strong></span></span></dt><dd><p>
-        This kind of list is called a <code class="computeroutput">variablelist</code> and these are the tags you'll need to 
+</pre></dd><dt><span class="term"><span class="strong">3. How to make a &lt;dl&gt;</span></span></dt><dd><p>
+        This kind of list is called a <tt class="computeroutput">variablelist</tt> and these are the tags you'll need to 
         make it happen:
-        <a href="http://docbook.org/tdg/en/html/variablelist.html" target="_top"><code class="computeroutput">&lt;variablelist&gt;</code></a>,
-        <a href="http://docbook.org/tdg/en/html/varlistentry.html" target="_top"><code class="computeroutput">&lt;varlistentry&gt;</code></a>, 
-        <a href="http://docbook.org/tdg/en/html/term.html" target="_top"><code class="computeroutput">&lt;term&gt;</code></a> and
-        <a href="http://docbook.org/tdg/en/html/listitem.html" target="_top"><code class="computeroutput">&lt;listitem&gt;</code></a>:</p><pre class="programlisting">
+        <a href="http://docbook.org/tdg/en/html/variablelist.html" target="_top"><tt class="computeroutput">&lt;variablelist&gt;</tt></a>,
+        <a href="http://docbook.org/tdg/en/html/varlistentry.html" target="_top"><tt class="computeroutput">&lt;varlistentry&gt;</tt></a>, 
+        <a href="http://docbook.org/tdg/en/html/term.html" target="_top"><tt class="computeroutput">&lt;term&gt;</tt></a> and
+        <a href="http://docbook.org/tdg/en/html/listitem.html" target="_top"><tt class="computeroutput">&lt;listitem&gt;</tt></a>:</p><pre class="programlisting">
 &lt;variablelist&gt;
 
   &lt;varlistentry&gt;
@@ -888,14 +889,14 @@
   &lt;/varlistentry&gt;
 
 &lt;/variablelist&gt;
-</pre></dd></dl></div></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="dbprimer-tables"></a>Tables</h3></div></div></div><p>
-      <a class="indexterm" name="id1076613"></a>
+</pre></dd></dl></div></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="dbprimer-tables"></a>Tables</h3></div></div><div></div></div><p>
+      <a class="indexterm" name="id3058693"></a>
       DocBook supports several types of tables, but in most cases, the
-      <a href="http://docbook.org/tdg/en/html/informaltable.html" target="_top"><code class="computeroutput">&lt;informaltable&gt;</code></a>
+      <a href="http://docbook.org/tdg/en/html/informaltable.html" target="_top"><tt class="computeroutput">&lt;informaltable&gt;</tt></a>
       is enough:
     </p><pre class="programlisting">
-&lt;informaltable frame="all"&gt;
-  &lt;tgroup cols="3"&gt;
+&lt;informaltable frame=&quot;all&quot;&gt;
+  &lt;tgroup cols=&quot;3&quot;&gt;
     &lt;tbody&gt;
 
       &lt;row&gt;
@@ -923,25 +924,25 @@
       With our current XSL-style-sheet, the output of the markup above will be a simple HTML-table:
     </p><div class="informaltable"><table cellspacing="0" border="1"><colgroup><col><col><col></colgroup><tbody><tr><td>a1</td><td>b1</td><td>c1</td></tr><tr><td>a2</td><td>b2</td><td>c2</td></tr><tr><td>a3</td><td>b3</td><td>c3</td></tr></tbody></table></div><p>
       If you want cells to span more than one row or column, it gets a bit more complicated - check out
-      <a href="http://docbook.org/tdg/en/html/table.html" target="_top"><code class="computeroutput">&lt;table&gt;</code></a>
+      <a href="http://docbook.org/tdg/en/html/table.html" target="_top"><tt class="computeroutput">&lt;table&gt;</tt></a>
       for an example.
-    </p></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="dbprimer-emphasis"></a>Emphasis</h3></div></div></div><p>
-      <a class="indexterm" name="id1076726"></a>
+    </p></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="dbprimer-emphasis"></a>Emphasis</h3></div></div><div></div></div><p>
+      <a class="indexterm" name="id3058840"></a>
       Our documentation uses two flavors of emphasis - italics and bold type. DocBook uses one - 
-      <a href="http://docbook.org/tdg/en/html/emphasis.html" target="_top"><code class="computeroutput">&lt;emphasis&gt;</code></a>.
+      <a href="http://docbook.org/tdg/en/html/emphasis.html" target="_top"><tt class="computeroutput">&lt;emphasis&gt;</tt></a>.
     </p><p>
-      The <code class="computeroutput">&lt;emphasis&gt;</code> tag defaults to italics when parsed. If you're looking for 
-      emphasizing with bold type, use <code class="computeroutput">&lt;emphasis role="strong"&gt;</code>.
-    </p></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="dbprimer-indexing"></a>Indexing Your DocBook Documents</h3></div></div></div><p>
+      The <tt class="computeroutput">&lt;emphasis&gt;</tt> tag defaults to italics when parsed. If you're looking for 
+      emphasizing with bold type, use <tt class="computeroutput">&lt;emphasis role=&quot;strong&quot;&gt;</tt>.
+    </p></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="dbprimer-indexing"></a>Indexing Your DocBook Documents</h3></div></div><div></div></div><p>
       Words that are marked as index-words are referenced in an index
       in the final, parsed document.
     </p><p>
       Use
-      <a href="http://docbook.org/tdg/en/html/indexterm.html" target="_top"><code class="computeroutput">&lt;indexterm&gt;</code></a>,
-      <a href="http://docbook.org/tdg/en/html/primary.html" target="_top"><code class="computeroutput">&lt;primary&gt;</code></a> and
-      <a href="http://docbook.org/tdg/en/html/secondary.html" target="_top"><code class="computeroutput">&lt;secondary&gt;</code></a>
+      <a href="http://docbook.org/tdg/en/html/indexterm.html" target="_top"><tt class="computeroutput">&lt;indexterm&gt;</tt></a>,
+      <a href="http://docbook.org/tdg/en/html/primary.html" target="_top"><tt class="computeroutput">&lt;primary&gt;</tt></a> and
+      <a href="http://docbook.org/tdg/en/html/secondary.html" target="_top"><tt class="computeroutput">&lt;secondary&gt;</tt></a>
       for this. See these links for an explanation.
-    </p></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="dbprimer-converting"></a>Converting to HTML</h3></div></div></div><div class="note" style="margin-left: 0.5in; margin-right: 0.5in;"><h3 class="title">Note</h3><p>This section is quoted almost verbatim from the LDP Author Guide.</p></div><p>
+    </p></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="dbprimer-converting"></a>Converting to HTML</h3></div></div><div></div></div><div class="note" style="margin-left: 0.5in; margin-right: 0.5in;"><h3 class="title">Note</h3><p>This section is quoted almost verbatim from the LDP Author Guide.</p></div><p>
       Once you have the <a href="docbook-primer.html#dbprimer-validation">Docbook Tools</a>
       installed, you can convert your xml documents to HTML or other
       formats.
@@ -954,9 +955,9 @@
       To generate a single HTML file from your DocBook XML file,
       use the command:
     </p><pre class="screen">
-<code class="computeroutput">bash$ </code><strong class="userinput"><code>xsltproc -o outputfilename.xml /usr/share/sgml/docbook/stylesheet/xsl/nwalsh/html/html.xsl filename.xml</code></strong>
+<tt class="computeroutput">bash$ </tt><b class="userinput"><tt>xsltproc -o outputfilename.xml /usr/share/sgml/docbook/stylesheet/xsl/nwalsh/html/html.xsl filename.xml</tt></b>
 </pre><div class="note" style="margin-left: 0.5in; margin-right: 0.5in;"><h3 class="title">Note</h3><p>
-      This example uses Daniel Veillard's <span class="strong"><strong>xsltproc</strong></span> command available
+      This example uses Daniel Veillard's <span class="strong">xsltproc</span> command available
       as part of libxslt from <a href="http://www.xmlsoft.org/XSLT/" target="_top">http://www.xmlsoft.org/XSLT/</a>.
       If you are using other XML processors such as Xalan or Saxon,
       you will need to change the command line appropriately.
@@ -965,14 +966,14 @@
       for each &lt;chapter&gt;, &lt;sect1&gt; or &lt;appendix&gt; tag, use the
       following command: 
     </p><pre class="screen">
-<code class="computeroutput">bash$ </code><strong class="userinput"><code>xsltproc /usr/share/sgml/docbook/stylesheet/xsl/nwalsh/html/chunk.xsl filename.xml</code></strong>
+<tt class="computeroutput">bash$ </tt><b class="userinput"><tt>xsltproc /usr/share/sgml/docbook/stylesheet/xsl/nwalsh/html/chunk.xsl filename.xml</tt></b>
 </pre><p> 
     You could also look at the <a href="http://cvs.openacs.org/cvs/openacs-4/packages/acs-core-docs/www/xml/Makefile?view=markup" target="_top">acs-core-docs Makefile</a> 
     for examples of how these documents are generated.
-    </p></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="db-primer-further-reading"></a>Further Reading</h3></div></div></div><div class="itemizedlist"><ul type="disc"><li><p><a href="http://www.xml.com/lpt/a/2002/07/31/xinclude.html" target="_top">Using Xinclude</a></p></li><li><p>
+    </p></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="db-primer-further-reading"></a>Further Reading</h3></div></div><div></div></div><div class="itemizedlist"><ul type="disc"><li><p><a href="http://www.xml.com/lpt/a/2002/07/31/xinclude.html" target="_top">Using Xinclude</a></p></li><li><p>
     The <a href="http://en.tldp.org/LDP/LDP-Author-Guide/" target="_top">LDP Author
     Guide</a> has a lot of good information, a table of
-    docbook elements and their "look" in HTML and lots of good links
+    docbook elements and their &quot;look&quot; in HTML and lots of good links
     for tools.
     </p></li><li><p>
       James Clark 
@@ -996,7 +997,7 @@
     </p></li><li><p>
       In the process of transforming your HTML into XML, 
       <a href="http://tidy.sourceforge.net/" target="_top">HTML tidy</a>
-      can be a handy tool to make your HTML "regexp'able".
+      can be a handy tool to make your HTML &quot;regexp'able&quot;.
       Brandoch Calef has made a 
       <a href="http://web.archive.org/web/20010830084757/http://developer.arsdigita.com/working-papers/bcalef/html-to-docbook.html" target="_top">Perl
       script with directions</a> (now via archive.org)
Index: openacs-4/packages/acs-core-docs/www/eng-standards-constraint-naming.html
===================================================================
RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/eng-standards-constraint-naming.html,v
diff -u -r1.41 -r1.41.4.1
--- openacs-4/packages/acs-core-docs/www/eng-standards-constraint-naming.html	17 Jul 2006 05:38:31 -0000	1.41
+++ openacs-4/packages/acs-core-docs/www/eng-standards-constraint-naming.html	3 Feb 2008 12:07:38 -0000	1.41.4.1
@@ -1,7 +1,8 @@
-<html><head><meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"><title>Constraint naming standard</title><meta name="generator" content="DocBook XSL Stylesheets V1.70.1"><link rel="home" href="index.html" title="OpenACS Core Documentation"><link rel="up" href="eng-standards.html" title="Chapter�12.�Engineering Standards"><link rel="previous" href="eng-standards-versioning.html" title="Release Version Numbering"><link rel="next" href="eng-standards-filenaming.html" title="ACS File Naming and Formatting Standards"><link rel="stylesheet" href="openacs.css" type="text/css"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><a href="http://openacs.org"><img src="/doc/images/alex.jpg" border="0" alt="Alex logo"></a><table width="100%" summary="Navigation header" border="0"><tr><td width="20%" align="left"><a accesskey="p" href="eng-standards-versioning.html">Prev</a> </td><th width="60%" align="center">Chapter�12.�Engineering Standards</th><td width="20%" align="right"> <a accesskey="n" href="eng-standards-filenaming.html">Next</a></td></tr></table><hr></div><div class="sect1" lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="eng-standards-constraint-naming"></a>Constraint naming standard</h2></div></div></div><div class="authorblurb"><p>By Michael Bryzek</p>
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html><head><meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"><title>Constraint naming standard</title><meta name="generator" content="DocBook XSL Stylesheets V1.60.1"><link rel="home" href="index.html" title="OpenACS Core Documentation"><link rel="up" href="eng-standards.html" title="Chapter�12.�Engineering Standards"><link rel="previous" href="eng-standards-versioning.html" title="Release Version Numbering"><link rel="next" href="eng-standards-filenaming.html" title="ACS File Naming and Formatting Standards"><link rel="stylesheet" href="openacs.css" type="text/css"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><a href="http://openacs.org"><img src="/doc/images/alex.jpg" border="0" alt="Alex logo"></a><table width="100%" summary="Navigation header" border="0"><tr><td width="20%" align="left"><a accesskey="p" href="eng-standards-versioning.html">Prev</a> </td><th width="60%" align="center">Chapter�12.�Engineering Standards</th><td width="20%" align="right"> <a accesskey="n" href="eng-standards-filenaming.html">Next</a></td></tr></table><hr></div><div class="sect1" lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="eng-standards-constraint-naming"></a>Constraint naming standard</h2></div></div><div></div></div><div class="authorblurb"><p>By Michael Bryzek</p>
           OpenACS docs are written by the named authors, and may be edited
           by OpenACS documentation staff.
-        </div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="eng-standards-constraint-naming-big-picture"></a>The Big Picture</h3></div></div></div><p>
+        </div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="eng-standards-constraint-naming-big-picture"></a>The Big Picture</h3></div></div><div></div></div><p>
 Constraint naming standard is important for one reason: The SYS_* name oracle
 assigns to unnamed constraints is not very understandable. By correctly
 naming all contraints, we can quickly associate a particular constraint 
@@ -10,14 +11,14 @@
 </p><div>Why do we need a naming convention? </div><p>
 <a href="http://oradoc.photo.net/ora8doc/DOC/server803/A54647_01/ch2.htm#2956" target="_top">Oracle limits names</a>, 
 in general, to 30 characters, which is hardly enough for a human readable constraint name.
-</p></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="eng-standards-constraint-naming-abbr"></a>Abbreviations</h3></div></div></div><p>
+</p></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="eng-standards-constraint-naming-abbr"></a>Abbreviations</h3></div></div><div></div></div><p>
 We propose the following naming convention for all constraints, with
 the following abbreviations taken from Oracle Docs at 
 <a href="http://oradoc.photo.net/ora81/DOC/server.815/a67779/ch4e.htm#8953" target="_top">
 http://oradoc.photo.net/ora81/DOC/server.815/a67779/ch4e.htm#8953</a>. 
 Note that we shortened all of the constraint abbrevations to 
 two characters to save room.
-</p><div class="informaltable"><table cellspacing="0" border="1"><colgroup><col><col></colgroup><thead><tr><th>Constraint type</th><th>Abbreviation</th></tr></thead><tbody><tr><td>references (foreign key)</td><td>fk</td></tr><tr><td>unique</td><td>un</td></tr><tr><td>primary key</td><td>pk</td></tr><tr><td>check</td><td>ck</td></tr><tr><td>not null</td><td>nn</td></tr></tbody></table></div></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="eng-standards-constraint-naming-format"></a>Format of constraint name</h3></div></div></div><p>
+</p><div class="informaltable"><table cellspacing="0" border="1"><colgroup><col><col></colgroup><thead><tr><th>Constraint type</th><th>Abbreviation</th></tr></thead><tbody><tr><td>references (foreign key)</td><td>fk</td></tr><tr><td>unique</td><td>un</td></tr><tr><td>primary key</td><td>pk</td></tr><tr><td>check</td><td>ck</td></tr><tr><td>not null</td><td>nn</td></tr></tbody></table></div></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="eng-standards-constraint-naming-format"></a>Format of constraint name</h3></div></div><div></div></div><p>
 &lt;table name&gt;_&lt;column_name&gt;_&lt;constraint abbreviation&gt;
 </p><p>
 In reality, this won't be possible because of the character limitation on 
@@ -27,7 +28,7 @@
 </p></li><li><p> Truncate the column name until it fits.</p></li></ol></div><p>
 If the constraint name is still too long, you should consider rewriting your
 entire data model :)
-</p><p><span class="strong"><strong>Notes:</strong></span></p><div class="itemizedlist"><ul type="disc"><li><p> If you have to abbreviate the table name for one of the constraints, abbreviate it for all the constraints</p></li><li><p> If you are defining a multi column constraint, try to truncate the two column names evenly </p></li></ul></div></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="eng-standards-constraint-naming-example"></a>Example</h3></div></div></div><pre class="programlisting">
+</p><p><span class="strong">Notes:</span></p><div class="itemizedlist"><ul type="disc"><li><p> If you have to abbreviate the table name for one of the constraints, abbreviate it for all the constraints</p></li><li><p> If you are defining a multi column constraint, try to truncate the two column names evenly </p></li></ul></div></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="eng-standards-constraint-naming-example"></a>Example</h3></div></div><div></div></div><pre class="programlisting">
 create table example_topics (
        topic_id    integer
 		   constraint example_topics_topic_id_pk
@@ -51,7 +52,7 @@
        constraint cne_example_id_one_line_unq unique(example_id, one_line_description)
 );
 
-</pre></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="eng-standards-constraint-naming-pk"></a>Why it's good to name primary keys</h3></div></div></div><p>
+</pre></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="eng-standards-constraint-naming-pk"></a>Why it's good to name primary keys</h3></div></div><div></div></div><p>
 Naming primary keys might not have any obvious advantages. However, here's an 
 example where naming the primary key really helps (and this is by no means
 a rare case!
@@ -70,18 +71,18 @@
    3	1     INDEX (UNIQUE SCAN) OF 'EXAMPLE_TOPICS_TOPIC_ID_PK' (UNI
 	  QUE)
 </pre><p>
-Isn't it nice to see "EXAMPLE_TOPICS_TOPIC_ID_PK" in the trace
+Isn't it nice to see &quot;EXAMPLE_TOPICS_TOPIC_ID_PK&quot; in the trace
 and know exactly which table oracle is using at each step?
-</p></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="eng-standards-constraint-naming-nn"></a>Naming not null constraints is optional...</h3></div></div></div><p>
+</p></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="eng-standards-constraint-naming-nn"></a>Naming not null constraints is optional...</h3></div></div><div></div></div><p>
 People disagree on whether or not we should be naming not null
 constraints.  So, if you want to name them, please do so and follow
 the above naming standard. But, naming not null constraints is not a
 requirement.
 </p><p>
 </p><div>About Naming the not null constraints</div><p>
 </p><p>
-Though naming "not null" constraints doesn't help immeditately in error
+Though naming &quot;not null&quot; constraints doesn't help immeditately in error
 debugging (e.g. the error will say something like 
-"Cannot insert null value into column"), we recommend naming not null
+&quot;Cannot insert null value into column&quot;), we recommend naming not null
 constraints to be consistent in our naming of all constraints.
 </p><div class="cvstag">($Id$)</div></div></div><div class="navfooter"><hr><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="eng-standards-versioning.html">Prev</a> </td><td width="20%" align="center"><a accesskey="h" href="index.html">Home</a></td><td width="40%" align="right"> <a accesskey="n" href="eng-standards-filenaming.html">Next</a></td></tr><tr><td width="40%" align="left">Release Version Numbering </td><td width="20%" align="center"><a accesskey="u" href="eng-standards.html">Up</a></td><td width="40%" align="right"> ACS File Naming and Formatting Standards</td></tr></table><hr><address><a href="mailto:docs@openacs.org">docs@openacs.org</a></address></div><a name="comments"></a><center><a href="http://openacs.org/doc/current/eng-standards-constraint-naming.html#comments">View comments on this page at openacs.org</a></center></body></html>
Index: openacs-4/packages/acs-core-docs/www/eng-standards-filenaming.html
===================================================================
RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/eng-standards-filenaming.html,v
diff -u -r1.41 -r1.41.4.1
--- openacs-4/packages/acs-core-docs/www/eng-standards-filenaming.html	17 Jul 2006 05:38:31 -0000	1.41
+++ openacs-4/packages/acs-core-docs/www/eng-standards-filenaming.html	3 Feb 2008 12:07:38 -0000	1.41.4.1
@@ -1,82 +1,83 @@
-<html><head><meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"><title>ACS File Naming and Formatting Standards</title><meta name="generator" content="DocBook XSL Stylesheets V1.70.1"><link rel="home" href="index.html" title="OpenACS Core Documentation"><link rel="up" href="eng-standards.html" title="Chapter�12.�Engineering Standards"><link rel="previous" href="eng-standards-constraint-naming.html" title="Constraint naming standard"><link rel="next" href="eng-standards-plsql.html" title="PL/SQL Standards"><link rel="stylesheet" href="openacs.css" type="text/css"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><a href="http://openacs.org"><img src="/doc/images/alex.jpg" border="0" alt="Alex logo"></a><table width="100%" summary="Navigation header" border="0"><tr><td width="20%" align="left"><a accesskey="p" href="eng-standards-constraint-naming.html">Prev</a> </td><th width="60%" align="center">Chapter�12.�Engineering Standards</th><td width="20%" align="right"> <a accesskey="n" href="eng-standards-plsql.html">Next</a></td></tr></table><hr></div><div class="sect1" lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="eng-standards-filenaming"></a>ACS File Naming and Formatting Standards</h2></div></div></div><div class="authorblurb"><p>By Michael Yoon and Aurelius Prochazka</p>
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html><head><meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"><title>ACS File Naming and Formatting Standards</title><meta name="generator" content="DocBook XSL Stylesheets V1.60.1"><link rel="home" href="index.html" title="OpenACS Core Documentation"><link rel="up" href="eng-standards.html" title="Chapter�12.�Engineering Standards"><link rel="previous" href="eng-standards-constraint-naming.html" title="Constraint naming standard"><link rel="next" href="eng-standards-plsql.html" title="PL/SQL Standards"><link rel="stylesheet" href="openacs.css" type="text/css"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><a href="http://openacs.org"><img src="/doc/images/alex.jpg" border="0" alt="Alex logo"></a><table width="100%" summary="Navigation header" border="0"><tr><td width="20%" align="left"><a accesskey="p" href="eng-standards-constraint-naming.html">Prev</a> </td><th width="60%" align="center">Chapter�12.�Engineering Standards</th><td width="20%" align="right"> <a accesskey="n" href="eng-standards-plsql.html">Next</a></td></tr></table><hr></div><div class="sect1" lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="eng-standards-filenaming"></a>ACS File Naming and Formatting Standards</h2></div></div><div></div></div><div class="authorblurb"><p>By Michael Yoon and Aurelius Prochazka</p>
           OpenACS docs are written by the named authors, and may be edited
           by OpenACS documentation staff.
         </div><p>
 To ensure consistency (and its collateral benefit, maintainability),
 we define and adhere to standards in the following areas:
-</p><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="eng-standards-filenaming-nomenclature"></a>File Nomenclature</h3></div></div></div><p>
+</p><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="eng-standards-filenaming-nomenclature"></a>File Nomenclature</h3></div></div><div></div></div><p>
 Usually we organize our files so that they mainly serve one of the following three purposes:
 </p><div class="itemizedlist"><ul type="disc"><li><p> displaying objects and their properties</p></li><li><p> manipulating or acting on objects in some way (by creating, editing, linking, etc)</p></li><li><p> housing procedures, packages, data models and other prerequisite code
 Essentially, we want our files named in a fashion that reflects their purpose.</p></li></ul></div><p>
 
 Under the page root (and the template root if using the <a href="style" target="_top">Style package</a>):
 </p><div class="itemizedlist"><ul type="disc"><li><p>For naming files that enable a specific action on an object, use this format:</p><div class="blockquote"><blockquote class="blockquote"><p>
-<span class="emphasis"><em><code class="computeroutput">object-verb.extension</code></em></span>
+<span class="emphasis"><em><tt class="computeroutput">object-verb.extension</tt></em></span>
 </p></blockquote></div><p>
 For example, the page to erase a user's portrait from the database is
-<code class="computeroutput">/admin/users/portrait-erase.tcl</code>.
+<tt class="computeroutput">/admin/users/portrait-erase.tcl</tt>.
 </p></li><li><p>However, modules typically deal with only one primary type of object -
 e.g.,
 the Bookmarks module deals mainly with bookmarks - and so action-type files in modules don't need to be specified by the object they act on.  Example: the user pages
-for the Bookmarks module live in the <code class="computeroutput">/bookmarks/</code>
-directory, and so there is no need to name the bookmark editing page with a redundant url: <code class="computeroutput">/bookmarks/bookmark-edit.tcl</code>. Instead, we omit the object type, and use this convention:
+for the Bookmarks module live in the <tt class="computeroutput">/bookmarks/</tt>
+directory, and so there is no need to name the bookmark editing page with a redundant url: <tt class="computeroutput">/bookmarks/bookmark-edit.tcl</tt>. Instead, we omit the object type, and use this convention:
 </p><div class="blockquote"><blockquote class="blockquote"><p>
-<span class="emphasis"><em><code class="computeroutput">verb.extension</code></em></span>
+<span class="emphasis"><em><tt class="computeroutput">verb.extension</tt></em></span>
 </p></blockquote></div><p>
-Thus, the page to edit a bookmark is <code class="computeroutput">/bookmarks/edit.tcl</code>.
+Thus, the page to edit a bookmark is <tt class="computeroutput">/bookmarks/edit.tcl</tt>.
 </p></li><li><p>For naming files that display the properties of a primary object - such as the bookmark object within the bookmark module -  use this convention:</p><div class="blockquote"><blockquote class="blockquote"><p>
-<code class="computeroutput">one.</code><span class="emphasis"><em><code class="computeroutput">extension</code></em></span>
+<tt class="computeroutput">one.</tt><span class="emphasis"><em><tt class="computeroutput">extension</tt></em></span>
 </p></blockquote></div><p>
 For example, the page to view one bookmark is
-<code class="computeroutput">/bookmarks/one.tcl</code>.  Note that no verb is necessary for display-type files.
+<tt class="computeroutput">/bookmarks/one.tcl</tt>.  Note that no verb is necessary for display-type files.
 </p></li><li><p>Otherwise, if the object to be displayed is not the primary feature of a module,  simply omit the verb and use the object name:</p><div class="blockquote"><blockquote class="blockquote"><p>
-<span class="emphasis"><em><code class="computeroutput">object.extension</code></em></span>
+<span class="emphasis"><em><tt class="computeroutput">object.extension</tt></em></span>
 </p></blockquote></div><p>
 For example, the page to view the properties of an
 ecommerce product is
-<code class="computeroutput">/ecommerce/product.tcl</code>.
-</p></li><li><p>For naming files in a page flow, use the convention:</p><div class="itemizedlist"><ul type="circle"><li><p><span class="emphasis"><em><code class="computeroutput">foobar.extension</code></em></span> (Step 1)</p></li><li><p><span class="emphasis"><em><code class="computeroutput">foobar-2.extension</code></em></span> (Step 2)</p></li><li><p>...</p></li><li><p><span class="emphasis"><em><code class="computeroutput">foobar-N.extension</code></em></span> (Step N)</p></li></ul></div><p>
-where <span class="emphasis"><em><code class="computeroutput">foobar</code></em></span> is determined by the above
+<tt class="computeroutput">/ecommerce/product.tcl</tt>.
+</p></li><li><p>For naming files in a page flow, use the convention:</p><div class="itemizedlist"><ul type="circle"><li><p><span class="emphasis"><em><tt class="computeroutput">foobar.extension</tt></em></span> (Step 1)</p></li><li><p><span class="emphasis"><em><tt class="computeroutput">foobar-2.extension</tt></em></span> (Step 2)</p></li><li><p>...</p></li><li><p><span class="emphasis"><em><tt class="computeroutput">foobar-N.extension</tt></em></span> (Step N)</p></li></ul></div><p>
+where <span class="emphasis"><em><tt class="computeroutput">foobar</tt></em></span> is determined by the above
 rules.
 </p><p>
 Typically, we use a three-step page flow when taking user information:
-</p><div class="orderedlist"><ol type="1"><li><p>Present a form to the user</p></li><li><p>Present a confirmation page to the user</p></li><li><p>Perform the database transaction, then redirect</p></li></ol></div></li><li><p>Put data model files in <code class="computeroutput">/www/doc/sql</code>, and name them
+</p><div class="orderedlist"><ol type="1"><li><p>Present a form to the user</p></li><li><p>Present a confirmation page to the user</p></li><li><p>Perform the database transaction, then redirect</p></li></ol></div></li><li><p>Put data model files in <tt class="computeroutput">/www/doc/sql</tt>, and name them
 for the modules towards which they are used:
 </p><div class="blockquote"><blockquote class="blockquote"><p>
-<span class="emphasis"><em><code class="computeroutput">module</code></em></span><code class="computeroutput">.sql</code>
+<span class="emphasis"><em><tt class="computeroutput">module</tt></em></span><tt class="computeroutput">.sql</tt>
 </p></blockquote></div></li></ul></div><p>
 In the Tcl library directory:
 </p><div class="itemizedlist"><ul type="disc"><li><p>For files that contain module-specific procedures, use the
 convention:</p><div class="blockquote"><blockquote class="blockquote"><p>
-<span class="emphasis"><em><code class="computeroutput">module</code></em></span><code class="computeroutput">-procs.tcl</code>
+<span class="emphasis"><em><tt class="computeroutput">module</tt></em></span><tt class="computeroutput">-procs.tcl</tt>
 </p></blockquote></div></li><li><p>For files that contain procedures that are part of the core ACS,
 use the convention:</p><div class="blockquote"><blockquote class="blockquote"><p>
-<code class="computeroutput">ad-</code><span class="emphasis"><em>description</em></span><code class="computeroutput">-procs.tcl</code>
-</p></blockquote></div></li></ul></div></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="eng-standards-filenaming-urls"></a>URLs</h3></div></div></div><p>
+<tt class="computeroutput">ad-</tt><span class="emphasis"><em>description</em></span><tt class="computeroutput">-procs.tcl</tt>
+</p></blockquote></div></li></ul></div></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="eng-standards-filenaming-urls"></a>URLs</h3></div></div><div></div></div><p>
 File names also appear <span class="emphasis"><em>within</em></span> pages, as linked URLs and
 form targets. When they do, always use <a href="abstract-url" target="_top">abstract
-URLs</a> (e.g., <code class="computeroutput">user-delete</code> instead of
-<code class="computeroutput">user-delete.tcl</code>), because they enhance maintainability.
+URLs</a> (e.g., <tt class="computeroutput">user-delete</tt> instead of
+<tt class="computeroutput">user-delete.tcl</tt>), because they enhance maintainability.
 </p><p>
 Similarly, when linking to the index page of a directory, do not
-explicitly name the index file (<code class="computeroutput">index.tcl</code>,
-<code class="computeroutput">index.adp</code>, <code class="computeroutput">index.html</code>, etc.). Instead, use
+explicitly name the index file (<tt class="computeroutput">index.tcl</tt>,
+<tt class="computeroutput">index.adp</tt>, <tt class="computeroutput">index.html</tt>, etc.). Instead, use
 just the directory name, for both relative links
-(<code class="computeroutput">subdir/</code>) and absolute links
-(<code class="computeroutput">/top-level-dir/</code>). If linking to the directory in which
-the page is located, use the empty string (<code class="computeroutput">""</code>), which
+(<tt class="computeroutput">subdir/</tt>) and absolute links
+(<tt class="computeroutput">/top-level-dir/</tt>). If linking to the directory in which
+the page is located, use the empty string (<tt class="computeroutput">&quot;&quot;</tt>), which
 browsers will resolve correctly.
-</p></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="eng-standards-filenaming-headers"></a>File Headers and Page Input</h3></div></div></div><p>
+</p></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="eng-standards-filenaming-headers"></a>File Headers and Page Input</h3></div></div><div></div></div><p>
 Include the appropriate standard header in all scripts.  The first
 line should be a comment specifying the file path relative to the
 ACS root directory.  e.g.
-</p><div class="blockquote"><blockquote class="blockquote"><p><code class="computeroutput">
+</p><div class="blockquote"><blockquote class="blockquote"><p><tt class="computeroutput">
 # /www/index.tcl
-</code></p></blockquote></div><p>
+</tt></p></blockquote></div><p>
 or
-</p><div class="blockquote"><blockquote class="blockquote"><p><code class="computeroutput">
+</p><div class="blockquote"><blockquote class="blockquote"><p><tt class="computeroutput">
 # /tcl/module-defs.tcl
-</code></p></blockquote></div><p>
+</tt></p></blockquote></div><p>
 For static content files (html or adp), include a CVS identification tag as a
 comment at the top of the file, e.g.  
 </p><pre class="programlisting">
@@ -94,7 +95,7 @@
 This can be at the top or bottom of the file.
 </p><div>Using ad_page_contract</div><p>
 For non-library Tcl files (those not in the private Tcl directory),
-use <a href="tcl-doc.html#tcl-doc-ad-page-contract" title="ad_page_contract"><code class="computeroutput">ad_page_contract</code></a>
+use <a href="tcl-doc.html#tcl-doc-ad-page-contract" title="ad_page_contract"><tt class="computeroutput">ad_page_contract</tt></a>
 after the file path comment (this supersedes set_the_usual_form_variables and
 ad_return_complaint).  Here is an example of using
 ad_page_contract, which serves both documentation and page input
@@ -118,32 +119,32 @@
     {persistent_cookie_p f}
 }
 </pre><p>
-Salient features of <code class="computeroutput">ad_page_contract</code>:
+Salient features of <tt class="computeroutput">ad_page_contract</tt>:
 </p><div class="itemizedlist"><ul type="disc"><li><p>A mandatory documentation string is the first argument. This has
 the standard form with javadoc-style @author, @cvs-id, etc, and should contain a short description of the recieved variables and any necessary explanations. </p></li><li><p>The second argument specifies the page
 inputs. The syntax for switches/flags (e.g. multiple-list, array,
 etc.) uses a colon (:) followed by any number of flags
 separated by commas (,),
-e.g. <code class="computeroutput">foo:integer,multiple,trim</code>. In particular, <code class="computeroutput">multiple</code> and
-<code class="computeroutput">array</code> are the flags that correspond to the old
-<code class="computeroutput">ad_page_variables</code> flags.</p></li><li><p>There are new flags: <code class="computeroutput">trim</code>, <code class="computeroutput">notnull</code> and
-<code class="computeroutput">optional</code>. They do what you'd expect; values will not be
+e.g. <tt class="computeroutput">foo:integer,multiple,trim</tt>. In particular, <tt class="computeroutput">multiple</tt> and
+<tt class="computeroutput">array</tt> are the flags that correspond to the old
+<tt class="computeroutput">ad_page_variables</tt> flags.</p></li><li><p>There are new flags: <tt class="computeroutput">trim</tt>, <tt class="computeroutput">notnull</tt> and
+<tt class="computeroutput">optional</tt>. They do what you'd expect; values will not be
 trimmed, unless you mark them for it; empty strings are valid input, unless
 you specify notnull; and a specified variable will be considered required,
-unless you declare it optional.</p></li><li><p><code class="computeroutput">ad_page_contract</code> can do validation for you: the flags <code class="computeroutput">integer</code>
-and <code class="computeroutput">sql_identifier</code> will make sure that the values
-supplied are integers/sql_identifiers. The <code class="computeroutput">integer</code> flag
+unless you declare it optional.</p></li><li><p><tt class="computeroutput">ad_page_contract</tt> can do validation for you: the flags <tt class="computeroutput">integer</tt>
+and <tt class="computeroutput">sql_identifier</tt> will make sure that the values
+supplied are integers/sql_identifiers. The <tt class="computeroutput">integer</tt> flag
 will also trim leading zeros. Note that unless you specify
-<code class="computeroutput">notnull</code>, both will accept the empty string.
-</p></li><li><p>Note that <code class="computeroutput">ad_page_contract</code> does not generate
+<tt class="computeroutput">notnull</tt>, both will accept the empty string.
+</p></li><li><p>Note that <tt class="computeroutput">ad_page_contract</tt> does not generate
 QQvariables, which were automatically created by ad_page_variables and
 set_the_usual_form_variables. The use of bind variables makes such
 previous variable syntax obsolete.
 </p></li></ul></div><div>Using ad_library</div><p>
-For shared Tcl library files, use <a href="tcl-doc.html#tcl-doc-ad-library" title="ad_library"><code class="computeroutput">ad_library</code></a> after
+For shared Tcl library files, use <a href="tcl-doc.html#tcl-doc-ad-library" title="ad_library"><tt class="computeroutput">ad_library</tt></a> after
 the file path comment. Its only argument is a doc_string in the
 standard (javadoc-style) format, like
-<code class="computeroutput">ad_page_contract</code>. Don't forget to put the @cvs-id in
+<tt class="computeroutput">ad_page_contract</tt>. Don't forget to put the @cvs-id in
 there.  Here is an example of using ad_library:
 </p><pre class="programlisting">
 # tcl/wp-defs.tcl
@@ -166,54 +167,54 @@
 --
 -- <a href="http://www.loria.fr/~molli/cvs/doc/cvs_12.html#SEC93" target="_top">$Id$</a>
 </pre><p>
-Of course, replace "<code class="computeroutput">--</code>" with the comment delimiter
+Of course, replace &quot;<tt class="computeroutput">--</tt>&quot; with the comment delimiter
 appropriate for the language in which you are programming.
-</p></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="eng-standards-filenaming-pages"></a>Page Construction</h3></div></div></div><p>
+</p></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="eng-standards-filenaming-pages"></a>Page Construction</h3></div></div><div></div></div><p>
 Construct the page as one Tcl variable (name it
-<code class="computeroutput">page_content</code>), and then send it back to the browser with
-one call to <code class="computeroutput">doc_return</code>, which will call
+<tt class="computeroutput">page_content</tt>), and then send it back to the browser with
+one call to <tt class="computeroutput">doc_return</tt>, which will call
 db_release_unused_handles prior to executing ns_return, effectively
 combining the two operations.
 </p><p>
 For example:
 </p><pre class="programlisting">
-set page_content "[ad_header "<span class="emphasis"><em>Page Title</em></span>"]
+set page_content &quot;[ad_header &quot;<span class="emphasis"><em>Page Title</em></span>&quot;]
 
 &lt;h2&gt;<span class="emphasis"><em>Page Title</em></span>&lt;/h2&gt;
 
 &lt;hr&gt;
 
 &lt;ul&gt;
-"
+&quot;
 
 db_foreach get_row_info {
     select row_information 
     from bar
 } {
-    append page_content "&lt;li&gt;<span class="emphasis"><em>row_information</em></span>\n"
+    append page_content &quot;&lt;li&gt;<span class="emphasis"><em>row_information</em></span>\n&quot;
 }
 
-append page_content "&lt;/ul&gt;
+append page_content &quot;&lt;/ul&gt;
 
-[ad_footer]"
+[ad_footer]&quot;
 
 doc_return 200 text/html $page_content
 </pre><p>
-The old convention was to call <code class="computeroutput">ReturnHeaders</code> and
-then <code class="computeroutput">ns_write</code> for each distinct chunk of the page. This
+The old convention was to call <tt class="computeroutput">ReturnHeaders</tt> and
+then <tt class="computeroutput">ns_write</tt> for each distinct chunk of the page. This
 approach has the disadvantage of tying up a scarce and valuable
 resource (namely, a database handle) for an unpredictable amount of
 time while sending packets back to the browser, and so it should be
 avoided in most cases. (On the other hand, for a page that requires an
 expensive database query, it's better to call
 
-<code class="computeroutput">ad_return_top_of_page</code>
+<tt class="computeroutput">ad_return_top_of_page</tt>
 
 first, so that the user is not left to stare at an empty page while
 the query is running.)
 </p><p>
 Local procedures (i.e., procedures defined and used only within one
-page) should be prefixed with "<span class="emphasis"><em><code class="computeroutput">module_</code></em></span>" and
+page) should be prefixed with &quot;<span class="emphasis"><em><tt class="computeroutput">module_</tt></em></span>&quot; and
 should be used rarely, only when they are exceedingly useful.
 </p><p>
 All files that prepare HTML to display should end with [ad_footer] or
@@ -224,7 +225,7 @@
 edit ad_header (which quite possibly can start a &lt;table&gt;) and
 ad_footer (which may need to end the table started in ad_footer) to
 customize the look and feel of the entire site.
-</p></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="eng-standards-filenaming-tcllib"></a>Tcl Library Files</h3></div></div></div><p>
+</p></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="eng-standards-filenaming-tcllib"></a>Tcl Library Files</h3></div></div><div></div></div><p>
 Further standards for Tcl library files are under discussion; we plan to 
 include naming conventions for procs.
 </p><div class="cvstag">($Id$)</div></div></div><div class="navfooter"><hr><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="eng-standards-constraint-naming.html">Prev</a> </td><td width="20%" align="center"><a accesskey="h" href="index.html">Home</a></td><td width="40%" align="right"> <a accesskey="n" href="eng-standards-plsql.html">Next</a></td></tr><tr><td width="40%" align="left">Constraint naming standard </td><td width="20%" align="center"><a accesskey="u" href="eng-standards.html">Up</a></td><td width="40%" align="right"> PL/SQL Standards</td></tr></table><hr><address><a href="mailto:docs@openacs.org">docs@openacs.org</a></address></div><a name="comments"></a><center><a href="http://openacs.org/doc/current/eng-standards-filenaming.html#comments">View comments on this page at openacs.org</a></center></body></html>
Index: openacs-4/packages/acs-core-docs/www/eng-standards-plsql.html
===================================================================
RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/eng-standards-plsql.html,v
diff -u -r1.42 -r1.42.4.1
--- openacs-4/packages/acs-core-docs/www/eng-standards-plsql.html	17 Jul 2006 05:38:31 -0000	1.42
+++ openacs-4/packages/acs-core-docs/www/eng-standards-plsql.html	3 Feb 2008 12:07:38 -0000	1.42.4.1
@@ -1,4 +1,5 @@
-<html><head><meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"><title>PL/SQL Standards</title><meta name="generator" content="DocBook XSL Stylesheets V1.70.1"><link rel="home" href="index.html" title="OpenACS Core Documentation"><link rel="up" href="eng-standards.html" title="Chapter�12.�Engineering Standards"><link rel="previous" href="eng-standards-filenaming.html" title="ACS File Naming and Formatting Standards"><link rel="next" href="variables.html" title="Variables"><link rel="stylesheet" href="openacs.css" type="text/css"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><a href="http://openacs.org"><img src="/doc/images/alex.jpg" border="0" alt="Alex logo"></a><table width="100%" summary="Navigation header" border="0"><tr><td width="20%" align="left"><a accesskey="p" href="eng-standards-filenaming.html">Prev</a> </td><th width="60%" align="center">Chapter�12.�Engineering Standards</th><td width="20%" align="right"> <a accesskey="n" href="variables.html">Next</a></td></tr></table><hr></div><div class="sect1" lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="eng-standards-plsql"></a>PL/SQL Standards</h2></div></div></div><div class="authorblurb"><p>
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html><head><meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"><title>PL/SQL Standards</title><meta name="generator" content="DocBook XSL Stylesheets V1.60.1"><link rel="home" href="index.html" title="OpenACS Core Documentation"><link rel="up" href="eng-standards.html" title="Chapter�12.�Engineering Standards"><link rel="previous" href="eng-standards-filenaming.html" title="ACS File Naming and Formatting Standards"><link rel="next" href="variables.html" title="Variables"><link rel="stylesheet" href="openacs.css" type="text/css"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><a href="http://openacs.org"><img src="/doc/images/alex.jpg" border="0" alt="Alex logo"></a><table width="100%" summary="Navigation header" border="0"><tr><td width="20%" align="left"><a accesskey="p" href="eng-standards-filenaming.html">Prev</a> </td><th width="60%" align="center">Chapter�12.�Engineering Standards</th><td width="20%" align="right"> <a accesskey="n" href="variables.html">Next</a></td></tr></table><hr></div><div class="sect1" lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="eng-standards-plsql"></a>PL/SQL Standards</h2></div></div><div></div></div><div class="authorblurb"><p>
 By Richard Li and Yon Feldman
 </p>
           OpenACS docs are written by the named authors, and may be edited
@@ -10,19 +11,19 @@
   our product will be useful long after the current people building and
   maintaining it are around. Following are some standards and guidelines
   that will help us achieve this goal:
-</p><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="eng-standards-plsql-general"></a>General</h3></div></div></div><div class="orderedlist"><ol type="1"><li><p>
+</p><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="eng-standards-plsql-general"></a>General</h3></div></div><div></div></div><div class="orderedlist"><ol type="1"><li><p>
     All PL/SQL code must be well documented. We must write code that
     is maintainable by others, this is especially true in our case
     because we are building an open source toolkit than anyone can
     download and browse the source code. So document like you are
-    trying to impress your "Introduction to Programming" professor or
+    trying to impress your &quot;Introduction to Programming&quot; professor or
     TA.
    </p></li><li><p>
     It is important to be consistent throughout an application as much
     as is possible given the nature of team development. This means
     carrying style and other conventions suchs as naming within an
     application, not just within one file.
-   </p></li></ol></div></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="eng-standards-plsql-code"></a>Code</h3></div></div></div><div class="orderedlist"><ol type="1"><li><p>
+   </p></li></ol></div></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="eng-standards-plsql-code"></a>Code</h3></div></div><div></div></div><div class="orderedlist"><ol type="1"><li><p>
     Encapsulation of related fuctionality is key to maintainability
     and upgradeability of our software. Try to bundle your code into
     <a href="http://oradoc.photo.net/ora816/appdev.816/a77069/08_packs.htm#4376" target="_top">packages</a>
@@ -53,16 +54,16 @@
         show errors
      
 </pre></li><li><p>
-    Always use <code class="computeroutput">create or replace procedure|function
-    &lt;proc_or_func_name&gt;</code>. It makes reloading packages much
+    Always use <tt class="computeroutput">create or replace procedure|function
+    &lt;proc_or_func_name&gt;</tt>. It makes reloading packages much
     easier and painless to someone who is upgrading or fixing a bug.
    </p></li><li><p>
-    Always qualify <code class="computeroutput">end</code> statements, i.e., the
-    <code class="computeroutput">end</code> statement for a package should be <code class="computeroutput">end
-    &lt;package_name&gt;;</code>, not just <code class="computeroutput">end;</code>; same
+    Always qualify <tt class="computeroutput">end</tt> statements, i.e., the
+    <tt class="computeroutput">end</tt> statement for a package should be <tt class="computeroutput">end
+    &lt;package_name&gt;;</tt>, not just <tt class="computeroutput">end;</tt>; same
     goes for procedures, functions, package bodies, and triggers.
    </p></li><li><p>
-    Always use the "show errors" SQL*Plus command after each PL/SQL
+    Always use the &quot;show errors&quot; SQL*Plus command after each PL/SQL
     block. It will help you debug when there are compilation errors in
     your PL/SQL code.
    </p></li><li><p>
@@ -71,13 +72,13 @@
     the v_* and *_in syntax in favor of named parameters notation:
     </p><pre class="programlisting">
 
-      <code class="computeroutput">
+      <tt class="computeroutput">
         acs_user.create(first_names =&gt; 'Jane', last_name =&gt; 'Doe', etc.)
-      </code>
+      </tt>
         instead of
-      <code class="computeroutput">
+      <tt class="computeroutput">
         acs_user.create(first_names_in =&gt; 'Jane', last_name_in =&gt; 'Doe', etc.)
-      </code>
+      </tt>
      
 </pre><p>
     To achieve this we must fully qualify arguements passed into
@@ -107,22 +108,22 @@
         show errors
      
 </pre></li><li><p>
-    Explicitly designate each parameter as "in," "out," or "inout."
+    Explicitly designate each parameter as &quot;in,&quot; &quot;out,&quot; or &quot;inout.&quot;
    </p></li><li><p>
     Each parameter should be on its own line, with a tab after the
     parameter name, then in/out/inout, then a space, and finally the
     datatype.
    </p></li><li><p>
     Use %TYPE and %ROWTYPE whenever possible.
    </p></li><li><p>
-    Use 't' and 'f' for booleans, not the PL/SQL "boolean" datatype
+    Use 't' and 'f' for booleans, not the PL/SQL &quot;boolean&quot; datatype
     because it can't be used in SQL queries.
    </p></li><li><p>
-    All <code class="computeroutput">new</code> functions (e.g., <code class="computeroutput">acs_object.new,
-    party.new,</code> etc.) should optionally accept an ID:
+    All <tt class="computeroutput">new</tt> functions (e.g., <tt class="computeroutput">acs_object.new,
+    party.new,</tt> etc.) should optionally accept an ID:
     </p><pre class="programlisting">
 
-      <code class="computeroutput">
+      <tt class="computeroutput">
         create or replace package acs_object
         as
             function new (
@@ -133,15 +134,15 @@
                 creation_ip     in acs_objects.creation_ip%TYPE default null,
                 context_id      in acs_objects.context_id%TYPE default null
            ) return acs_objects.object_id%TYPE;
-     </code>
+     </tt>
     
 </pre><p>
-   takes the optional argument <code class="computeroutput">object_id</code>. Do this to
+   takes the optional argument <tt class="computeroutput">object_id</tt>. Do this to
    allow people to use the same API call when they are doing double
    click protection, that is, tehy have already gotten an
-   <code class="computeroutput">object_id</code> and now they want to create the object with
-   that <code class="computeroutput">object_id</code>.
-   </p></li></ol></div></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="eng-standards-style"></a>Style</h3></div></div></div><p>
+   <tt class="computeroutput">object_id</tt> and now they want to create the object with
+   that <tt class="computeroutput">object_id</tt>.
+   </p></li></ol></div></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="eng-standards-style"></a>Style</h3></div></div><div></div></div><p>
   Some general style guidelines to follow for the purpose of
   consistency across applications.
 </p><div class="orderedlist"><ol type="1"><li><p>
Index: openacs-4/packages/acs-core-docs/www/eng-standards-versioning.html
===================================================================
RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/eng-standards-versioning.html,v
diff -u -r1.44 -r1.44.4.1
--- openacs-4/packages/acs-core-docs/www/eng-standards-versioning.html	17 Jul 2006 05:38:31 -0000	1.44
+++ openacs-4/packages/acs-core-docs/www/eng-standards-versioning.html	3 Feb 2008 12:07:38 -0000	1.44.4.1
@@ -1,13 +1,14 @@
-<html><head><meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"><title>Release Version Numbering</title><meta name="generator" content="DocBook XSL Stylesheets V1.70.1"><link rel="home" href="index.html" title="OpenACS Core Documentation"><link rel="up" href="eng-standards.html" title="Chapter�12.�Engineering Standards"><link rel="previous" href="cvs-guidelines.html" title="
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html><head><meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"><title>Release Version Numbering</title><meta name="generator" content="DocBook XSL Stylesheets V1.60.1"><link rel="home" href="index.html" title="OpenACS Core Documentation"><link rel="up" href="eng-standards.html" title="Chapter�12.�Engineering Standards"><link rel="previous" href="cvs-guidelines.html" title="
     CVS Guidelines
-  "><link rel="next" href="eng-standards-constraint-naming.html" title="Constraint naming standard"><link rel="stylesheet" href="openacs.css" type="text/css"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><a href="http://openacs.org"><img src="/doc/images/alex.jpg" border="0" alt="Alex logo"></a><table width="100%" summary="Navigation header" border="0"><tr><td width="20%" align="left"><a accesskey="p" href="cvs-guidelines.html">Prev</a> </td><th width="60%" align="center">Chapter�12.�Engineering Standards</th><td width="20%" align="right"> <a accesskey="n" href="eng-standards-constraint-naming.html">Next</a></td></tr></table><hr></div><div class="sect1" lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="eng-standards-versioning"></a>Release Version Numbering</h2></div></div></div><div class="authorblurb"><div class="cvstag">($Id$)</div><p>By Ron Henderson, Revised by Joel Aufrecht</p>
+  "><link rel="next" href="eng-standards-constraint-naming.html" title="Constraint naming standard"><link rel="stylesheet" href="openacs.css" type="text/css"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><a href="http://openacs.org"><img src="/doc/images/alex.jpg" border="0" alt="Alex logo"></a><table width="100%" summary="Navigation header" border="0"><tr><td width="20%" align="left"><a accesskey="p" href="cvs-guidelines.html">Prev</a> </td><th width="60%" align="center">Chapter�12.�Engineering Standards</th><td width="20%" align="right"> <a accesskey="n" href="eng-standards-constraint-naming.html">Next</a></td></tr></table><hr></div><div class="sect1" lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="eng-standards-versioning"></a>Release Version Numbering</h2></div></div><div></div></div><div class="authorblurb"><div class="cvstag">($Id$)</div><p>By Ron Henderson, Revised by Joel Aufrecht</p>
           OpenACS docs are written by the named authors, and may be edited
           by OpenACS documentation staff.
         </div><p>
 
 OpenACS version numbers help identify at a high-level what is in a
 particular release and what has changed since the last release. 
-</p><p>A "version number" is really just a string of the form:
+</p><p>A &quot;version number&quot; is really just a string of the form:
 </p><div class="blockquote"><blockquote class="blockquote"><p><span class="emphasis"><em>major</em></span>.<span class="emphasis"><em>minor</em></span>.<span class="emphasis"><em>dot</em></span>[ <span class="emphasis"><em>milestone</em></span> ]</p></blockquote></div><div class="itemizedlist"><ul type="disc"><li><p>A <span class="emphasis"><em>major</em></span> number change indicates a fundamental change in the architecture of the system, e.g. OpenACS 3 to ACS 4.  A major change is required if core backwards compatibility is broken, if upgrade is non-trivial, or if the platform changes substantially.</p></li><li><p>A <span class="emphasis"><em>minor</em></span> change represents the addition of new functionality or changed UI.</p></li><li><p>A <span class="emphasis"><em>dot</em></span> holds only bug fixes and security patches.  Dot releases are always recommended and safe.
       </p></li><li><p>A <span class="emphasis"><em>milestone</em></span> marker indicates the state of the release:</p><div class="itemizedlist"><ul type="circle"><li><p><span class="emphasis"><em>d</em></span>, for development, means the release is in active development and is not in its intended released form.</p></li><li><p><span class="emphasis"><em>a</em></span>, for alpha, means new development is complete and code checkins are frozen.  Alpha builds should work well enough to be testable.</p></li><li><p><span class="emphasis"><em>b</em></span>, for beta, means most severe bugs are fixed and end users can start trying the release.</p></li><li><p>Release Candidate builds (<span class="emphasis"><em>rc</em></span>) are believed to meet all of the criteria for release and can be installed on test instances of production systems.</p></li><li><p>Final releases have no milestone marker.  (Exception: In CVS, they are tagged with -final to differentiate them from branch tags.)
             </p></li></ul></div><p>Milestone markers are numbered: d1, d2, ..., a1, b1, rc1, etc.</p></li></ul></div><p>A complete sequence of milestones between two releases: </p><pre class="programlisting">5.0.0
@@ -23,7 +24,7 @@
 Version numbers are also recorded in the CVS repository so that the
 code tree can be restored to the exact state it was in for a
 particular release.  To translate between a distribution tar file
-(acs-3.2.2.tar.gz) and a CVS tag, just swap '.' for '-'.The entire release history of the toolkit is recorded in the tags for the top-level <code class="computeroutput">readme.txt</code> file:
+(acs-3.2.2.tar.gz) and a CVS tag, just swap '.' for '-'.The entire release history of the toolkit is recorded in the tags for the top-level <tt class="computeroutput">readme.txt</tt> file:
 </p><pre class="programlisting">
 &gt; cvs log readme.txt
 RCS file: /usr/local/cvsroot/acs/readme.txt,v
@@ -59,10 +60,10 @@
 </pre><p>
 In the future, OpenACS packages should follow this same
 convention on version numbers.
-</p><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="eng-standards-transition-rules"></a>Transition Rules</h3></div></div></div><p>So what distinguishes an <span class="emphasis"><em>alpha</em></span> release from a <span class="emphasis"><em>beta</em></span>
+</p><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="eng-standards-transition-rules"></a>Transition Rules</h3></div></div><div></div></div><p>So what distinguishes an <span class="emphasis"><em>alpha</em></span> release from a <span class="emphasis"><em>beta</em></span>
 release?  Or from a production release?  We follow a specific set of
 rules for how OpenACS makes the transition from one state of maturity to
-the next.  These rules are fine-tuned with each release; an example is <a href="http://openacs.org/projects/openacs/5.0/milestones" target="_top">5.0.0 Milestones and Milestone Criteria</a></p></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="eng-standards-package-maturity"></a>Package Maturity</h3></div></div></div><p>
+the next.  These rules are fine-tuned with each release; an example is <a href="http://openacs.org/projects/openacs/5.0/milestones" target="_top">5.0.0 Milestones and Milestone Criteria</a></p></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="eng-standards-package-maturity"></a>Package Maturity</h3></div></div><div></div></div><p>
       Each package has a maturity level. Maturity level is recorded in the .info file for each major-minor release of OpenACS,
       and is set to the appropriate value for that release of the package.
     </p><pre class="programlisting">
@@ -73,23 +74,23 @@
         &lt;callbacks&gt;
             ...
     </pre><div class="itemizedlist"><ul type="disc"><li><p>
-        <span class="strong"><strong>Level -1: Incompatible.</strong></span> This package is not supported for this platform and should not be expected to work.
+        <span class="strong">Level -1: Incompatible.</span> This package is not supported for this platform and should not be expected to work.
       </p></li><li><p>
-        <span class="strong"><strong>Level 0: New Submission.</strong></span> This is the default for packages that do not have maturity explicitly set, 
+        <span class="strong">Level 0: New Submission.</span> This is the default for packages that do not have maturity explicitly set, 
         and for new contributions. The only criterion for level 0 is that at least one person asserts that it works on a given platform.
       </p></li><li><p>
-        <span class="strong"><strong>Level 1: Immature.</strong></span> Has no open priority 1 or priority 2 bugs. Has been installed by at least
+        <span class="strong">Level 1: Immature.</span> Has no open priority 1 or priority 2 bugs. Has been installed by at least
         10? different people, including 1 core developer. Has been available in a stable release for at least 1 month. Has API documentation.
       </p></li><li><p>
-        <span class="strong"><strong>Level 2: Mature.</strong></span> Same as Level 1, plus has install guide and user documentation; 
+        <span class="strong">Level 2: Mature.</span> Same as Level 1, plus has install guide and user documentation; 
         no serious deviations from general coding practices; no namespace conflicts with existing level 2 packages.
       </p></li><li><p>
-        <span class="strong"><strong>Level 3: Mature and Standard.</strong></span> Same as level 2, plus meets published coding standards; 
+        <span class="strong">Level 3: Mature and Standard.</span> Same as level 2, plus meets published coding standards; 
         is fully internationalized; available on both supported databases.
-      </p></li></ul></div></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="naming-upgrade-scripts"></a>Naming Database Upgrade Scripts</h3></div></div></div><p>Database upgrade scripts must be named very precisely in order for the Package Manager to run the correct script at the correct time.</p><div class="orderedlist"><ol type="1"><li><p>Upgrade scripts should be named <code class="computeroutput">/packages/<span class="replaceable"><span class="replaceable">myfirstpackage</span></span>/sql/<span class="replaceable"><span class="replaceable">postgresql</span></span>/upgrade/upgrade-<span class="replaceable"><span class="replaceable">OLDVERSION</span></span>-<span class="replaceable"><span class="replaceable">NEWVERSION</span></span>.sql</code></p></li><li><p>If the version you are working on is a later version than the current released version, OLDVERSION should be the current version.  The current version is package version in the APM and in <code class="computeroutput">/packages/<span class="replaceable"><span class="replaceable">myfirstpackage</span></span>/<span class="replaceable"><span class="replaceable">myfirstpackage</span></span>.info</code>.  So if forums is at 2.0.1, OLDVERSION should be 2.0.1d1.  Note that this means that new version development that includes an upgrade must start at d2, not d1.
-        </p></li><li><p>If you are working on a pre-release version of a package, use the current package version as OLDVERSION.  Increment the package version as appropriate (see above) and use the new version as NEWVERSION.  For example, if you are working on 2.0.1d3, make it 2.0.1d4 and use <code class="computeroutput">upgrade-2.0.1d3-2.0.1d4.sql</code>.</p></li><li><p>Database upgrades should be confined to development releases, not alpha or beta releases.</p></li><li><p>
+      </p></li></ul></div></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="naming-upgrade-scripts"></a>Naming Database Upgrade Scripts</h3></div></div><div></div></div><p>Database upgrade scripts must be named very precisely in order for the Package Manager to run the correct script at the correct time.</p><div class="orderedlist"><ol type="1"><li><p>Upgrade scripts should be named <tt class="computeroutput">/packages/<span class="replaceable"><span class="replaceable">myfirstpackage</span></span>/sql/<span class="replaceable"><span class="replaceable">postgresql</span></span>/upgrade/upgrade-<span class="replaceable"><span class="replaceable">OLDVERSION</span></span>-<span class="replaceable"><span class="replaceable">NEWVERSION</span></span>.sql</tt></p></li><li><p>If the version you are working on is a later version than the current released version, OLDVERSION should be the current version.  The current version is package version in the APM and in <tt class="computeroutput">/packages/<span class="replaceable"><span class="replaceable">myfirstpackage</span></span>/<span class="replaceable"><span class="replaceable">myfirstpackage</span></span>.info</tt>.  So if forums is at 2.0.1, OLDVERSION should be 2.0.1d1.  Note that this means that new version development that includes an upgrade must start at d2, not d1.
+        </p></li><li><p>If you are working on a pre-release version of a package, use the current package version as OLDVERSION.  Increment the package version as appropriate (see above) and use the new version as NEWVERSION.  For example, if you are working on 2.0.1d3, make it 2.0.1d4 and use <tt class="computeroutput">upgrade-2.0.1d3-2.0.1d4.sql</tt>.</p></li><li><p>Database upgrades should be confined to development releases, not alpha or beta releases.</p></li><li><p>
           Never use a final release number as a NEWVERSION.  If you do, then it is impossible to add any more database upgrades without incrementing the overall package version.</p></li><li><p>Use only the d, a, and b letters in OLDVERSION and NEWVERSION.  rc is not supported by OpenACS APM.</p></li><li><p>The distance from OLDVERSION to NEWVERSION should never span a release.   For example if we had a bug fix in
-acs-kernel on 5.1.0 you wouldn't want a file upgrade-5.0.4-5.1.0d1.sql since if you subsequently need to provide a 5.0.4-5.0.5 upgrade you will have to rename the 5.0.4-5.1.0 upgrade since you can't have upgrades which overlap like that.  Instead, use <code class="computeroutput">upgrade-5.1.0d1-5.1.0d2.sql</code>
+acs-kernel on 5.1.0 you wouldn't want a file upgrade-5.0.4-5.1.0d1.sql since if you subsequently need to provide a 5.0.4-5.0.5 upgrade you will have to rename the 5.0.4-5.1.0 upgrade since you can't have upgrades which overlap like that.  Instead, use <tt class="computeroutput">upgrade-5.1.0d1-5.1.0d2.sql</tt>
 </p></li></ol></div></div></div><div class="navfooter"><hr><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="cvs-guidelines.html">Prev</a> </td><td width="20%" align="center"><a accesskey="h" href="index.html">Home</a></td><td width="40%" align="right"> <a accesskey="n" href="eng-standards-constraint-naming.html">Next</a></td></tr><tr><td width="40%" align="left">
     CVS Guidelines
    </td><td width="20%" align="center"><a accesskey="u" href="eng-standards.html">Up</a></td><td width="40%" align="right"> Constraint naming standard</td></tr></table><hr><address><a href="mailto:docs@openacs.org">docs@openacs.org</a></address></div><a name="comments"></a><center><a href="http://openacs.org/doc/current/eng-standards-versioning.html#comments">View comments on this page at openacs.org</a></center></body></html>
Index: openacs-4/packages/acs-core-docs/www/eng-standards.html
===================================================================
RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/eng-standards.html,v
diff -u -r1.25 -r1.25.4.1
--- openacs-4/packages/acs-core-docs/www/eng-standards.html	17 Jul 2006 05:38:31 -0000	1.25
+++ openacs-4/packages/acs-core-docs/www/eng-standards.html	3 Feb 2008 12:07:38 -0000	1.25.4.1
@@ -1,3 +1,4 @@
-<html><head><meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"><title>Chapter�12.�Engineering Standards</title><meta name="generator" content="DocBook XSL Stylesheets V1.70.1"><link rel="home" href="index.html" title="OpenACS Core Documentation"><link rel="up" href="acs-package-dev.html" title="Part�III.�For OpenACS Package Developers"><link rel="previous" href="form-builder.html" title="Using Form Builder: building html forms dynamically"><link rel="next" href="style-guide.html" title="OpenACS Style Guide"><link rel="stylesheet" href="openacs.css" type="text/css"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><a href="http://openacs.org"><img src="/doc/images/alex.jpg" border="0" alt="Alex logo"></a><table width="100%" summary="Navigation header" border="0"><tr><td width="20%" align="left"><a accesskey="p" href="form-builder.html">Prev</a> </td><th width="60%" align="center">Part�III.�For OpenACS Package Developers</th><td width="20%" align="right"> <a accesskey="n" href="style-guide.html">Next</a></td></tr></table><hr></div><div class="chapter" lang="en"><div class="titlepage"><div><div><h2 class="title"><a name="eng-standards"></a>Chapter�12.�Engineering Standards</h2></div></div></div><div class="toc"><p><b>Table of Contents</b></p><dl><dt><span class="sect1"><a href="style-guide.html">OpenACS Style Guide</a></span></dt><dt><span class="sect1"><a href="cvs-guidelines.html">
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html><head><meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"><title>Chapter�12.�Engineering Standards</title><meta name="generator" content="DocBook XSL Stylesheets V1.60.1"><link rel="home" href="index.html" title="OpenACS Core Documentation"><link rel="up" href="acs-package-dev.html" title="Part�III.�For OpenACS Package Developers"><link rel="previous" href="form-builder.html" title="Using Form Builder: building html forms dynamically"><link rel="next" href="style-guide.html" title="OpenACS Style Guide"><link rel="stylesheet" href="openacs.css" type="text/css"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><a href="http://openacs.org"><img src="/doc/images/alex.jpg" border="0" alt="Alex logo"></a><table width="100%" summary="Navigation header" border="0"><tr><td width="20%" align="left"><a accesskey="p" href="form-builder.html">Prev</a> </td><th width="60%" align="center">Part�III.�For OpenACS Package Developers</th><td width="20%" align="right"> <a accesskey="n" href="style-guide.html">Next</a></td></tr></table><hr></div><div class="chapter" lang="en"><div class="titlepage"><div><div><h2 class="title"><a name="eng-standards"></a>Chapter�12.�Engineering Standards</h2></div></div><div></div></div><div class="toc"><p><b>Table of Contents</b></p><dl><dt><a href="style-guide.html">OpenACS Style Guide</a></dt><dt><a href="cvs-guidelines.html">
     CVS Guidelines
-  </a></span></dt><dt><span class="sect1"><a href="eng-standards-versioning.html">Release Version Numbering</a></span></dt><dt><span class="sect1"><a href="eng-standards-constraint-naming.html">Constraint naming standard</a></span></dt><dt><span class="sect1"><a href="eng-standards-filenaming.html">ACS File Naming and Formatting Standards</a></span></dt><dt><span class="sect1"><a href="eng-standards-plsql.html">PL/SQL Standards</a></span></dt><dt><span class="sect1"><a href="variables.html">Variables</a></span></dt><dt><span class="sect1"><a href="automated-testing-best-practices.html">Automated Testing</a></span></dt></dl></div></div><div class="navfooter"><hr><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="form-builder.html">Prev</a> </td><td width="20%" align="center"><a accesskey="h" href="index.html">Home</a></td><td width="40%" align="right"> <a accesskey="n" href="style-guide.html">Next</a></td></tr><tr><td width="40%" align="left">Using Form Builder: building html forms dynamically </td><td width="20%" align="center"><a accesskey="u" href="acs-package-dev.html">Up</a></td><td width="40%" align="right"> OpenACS Style Guide</td></tr></table><hr><address><a href="mailto:docs@openacs.org">docs@openacs.org</a></address></div><a name="comments"></a><center><a href="http://openacs.org/doc/current/eng-standards.html#comments">View comments on this page at openacs.org</a></center></body></html>
+  </a></dt><dt><a href="eng-standards-versioning.html">Release Version Numbering</a></dt><dt><a href="eng-standards-constraint-naming.html">Constraint naming standard</a></dt><dt><a href="eng-standards-filenaming.html">ACS File Naming and Formatting Standards</a></dt><dt><a href="eng-standards-plsql.html">PL/SQL Standards</a></dt><dt><a href="variables.html">Variables</a></dt><dt><a href="automated-testing-best-practices.html">Automated Testing</a></dt></dl></div></div><div class="navfooter"><hr><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="form-builder.html">Prev</a> </td><td width="20%" align="center"><a accesskey="h" href="index.html">Home</a></td><td width="40%" align="right"> <a accesskey="n" href="style-guide.html">Next</a></td></tr><tr><td width="40%" align="left">Using Form Builder: building html forms dynamically </td><td width="20%" align="center"><a accesskey="u" href="acs-package-dev.html">Up</a></td><td width="40%" align="right"> OpenACS Style Guide</td></tr></table><hr><address><a href="mailto:docs@openacs.org">docs@openacs.org</a></address></div><a name="comments"></a><center><a href="http://openacs.org/doc/current/eng-standards.html#comments">View comments on this page at openacs.org</a></center></body></html>
Index: openacs-4/packages/acs-core-docs/www/ext-auth-requirements.html
===================================================================
RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/ext-auth-requirements.html,v
diff -u -r1.33 -r1.33.4.1
--- openacs-4/packages/acs-core-docs/www/ext-auth-requirements.html	17 Jul 2006 05:38:31 -0000	1.33
+++ openacs-4/packages/acs-core-docs/www/ext-auth-requirements.html	3 Feb 2008 12:07:38 -0000	1.33.4.1
@@ -1,4 +1,5 @@
-<html><head><meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"><title>External Authentication Requirements</title><meta name="generator" content="DocBook XSL Stylesheets V1.70.1"><link rel="home" href="index.html" title="OpenACS Core Documentation"><link rel="up" href="kernel-doc.html" title="Chapter�15.�Kernel Documentation"><link rel="previous" href="bootstrap-acs.html" title="Bootstrapping OpenACS"><link rel="next" href="releasing-openacs.html" title="Chapter�16.�Releasing OpenACS"><link rel="stylesheet" href="openacs.css" type="text/css"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><a href="http://openacs.org"><img src="/doc/images/alex.jpg" border="0" alt="Alex logo"></a><table width="100%" summary="Navigation header" border="0"><tr><td width="20%" align="left"><a accesskey="p" href="bootstrap-acs.html">Prev</a> </td><th width="60%" align="center">Chapter�15.�Kernel Documentation</th><td width="20%" align="right"> <a accesskey="n" href="releasing-openacs.html">Next</a></td></tr></table><hr></div><div class="sect1" lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="ext-auth-requirements"></a>External Authentication Requirements</h2></div></div></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id1077218"></a>Vision</h3></div></div></div><p>People have plenty of usernames and passwords already, we
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html><head><meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"><title>External Authentication Requirements</title><meta name="generator" content="DocBook XSL Stylesheets V1.60.1"><link rel="home" href="index.html" title="OpenACS Core Documentation"><link rel="up" href="kernel-doc.html" title="Chapter�15.�Kernel Documentation"><link rel="previous" href="bootstrap-acs.html" title="Bootstrapping OpenACS"><link rel="next" href="releasing-openacs.html" title="Chapter�16.�Releasing OpenACS"><link rel="stylesheet" href="openacs.css" type="text/css"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><a href="http://openacs.org"><img src="/doc/images/alex.jpg" border="0" alt="Alex logo"></a><table width="100%" summary="Navigation header" border="0"><tr><td width="20%" align="left"><a accesskey="p" href="bootstrap-acs.html">Prev</a> </td><th width="60%" align="center">Chapter�15.�Kernel Documentation</th><td width="20%" align="right"> <a accesskey="n" href="releasing-openacs.html">Next</a></td></tr></table><hr></div><div class="sect1" lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="ext-auth-requirements"></a>External Authentication Requirements</h2></div></div><div></div></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id2944722"></a>Vision</h3></div></div><div></div></div><p>People have plenty of usernames and passwords already, we
 don't want them to have yet another. We want people to be able to
 log in to OpenACS with the same password they use to log in to any
 other system.</p><p>Besides, administrators have better things to do than create
@@ -7,7 +8,7 @@
 log on to OpenACS, an account will automatically be created for
 them here.</p><p>Finally, security is increased with fewer passwords, since
 users generally can't remember all those passwords, so they tend to
-keep them all the same and never change them.</p></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="Design_Goal"></a>Design Goals</h3></div></div></div><div class="itemizedlist"><ul type="disc"><li><p>Transparent: Users don't have to do anything special to
+keep them all the same and never change them.</p></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="Design_Goal"></a>Design Goals</h3></div></div><div></div></div><div class="itemizedlist"><ul type="disc"><li><p>Transparent: Users don't have to do anything special to
         get an account on the local OpenACS system, if they already have an
         account on the external authentication server.</p></li><li><p>Fall-back: Users who don't have an account on the
         external authentication server are still allowed to create a local
@@ -35,19 +36,19 @@
         the other hand very modular to enable a start with minimal
         requirements (driver implementations) as soon as
         possible.</p></li></ul></div><p>The problem can be split into several logically separate
-parts. Each has a section below.</p></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="Terminology"></a>Terminology</h3></div></div></div><div class="itemizedlist"><ul type="disc"><li><p>Authority: The name of an authority trusted to authenticate
+parts. Each has a section below.</p></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="Terminology"></a>Terminology</h3></div></div><div></div></div><div class="itemizedlist"><ul type="disc"><li><p>Authority: The name of an authority trusted to authenticate
         users.</p></li><li><p>Authentication Driver: An implementation of the
         authentication service contract, which talks to an authentication
         of a certain type, e.g. PAM, RADIUS, LDAP, or Active
         Directory.</p></li><li><p>Authentication API: The API through which login pages and
         applications talk to the authentication service. There's one and
         only one implementation of the authentication API, namly the one
         included in OpenACS Core.</p></li><li><p>Authentication Driver API: The service contract which
-        authentication drivers implement.</p></li></ul></div></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="Diagram"></a>Conceptual Pictures</h3></div></div></div><p>Authentication:</p><p><span class="inlinemediaobject"><img src="images/ext-auth.png"></span>
-</p><p>Account Management (NO PICTURE YET)</p><p>Batch Synchronization (NO PICTURE YET)</p></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="Requirements"></a>Requirements</h3></div></div></div><div class="sect3" lang="en"><div class="titlepage"><div><div><h4 class="title"><a name="id1177726"></a>New API</h4></div></div></div><div class="segmentedlist"><table border="1" cellpadding="3" cellspacing="0" width="90%"><tr><th width="15%">Feature</th><th width="8%">Status</th><th width="77%">Description</th></tr><thead><tr><th>New API</th></tr></thead><tbody><tr class="seglistitem"><td class="seg">EXT-AUTH-01</td><td class="seg">A</td><td class="seg">Extend Authentication/Acct Status API</td></tr><tr class="seglistitem"><td class="seg">EXT-AUTH-03</td><td class="seg">A</td><td class="seg">Account Creation API</td></tr><tr class="seglistitem"><td class="seg">EXT-AUTH-05</td><td class="seg">A</td><td class="seg">Password Management API</td></tr><tr class="seglistitem"><td class="seg">EXT-AUTH-30</td><td class="seg">A</td><td class="seg">Authority Management API</td></tr></tbody></table></div></div><div class="sect3" lang="en"><div class="titlepage"><div><div><h4 class="title"><a name="Login"></a>Login</h4></div></div></div><div class="segmentedlist"><table border="1" cellpadding="3" cellspacing="0" width="90%"><tr><th width="15%">Feature</th><th width="8%">Status</th><th width="77%">Description</th></tr><thead><tr><th>Login</th></tr></thead><tbody><tr class="seglistitem"><td class="seg">EXT-AUTH-04</td><td class="seg">A</td><td class="seg">Rewrite login, register, and admin pages to use APIs</td></tr><tr class="seglistitem"><td class="seg">EXT-AUTH-38</td><td class="seg">A</td><td class="seg">ad_form complain feature</td></tr><tr class="seglistitem"><td class="seg">EXT-AUTH-19</td><td class="seg">A</td><td class="seg">Rewrite password recovery to use API</td></tr><tr class="seglistitem"><td class="seg">EXT-AUTH-21</td><td class="seg">A</td><td class="seg">Rewrite email verification with API</td></tr><tr class="seglistitem"><td class="seg">EXT-AUTH-28</td><td class="seg">A</td><td class="seg">Username is email switch</td></tr></tbody></table></div><p>Users will log in using a username, a authority, and a
+        authentication drivers implement.</p></li></ul></div></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="Diagram"></a>Conceptual Pictures</h3></div></div><div></div></div><p>Authentication:</p><p><span class="inlinemediaobject"><img src="../images/ext-auth.png"></span>
+</p><p>Account Management (NO PICTURE YET)</p><p>Batch Synchronization (NO PICTURE YET)</p></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="Requirements"></a>Requirements</h3></div></div><div></div></div><div class="sect3" lang="en"><div class="titlepage"><div><div><h4 class="title"><a name="id3004521"></a>New API</h4></div></div><div></div></div><div class="segmentedlist"><table border="1" cellpadding="3" cellspacing="0" width="90%"><tr><th width="15%">Feature</th><th width="8%">Status</th><th width="77%">Description</th></tr><thead><tr><th>New API</th></tr></thead><tbody><tr><td>EXT-AUTH-01</td><td>A</td><td>Extend Authentication/Acct Status API</td></tr><tr><td>EXT-AUTH-03</td><td>A</td><td>Account Creation API</td></tr><tr><td>EXT-AUTH-05</td><td>A</td><td>Password Management API</td></tr><tr><td>EXT-AUTH-30</td><td>A</td><td>Authority Management API</td></tr></tbody></table></div></div><div class="sect3" lang="en"><div class="titlepage"><div><div><h4 class="title"><a name="Login"></a>Login</h4></div></div><div></div></div><div class="segmentedlist"><table border="1" cellpadding="3" cellspacing="0" width="90%"><tr><th width="15%">Feature</th><th width="8%">Status</th><th width="77%">Description</th></tr><thead><tr><th>Login</th></tr></thead><tbody><tr><td>EXT-AUTH-04</td><td>A</td><td>Rewrite login, register, and admin pages to use APIs</td></tr><tr><td>EXT-AUTH-38</td><td>A</td><td>ad_form complain feature</td></tr><tr><td>EXT-AUTH-19</td><td>A</td><td>Rewrite password recovery to use API</td></tr><tr><td>EXT-AUTH-21</td><td>A</td><td>Rewrite email verification with API</td></tr><tr><td>EXT-AUTH-28</td><td>A</td><td>Username is email switch</td></tr></tbody></table></div><p>Users will log in using a username, a authority, and a
       password.  The authority is the source for user/password
       verification.  OpenACS can be an authority itself. </p><p>Each user in OpenACS will belong to exactly one authority, which
-can either be the "local" OpenACS users table, in which case the
+can either be the &quot;local&quot; OpenACS users table, in which case the
 password column is used, or it can be some external authority,
 which will be communicated with using some protocol, as implemented
 by an authentication driver.</p><p>Username will be separate from email address. It can be an
@@ -70,7 +71,7 @@
 [Forgot my password]
 [New user registration]
 </pre><p>If there's only one active authority, we don't display the
-authority drop-down element at all.</p></div><div class="sect3" lang="en"><div class="titlepage"><div><div><h4 class="title"><a name="Configuratio"></a>Configuration</h4></div></div></div><div class="segmentedlist"><table border="1" cellpadding="3" cellspacing="0" width="90%"><tr><th width="15%">Feature</th><th width="8%">Status</th><th width="77%">Description</th></tr><thead><tr><th>Configuration</th></tr></thead><tbody><tr class="seglistitem"><td class="seg">EXT-AUTH-07</td><td class="seg">A</td><td class="seg">Admin pages to control Ext-Auth parameters</td></tr></tbody></table></div><p>The site-wide systems administrator can configure the
+authority drop-down element at all.</p></div><div class="sect3" lang="en"><div class="titlepage"><div><div><h4 class="title"><a name="Configuratio"></a>Configuration</h4></div></div><div></div></div><div class="segmentedlist"><table border="1" cellpadding="3" cellspacing="0" width="90%"><tr><th width="15%">Feature</th><th width="8%">Status</th><th width="77%">Description</th></tr><thead><tr><th>Configuration</th></tr></thead><tbody><tr><td>EXT-AUTH-07</td><td>A</td><td>Admin pages to control Ext-Auth parameters</td></tr></tbody></table></div><p>The site-wide systems administrator can configure the
 authentication process from a page linked under /acs-admin.</p><div class="itemizedlist"><ul type="disc"><li><p>Authorities - ordered list of authorities defined</p></li><li><p>Account Registration Allowed: Yes/No. Account
           registration can be disabled altogether.</p></li><li><p>Registration authority - the authority in which accounts should
           be created, using the relevant driver, if account registration is
@@ -83,7 +84,7 @@
       other drivers call external functions.  The possible functions
       for each authority are split into several drivers for convenience.
       One driver handles authentication, one account creation, and one
-      changing passwords.</p><div class="segmentedlist"><table border="1" cellpadding="3" cellspacing="0" width="90%"><tr><th width="15%">Feature</th><th width="8%">Status</th><th width="77%">Description</th></tr><thead><tr><th>create service contract</th></tr></thead><tbody><tr class="seglistitem"><td class="seg">EXT-AUTH-16</td><td class="seg">A</td><td class="seg">Create service contract for Authentication</td></tr><tr class="seglistitem"><td class="seg">EXT-AUTH-17</td><td class="seg">A</td><td class="seg">Create service contract for Acct. Creation</td></tr><tr class="seglistitem"><td class="seg">EXT-AUTH-29</td><td class="seg">A</td><td class="seg">Create service contract for Passwd Management</td></tr></tbody></table></div><div class="segmentedlist"><table border="1" cellpadding="3" cellspacing="0" width="90%"><tr><th width="15%">Feature</th><th width="8%">Status</th><th width="77%">Description</th></tr><thead><tr><th> </th></tr></thead><tbody><tr class="seglistitem"><td class="seg">EXT-AUTH-18</td><td class="seg">A</td><td class="seg">Authority configuration data model</td></tr></tbody></table></div><p>Each authority is defined like this:</p><div class="itemizedlist"><ul type="disc"><li><p>Authority pretty-name, e.g. "URZ"</p></li><li><p>Authentication Driver, e.g. "RADIUS". In practice, this
+      changing passwords.</p><div class="segmentedlist"><table border="1" cellpadding="3" cellspacing="0" width="90%"><tr><th width="15%">Feature</th><th width="8%">Status</th><th width="77%">Description</th></tr><thead><tr><th>create service contract</th></tr></thead><tbody><tr><td>EXT-AUTH-16</td><td>A</td><td>Create service contract for Authentication</td></tr><tr><td>EXT-AUTH-17</td><td>A</td><td>Create service contract for Acct. Creation</td></tr><tr><td>EXT-AUTH-29</td><td>A</td><td>Create service contract for Passwd Management</td></tr></tbody></table></div><div class="segmentedlist"><table border="1" cellpadding="3" cellspacing="0" width="90%"><tr><th width="15%">Feature</th><th width="8%">Status</th><th width="77%">Description</th></tr><thead><tr><th> </th></tr></thead><tbody><tr><td>EXT-AUTH-18</td><td>A</td><td>Authority configuration data model</td></tr></tbody></table></div><p>Each authority is defined like this:</p><div class="itemizedlist"><ul type="disc"><li><p>Authority pretty-name, e.g. &quot;URZ&quot;</p></li><li><p>Authentication Driver, e.g. &quot;RADIUS&quot;. In practice, this
           would be a reference to a service contract
           implementation.</p></li><li><p>Authentication Driver configuration settings, e.g. host
           name, port, etc., as required by the particular driver. Note that
@@ -95,7 +96,7 @@
           trying to use the authentication driver's password management
           features.</p></li><li><p>ChangePasswordUrl - a URL to redirect to instead of
           trying to use the authentication driver's password management
-          features.</p></li><li><p>Account Creation Driver, e.g. "RADIUS". In practice, this
+          features.</p></li><li><p>Account Creation Driver, e.g. &quot;RADIUS&quot;. In practice, this
           would be a reference to a service contract implementation. The
           reason we have separate drivers for authentication and account
           creation is that organizations are likely to have a home-grown
@@ -113,10 +114,10 @@
 find a mechanism for the driver to tell us which configuration
 options are available, a way to set these, and a way for the driver
 to access these settings.</p><p>OpenACS will come pre-configured with one authority, which is
-the "local" authority, meaning we'll authenticate as normal using the
+the &quot;local&quot; authority, meaning we'll authenticate as normal using the
 local users table. This will, just like any other authority, be
 implemetned using a service contract.</p></div><div class="sect3" lang="en"><div class="titlepage"><div><div><h4 class="title"><a name="Synchronizing_and_Linking_User"></a>Synchronizing
-and Linking Users</h4></div></div></div><div class="segmentedlist"><table border="1" cellpadding="3" cellspacing="0" width="90%"><tr><th width="15%">Feature</th><th width="8%">Status</th><th width="77%">Description</th></tr><thead><tr><th>Synchronizing and linking users</th></tr></thead><tbody><tr class="seglistitem"><td class="seg">EXT-AUTH-28</td><td class="seg">A</td><td class="seg">Create service contract for Batch Sync.</td></tr><tr class="seglistitem"><td class="seg">EXT-AUTH-38</td><td class="seg">A</td><td class="seg">Batch User Synchronization API</td></tr><tr class="seglistitem"><td class="seg">EXT-AUTH-38</td><td class="seg">A</td><td class="seg">IMS Synchronization driver</td></tr><tr class="seglistitem"><td class="seg">EXT-AUTH-08</td><td class="seg">A</td><td class="seg">Automation of batch Synchronization</td></tr><tr class="seglistitem"><td class="seg">EXT-AUTH-15</td><td class="seg">B</td><td class="seg">On-demand syncronization</td></tr></tbody></table></div><p>Regardless of the login method, the user needs to have a row
+and Linking Users</h4></div></div><div></div></div><div class="segmentedlist"><table border="1" cellpadding="3" cellspacing="0" width="90%"><tr><th width="15%">Feature</th><th width="8%">Status</th><th width="77%">Description</th></tr><thead><tr><th>Synchronizing and linking users</th></tr></thead><tbody><tr><td>EXT-AUTH-28</td><td>A</td><td>Create service contract for Batch Sync.</td></tr><tr><td>EXT-AUTH-38</td><td>A</td><td>Batch User Synchronization API</td></tr><tr><td>EXT-AUTH-38</td><td>A</td><td>IMS Synchronization driver</td></tr><tr><td>EXT-AUTH-08</td><td>A</td><td>Automation of batch Synchronization</td></tr><tr><td>EXT-AUTH-15</td><td>B</td><td>On-demand syncronization</td></tr></tbody></table></div><p>Regardless of the login method, the user needs to have a row
 in the OpenACS users table. This can happen through a batch job, in
 real-time, or both in combination.  We use the <a href="http://ims.edna.edu.au/enterprise/" target="_top">IMS Enterprise 1.1</a> specification. </p><p>Batch job means that we do a synchronization (import new
 users, modify changed, purge deleted) on a regular interval, e.g.
@@ -129,23 +130,23 @@
 be remedied by using the real-time solution.  The batch job will also
 require error logging and an admin interface to view logs.</p><p>If an email already belongs to some
 other user, we log it as an error.</p><p>A user will always belong to exactly one authority, which can be
-either the "local" authority or some other. Thus, the OpenACS user's
+either the &quot;local&quot; authority or some other. Thus, the OpenACS user's
 table will have to be augmented with the following columns:</p><div class="itemizedlist"><ul type="disc"><li><p>Authority. Reference to the site-wide authorities list. The
           authority which can authenticate this user.</p></li><li><p>Authority-specific username.</p></li></ul></div><p>Real-time means that the first time the user logs into
 OpenACS, we'll query the authority that authenticated him
 for information about this user. That authentication authority will
 then give us at least first names, last name and email. The pros
 and cons are the opposite of batch jobs. Using both in combination
-is ideal.</p><p>Note: One solution to the "two users from different authorities
-have the same email" problem above would be to allow users to
+is ideal.</p><p>Note: One solution to the &quot;two users from different authorities
+have the same email&quot; problem above would be to allow users to
 belong to multiple authorities. Then we would notice that the email
 already exists, ask the user if he thinks he's the same person, and
 if so, ask him to prove so by authenticating using the other
 authority. Thus he'll have just authenticated in two different
 authorities, and we can record that this is the same person. We'd still
 have a problem if there was an email conflict between two accounts
 on the same authority. Hm. I don't think it's worth spending too much
-time trying to solve this problem through software.</p><div class="segmentedlist"><table border="1" cellpadding="3" cellspacing="0" width="90%"><tr><th width="15%">Feature</th><th width="8%">Status</th><th width="77%">Description</th></tr><thead><tr><th>EXT-AUTH-31</th></tr></thead><tbody><tr class="seglistitem"><td class="seg">EXT-AUTH-31</td><td class="seg">A</td><td class="seg">Upgrade user data model for ext-auth</td></tr></tbody></table></div><p>After having authenticated using the relevant authority driver,
+time trying to solve this problem through software.</p><div class="segmentedlist"><table border="1" cellpadding="3" cellspacing="0" width="90%"><tr><th width="15%">Feature</th><th width="8%">Status</th><th width="77%">Description</th></tr><thead><tr><th>EXT-AUTH-31</th></tr></thead><tbody><tr><td>EXT-AUTH-31</td><td>A</td><td>Upgrade user data model for ext-auth</td></tr></tbody></table></div><p>After having authenticated using the relevant authority driver,
 we'll look for the username/authority pair in the users table.</p><p>If we don't find any, that means that we're either not doing
 batch synchronizing, or that the user has been added since the last
 sync. In that case, we'll try to do a real-time synchronization, if
@@ -154,9 +155,9 @@
 create a row in the local users table using that
 information.</p><p>If that doesn't work, we'll tell the user that their account
 isn't yet available, and the driver will supply a message for us,
-which could say "The account should be available tomorrow. If not,
-contact X."</p></div><div class="sect3" lang="en"><div class="titlepage"><div><div><h4 class="title"><a name="Account_Registratio"></a>Account
-Registration</h4></div></div></div><p>If a user doesn't have an account, the site-wide
+which could say &quot;The account should be available tomorrow. If not,
+contact X.&quot;</p></div><div class="sect3" lang="en"><div class="titlepage"><div><div><h4 class="title"><a name="Account_Registratio"></a>Account
+Registration</h4></div></div><div></div></div><p>If a user doesn't have an account, the site-wide
 configuration can allow the user to register for one, as defined in
 the configuration discussed above. This section is about normal
 account registration through a authority driver.</p><p>The account creation service contract implementation will
@@ -166,45 +167,45 @@
           message.</p></li><li><p>Account status: Is the account ready for use?</p></li><li><p>User information: first_names, last_name, email, url,
           password, password_hash, secret_question, secret_answer. The driver
           only needs to return the columns which were changed or added
-          through the registration process. Typically, only the "local"
+          through the registration process. Typically, only the &quot;local&quot;
           driver will return password and secret question/answer.</p></li></ul></div><p>After creating the remote account, a local account is created
 with the information gathered through the form/returned by the
 driver.</p><p>By default, a local account creation implementation is
 provided, which will create a new OpenACS user, and, in addition to
 the default local account creation above, also store the password
 in hashed form.</p></div><div class="sect3" lang="en"><div class="titlepage"><div><div><h4 class="title"><a name="Password_Managemen"></a>Password
-Management</h4></div></div></div><p>Password management is about changing password, retrieving
+Management</h4></div></div><div></div></div><p>Password management is about changing password, retrieving
 password, and resetting password.</p><p>It's up to the authority driver implementation to decide whether
 to support any or all of these features, and to say so using the
 CanXXX methods (see driver API below).</p><p>Additionally, the authority can be configured with a URL to
 redirect to in the case of forgotten passwords, or when the user
 desires to change password.</p></div><div class="sect3" lang="en"><div class="titlepage"><div><div><h4 class="title"><a name="Login_Pages_Over_HTTP"></a>Login Pages Over
-HTTPS</h4></div></div></div><div class="segmentedlist"><table border="1" cellpadding="3" cellspacing="0" width="90%"><tr><th width="15%">Feature</th><th width="8%">Status</th><th width="77%">Description</th></tr><thead><tr><th>EXT-AUTH-20</th></tr></thead><tbody><tr class="seglistitem"><td class="seg">EXT-AUTH-20</td><td class="seg">A</td><td class="seg">Login over HTTPS</td></tr></tbody></table></div><p>Login pages must be able to be sent over a secure connection
+HTTPS</h4></div></div><div></div></div><div class="segmentedlist"><table border="1" cellpadding="3" cellspacing="0" width="90%"><tr><th width="15%">Feature</th><th width="8%">Status</th><th width="77%">Description</th></tr><thead><tr><th>EXT-AUTH-20</th></tr></thead><tbody><tr><td>EXT-AUTH-20</td><td>A</td><td>Login over HTTPS</td></tr></tbody></table></div><p>Login pages must be able to be sent over a secure connection
 (https), so your password won't get sent over the wire in
 cleartext, while leaving the rest of the site non-secure (http). I
 believe that this requires some (minor) changes to the current
 session handling code.</p></div><div class="sect3" lang="en"><div class="titlepage"><div><div><h4 class="title"><a name="Email_Verificatio"></a>Email
-Verification</h4></div></div></div><p>Email verification needs to be handled both at registration
+Verification</h4></div></div><div></div></div><p>Email verification needs to be handled both at registration
 and at login.</p><p>In both cases, it'll be handled by the driver sending
 automatically sending the email containing a link for the user to
 verify his account. Then the driver will return an account status
-of "closed,temporary", and a message that says "Check your inbox
-and click the link in the email".</p><p>OpenACS will have a page which receives the email
+of &quot;closed,temporary&quot;, and a message that says &quot;Check your inbox
+and click the link in the email&quot;.</p><p>OpenACS will have a page which receives the email
 verification, for use by local accounts. Other authorities will
 have to implement their own page, most likely on the authority's
-own server.</p></div></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="Other_Item"></a>Other Items</h3></div></div></div><p>There are a number of items which touch on external
+own server.</p></div></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="Other_Item"></a>Other Items</h3></div></div><div></div></div><p>There are a number of items which touch on external
 authentication and session management. And even though they're not
 directly linked to external authentication, I would recommend that
 we handle a number of them, either because they're important for
 security, or because it makes sense to fix them while we're messing
 with this part of the codebase anyway.</p><div class="sect3" lang="en"><div class="titlepage"><div><div><h4 class="title"><a name="Recommended__Untrusted_Logins_and_Login_Leve"></a>Recommended:
-Untrusted Logins and Login Levels</h4></div></div></div><div class="segmentedlist"><table border="1" cellpadding="3" cellspacing="0" width="90%"><tr><th width="15%">Feature</th><th width="8%">Status</th><th width="77%">Description</th></tr><thead><tr><th>EXT-AUTH-33</th></tr></thead><tbody><tr class="seglistitem"><td class="seg">EXT-AUTH-33</td><td class="seg">A</td><td class="seg">Untrusted Logins</td></tr></tbody></table></div><p>I like the idea of having multiple login levels:</p><div class="orderedlist"><ol type="1"><li><p>Not logged in</p></li><li><p>Untrusted login: We'll show you un-sensitive personal
+Untrusted Logins and Login Levels</h4></div></div><div></div></div><div class="segmentedlist"><table border="1" cellpadding="3" cellspacing="0" width="90%"><tr><th width="15%">Feature</th><th width="8%">Status</th><th width="77%">Description</th></tr><thead><tr><th>EXT-AUTH-33</th></tr></thead><tbody><tr><td>EXT-AUTH-33</td><td>A</td><td>Untrusted Logins</td></tr></tbody></table></div><p>I like the idea of having multiple login levels:</p><div class="orderedlist"><ol type="1"><li><p>Not logged in</p></li><li><p>Untrusted login: We'll show you un-sensitive personal
           content, but won't let you modify anything or see personal data. A
           normal login becomes untrusted after a certain amount of time, and
           the user will have to re-enter his/her password in order to gain
           access to personal data. Untrusted login never expires, unless
           explicitly done so through either changing password or clicking a
-          special "expire all logins" link.</p></li><li><p>Normal login: The user is logged, and has type his
+          special &quot;expire all logins&quot; link.</p></li><li><p>Normal login: The user is logged, and has type his
           password sufficiently recently that we trust the login. All normal
           operations are allowed. Will degrade to untrusted login after a
           specified amount of time.</p></li><li><p>Secure login: The user is logged in over a secure
@@ -223,19 +224,19 @@
 example, we could let you browse publically available forums, and
 only when you want to post do you need to log in. This makes it
 even more feasible to have a more secure login expiration
-setting.</p><p>By default, <code class="literal">auth::require_login</code> would
+setting.</p><p>By default, <tt class="literal">auth::require_login</tt> would
 bounce to the login page if the user is only logged in at the
 untrusted level. Only if you explicitly say
-<code class="literal">auth::require_login -untrusted</code> will we give you
+<tt class="literal">auth::require_login -untrusted</tt> will we give you
 the user_id of a user who's only logged in in untrusted
-mode.</p><p>Similarly, <code class="literal">ad_conn user_id</code> will continue
+mode.</p><p>Similarly, <tt class="literal">ad_conn user_id</tt> will continue
 to return 0 (not logged in) when the user is only logged in
-untrusted, and we'll supply another variable, <code class="literal">ad_conn
-untrusted_user_id</code>, which wlll be set to the user_id for
+untrusted, and we'll supply another variable, <tt class="literal">ad_conn
+untrusted_user_id</tt>, which wlll be set to the user_id for
 all login levels.</p><p>This should ensure that we get full access to the new
 feature, while leaving all current code just as secure as it was
 before.</p></div><div class="sect3" lang="en"><div class="titlepage"><div><div><h4 class="title"><a name="Recommended__Make_Non-Persistent_Login_Wor"></a>Recommended:
-Make Non-Persistent Login Work</h4></div></div></div><div class="segmentedlist"><table border="1" cellpadding="3" cellspacing="0" width="90%"><tr><th width="15%">Feature</th><th width="8%">Status</th><th width="77%">Description</th></tr><thead><tr><th>EXT-AUTH-34</th></tr></thead><tbody><tr class="seglistitem"><td class="seg">EXT-AUTH-34</td><td class="seg">A</td><td class="seg">Expire Logins</td></tr></tbody></table></div><p>Currently, OpenACS is unusable in practice without persistent
+Make Non-Persistent Login Work</h4></div></div><div></div></div><div class="segmentedlist"><table border="1" cellpadding="3" cellspacing="0" width="90%"><tr><th width="15%">Feature</th><th width="8%">Status</th><th width="77%">Description</th></tr><thead><tr><th>EXT-AUTH-34</th></tr></thead><tbody><tr><td>EXT-AUTH-34</td><td>A</td><td>Expire Logins</td></tr></tbody></table></div><p>Currently, OpenACS is unusable in practice without persistent
 login. The login will expire after just a few minutes of
 inactivity, and you'll get bounced to the login page where you have
 to enter both email and password again. Unacceptable in
@@ -247,14 +248,14 @@
 should be configurable and default to something reasonable like an
 hour or so.</p><p>This will require looking into and changing the design of the
 current session handling code.</p></div><div class="sect3" lang="en"><div class="titlepage"><div><div><h4 class="title"><a name="Recommended__Single-Sign-O"></a>Recommended:
-Single-Sign-On</h4></div></div></div><div class="segmentedlist"><table border="1" cellpadding="3" cellspacing="0" width="90%"><tr><th width="15%">Feature</th><th width="8%">Status</th><th width="77%">Description</th></tr><thead><tr><th>EXT-AUTH-23</th></tr></thead><tbody><tr class="seglistitem"><td class="seg">EXT-AUTH-23</td><td class="seg"></td><td class="seg">Single sign-on</td></tr></tbody></table></div><p>Instead of redirecting to the login page, auth::require_login
+Single-Sign-On</h4></div></div><div></div></div><div class="segmentedlist"><table border="1" cellpadding="3" cellspacing="0" width="90%"><tr><th width="15%">Feature</th><th width="8%">Status</th><th width="77%">Description</th></tr><thead><tr><th>EXT-AUTH-23</th></tr></thead><tbody><tr><td>EXT-AUTH-23</td><td></td><td>Single sign-on</td></tr></tbody></table></div><p>Instead of redirecting to the login page, auth::require_login
 can redirect to an authentication server, which can redirect back
 to a page that logs the user in. This should be very easy to
 implement.</p><p>Alternatively, if you want to combine this with fallback to
 OpenACS accounts, we would instead present the normal login screen,
-but put a button which says "Login using X", where X is the
+but put a button which says &quot;Login using X&quot;, where X is the
 redirection-based external authority.</p></div><div class="sect3" lang="en"><div class="titlepage"><div><div><h4 class="title"><a name="Recommended__Expire_All_Login"></a>Recommended:
-Expire All Logins</h4></div></div></div><div class="segmentedlist"><table border="1" cellpadding="3" cellspacing="0" width="90%"><tr><th width="15%">Feature</th><th width="8%">Status</th><th width="77%">Description</th></tr><thead><tr><th>EXT-AUTH-22</th></tr></thead><tbody><tr class="seglistitem"><td class="seg">EXT-AUTH-22</td><td class="seg">B</td><td class="seg">rewrite cookie handling</td></tr></tbody></table></div><p>Currently, if you've ever left a permanent login cookie on
+Expire All Logins</h4></div></div><div></div></div><div class="segmentedlist"><table border="1" cellpadding="3" cellspacing="0" width="90%"><tr><th width="15%">Feature</th><th width="8%">Status</th><th width="77%">Description</th></tr><thead><tr><th>EXT-AUTH-22</th></tr></thead><tbody><tr><td>EXT-AUTH-22</td><td>B</td><td>rewrite cookie handling</td></tr></tbody></table></div><p>Currently, if you've ever left a permanent login cookie on
 someone elses machine, that person will be forever logged in until
 he/she explicitly logs out. You can change your password, you can
 do anything you want, but unless a logout is requested from that
@@ -270,28 +271,28 @@
 so we'll need to cache the secret token, or only check it when
 refreshing the session cookie, which, I believe, normally happens
 every 10 minutes or so.</p></div><div class="sect3" lang="en"><div class="titlepage"><div><div><h4 class="title"><a name="Recommended__Email_account_owner_on_password"></a>Recommended:
-Email account owner on password change</h4></div></div></div><div class="segmentedlist"><table border="1" cellpadding="3" cellspacing="0" width="90%"><tr><th width="15%">Feature</th><th width="8%">Status</th><th width="77%">Description</th></tr><thead><tr><th>EXT-AUTH-24</th></tr></thead><tbody><tr class="seglistitem"><td class="seg">EXT-AUTH-24</td><td class="seg">A</td><td class="seg">Email on password change</td></tr></tbody></table></div><p>As an additional security measure, we should email the
+Email account owner on password change</h4></div></div><div></div></div><div class="segmentedlist"><table border="1" cellpadding="3" cellspacing="0" width="90%"><tr><th width="15%">Feature</th><th width="8%">Status</th><th width="77%">Description</th></tr><thead><tr><th>EXT-AUTH-24</th></tr></thead><tbody><tr><td>EXT-AUTH-24</td><td>A</td><td>Email on password change</td></tr></tbody></table></div><p>As an additional security measure, we should email the
 account's email address whenever the password is changed, so that
 he/she is at least alerted to the fact.</p></div><div class="sect3" lang="en"><div class="titlepage"><div><div><h4 class="title"><a name="Optional__Password_polic"></a>Optional:
-Password policy</h4></div></div></div><div class="segmentedlist"><table border="1" cellpadding="3" cellspacing="0" width="90%"><tr><th width="15%">Feature</th><th width="8%">Status</th><th width="77%">Description</th></tr><thead><tr><th>EXT-AUTH-25</th></tr></thead><tbody><tr class="seglistitem"><td class="seg">EXT-AUTH-25</td><td class="seg">A</td><td class="seg">Implement password policy</td></tr></tbody></table></div><p>Again, to increase security, we should add password policies,
+Password policy</h4></div></div><div></div></div><div class="segmentedlist"><table border="1" cellpadding="3" cellspacing="0" width="90%"><tr><th width="15%">Feature</th><th width="8%">Status</th><th width="77%">Description</th></tr><thead><tr><th>EXT-AUTH-25</th></tr></thead><tbody><tr><td>EXT-AUTH-25</td><td>A</td><td>Implement password policy</td></tr></tbody></table></div><p>Again, to increase security, we should add password policies,
 such as passwords needing to be changed after a certain number of
 days, change on next login (after a new random password has been
 generated), or requiring that the password satisfies certain
 complexity rules, i.e. both upper and lowercase characters,
 numbers, special chars, etc.</p><p>It would good to extend the current maximum password length
 from 10 to at least 32 characters.</p></div><div class="sect3" lang="en"><div class="titlepage"><div><div><h4 class="title"><a name="Optional__Login_Without_Explicit_Domai"></a>Optional:
-Login Without Explicit Authority</h4></div></div></div><div class="segmentedlist"><table border="1" cellpadding="3" cellspacing="0" width="90%"><tr><th width="15%">Feature</th><th width="8%">Status</th><th width="77%">Description</th></tr><thead><tr><th>EXT-AUTH-26</th></tr></thead><tbody><tr class="seglistitem"><td class="seg">EXT-AUTH-26</td><td class="seg">B</td><td class="seg">Login without explicit domain</td></tr></tbody></table></div><p>In order to make it easier for people, we've been toying with
-the idea of a functionality like this:</p><div class="itemizedlist"><ul type="disc"><li><p>If the user enters "foobar@ix.urz.uni-heidelberg.de", it
-          is translated to mean username = "foobar", authority =
-          "ix.urz.uni-heidelberg.de".</p></li><li><p>If the user enters "foobar", it's recognized to not
+Login Without Explicit Authority</h4></div></div><div></div></div><div class="segmentedlist"><table border="1" cellpadding="3" cellspacing="0" width="90%"><tr><th width="15%">Feature</th><th width="8%">Status</th><th width="77%">Description</th></tr><thead><tr><th>EXT-AUTH-26</th></tr></thead><tbody><tr><td>EXT-AUTH-26</td><td>B</td><td>Login without explicit domain</td></tr></tbody></table></div><p>In order to make it easier for people, we've been toying with
+the idea of a functionality like this:</p><div class="itemizedlist"><ul type="disc"><li><p>If the user enters &quot;foobar@ix.urz.uni-heidelberg.de&quot;, it
+          is translated to mean username = &quot;foobar&quot;, authority =
+          &quot;ix.urz.uni-heidelberg.de&quot;.</p></li><li><p>If the user enters &quot;foobar&quot;, it's recognized to not
           include any authority, and the default authority of
-          "ix.urz.uni-heidelberg.de" is used.</p></li><li><p>If the user enters "foo@bar.com", it's recognized as not
+          &quot;ix.urz.uni-heidelberg.de&quot; is used.</p></li><li><p>If the user enters &quot;foo@bar.com&quot;, it's recognized as not
           belonging to any known authority, and as such, it's translated to mean
-          username = "foo@bar.com", authority = "local".</p></li></ul></div><p>If this is deemed desirable, a way to implement this would be
+          username = &quot;foo@bar.com&quot;, authority = &quot;local&quot;.</p></li></ul></div><p>If this is deemed desirable, a way to implement this would be
 through these settings:</p><div class="itemizedlist"><ul type="disc"><li><p>Split: A regexp which will split the user's entry into
-          username and authority parts. For example "^([^@]+)(@[^@]+)?$". An
+          username and authority parts. For example &quot;^([^@]+)(@[^@]+)?$&quot;. An
           easier to use but less flexible method would be that you simply
-          specify a certain character to split by, such as "@" or "\". If the
+          specify a certain character to split by, such as &quot;@&quot; or &quot;\&quot;. If the
           regexp doesn't match, or in the latter case, if there's more than
           one occurrence of the specified character sequence, the split will
           fail, signaling that the user's entry was not valid.</p></li><li><p>Default authority: The default authority will be the first one
@@ -304,7 +305,7 @@
 
 # username will now contain username
 # authority will now contain authority
-</pre></div><div class="sect3" lang="en"><div class="titlepage"><div><div><h4 class="title"><a name="Optional__Whois_Onlin"></a>Optional: Who's Online</h4></div></div></div><div class="segmentedlist"><table border="1" cellpadding="3" cellspacing="0" width="90%"><tr><th width="15%">Feature</th><th width="8%">Status</th><th width="77%">Description</th></tr><thead><tr><th>EXT-AUTH-27</th></tr></thead><tbody><tr class="seglistitem"><td class="seg">EXT-AUTH-27</td><td class="seg">B</td><td class="seg">Who's online list</td></tr></tbody></table></div><p>While we're touching the session handling code, anyway, it
+</pre></div><div class="sect3" lang="en"><div class="titlepage"><div><div><h4 class="title"><a name="Optional__Whois_Onlin"></a>Optional: Who's Online</h4></div></div><div></div></div><div class="segmentedlist"><table border="1" cellpadding="3" cellspacing="0" width="90%"><tr><th width="15%">Feature</th><th width="8%">Status</th><th width="77%">Description</th></tr><thead><tr><th>EXT-AUTH-27</th></tr></thead><tbody><tr><td>EXT-AUTH-27</td><td>B</td><td>Who's online list</td></tr></tbody></table></div><p>While we're touching the session handling code, anyway, it
 would be nice to add a feature to show who's currently online, a
 nice real-time collaboration feature frequently requested by
 members of the community. This is particularly interesting when
@@ -313,16 +314,16 @@
 which authenticated users have requested pags on the site in the
 last x minutes (typically about 5), and thus are considered to be
 currently online. There's nothing more to it. This lets us display
-a list of "active users" somewhere on the site, and make their name
+a list of &quot;active users&quot; somewhere on the site, and make their name
 a link to a real-time chat service like Jabber.</p><p>We've already made the changes necessary to
 security-procs.tcl to do this on an earlier project, but haven't
 quite finished the work and put it back into the tree.</p></div><div class="sect3" lang="en"><div class="titlepage"><div><div><h4 class="title"><a name="Optional__Subsite-level_configuratio"></a>Optional:
-Subsite-level configuration</h4></div></div></div><div class="segmentedlist"><table border="1" cellpadding="3" cellspacing="0" width="90%"><tr><th width="15%">Feature</th><th width="8%">Status</th><th width="77%">Description</th></tr><thead><tr><th>EXT-AUTH-28</th></tr></thead><tbody><tr class="seglistitem"><td class="seg">EXT-AUTH-28</td><td class="seg"></td><td class="seg">implement subsite-level config</td></tr></tbody></table></div><p>If we want to, we could let subsite administrators configure
+Subsite-level configuration</h4></div></div><div></div></div><div class="segmentedlist"><table border="1" cellpadding="3" cellspacing="0" width="90%"><tr><th width="15%">Feature</th><th width="8%">Status</th><th width="77%">Description</th></tr><thead><tr><th>EXT-AUTH-28</th></tr></thead><tbody><tr><td>EXT-AUTH-28</td><td></td><td>implement subsite-level config</td></tr></tbody></table></div><p>If we want to, we could let subsite administrators configure
 the login process for that particular subsite. This would probably
 only entail letting the subsite admin leave out certain authorities
 defined site-wide, and change the sort order.</p><p>I think we should leave this out until we have a use case for
 it, someone who'd need it.</p></div><div class="sect3" lang="en"><div class="titlepage"><div><div><h4 class="title"><a name="Future__Making_the_Authentication_API_itself"></a>Future:
-Making the Authentication API itself a service contract</h4></div></div></div><div class="segmentedlist"><table border="1" cellpadding="3" cellspacing="0" width="90%"><tr><th width="15%">Feature</th><th width="8%">Status</th><th width="77%">Description</th></tr><thead><tr><th>EXT-AUTH-32</th></tr></thead><tbody><tr class="seglistitem"><td class="seg">EXT-AUTH-32</td><td class="seg">A</td><td class="seg">Parameters for Service Contract Implementation</td></tr><tr class="seglistitem"><td class="seg">EXT-AUTH-35</td><td class="seg">A</td><td class="seg">Make the Authentication API a service contract</td></tr></tbody></table></div><p>For completely free-form authentication logic and mechanisms,
+Making the Authentication API itself a service contract</h4></div></div><div></div></div><div class="segmentedlist"><table border="1" cellpadding="3" cellspacing="0" width="90%"><tr><th width="15%">Feature</th><th width="8%">Status</th><th width="77%">Description</th></tr><thead><tr><th>EXT-AUTH-32</th></tr></thead><tbody><tr><td>EXT-AUTH-32</td><td>A</td><td>Parameters for Service Contract Implementation</td></tr><tr><td>EXT-AUTH-35</td><td>A</td><td>Make the Authentication API a service contract</td></tr></tbody></table></div><p>For completely free-form authentication logic and mechanisms,
 something like Andrew Grumet's
 <a href="http://openacs.org/new-file-storage/download/oacs-pam.html?version_id=687" target="_top">Pluggable
 Authentication for OACS Draft</a> is interesting. He's
@@ -333,10 +334,10 @@
 people are going to want to use a username/password-based scheme,
 and having easy configuration through a web UI is more important
 than total flexibility at this point.</p><p>Besides, we can always do this in the future, by letting the
-public Authentication API (<code class="literal">auth::require_login</code>
-and <code class="literal">auth::authenticate</code>) be implemented through a
+public Authentication API (<tt class="literal">auth::require_login</tt>
+and <tt class="literal">auth::authenticate</tt>) be implemented through a
 service contract.</p></div><div class="sect3" lang="en"><div class="titlepage"><div><div><h4 class="title"><a name="Future__Authenticating_against_multiple_serv"></a>Future:
-Authenticating against multiple servers simultaneously</h4></div></div></div><div class="segmentedlist"><table border="1" cellpadding="3" cellspacing="0" width="90%"><tr><th width="15%">Feature</th><th width="8%">Status</th><th width="77%">Description</th></tr><thead><tr><th>EXT-AUTH-36</th></tr></thead><tbody><tr class="seglistitem"><td class="seg">EXT-AUTH-36</td><td class="seg">A</td><td class="seg">Authenticate against multiple servers</td></tr></tbody></table></div><p>Both OKI and OpenACS supports a form of stacking, where you
+Authenticating against multiple servers simultaneously</h4></div></div><div></div></div><div class="segmentedlist"><table border="1" cellpadding="3" cellspacing="0" width="90%"><tr><th width="15%">Feature</th><th width="8%">Status</th><th width="77%">Description</th></tr><thead><tr><th>EXT-AUTH-36</th></tr></thead><tbody><tr><td>EXT-AUTH-36</td><td>A</td><td>Authenticate against multiple servers</td></tr></tbody></table></div><p>Both OKI and OpenACS supports a form of stacking, where you
 can be logged into multiple authorities at the same time. This is
 useful if, for example, you need to get login tokens such as
 Kerberos tickets for access to shared resources.</p><p>I can see the value in this, but for simplicity's sake, I'm
@@ -350,15 +351,15 @@
 etc. But at the moment, we don't have any users of such things that
 are ready. We have some who are on the steps, but let's wait till
 they're there.</p></div><div class="sect3" lang="en"><div class="titlepage"><div><div><h4 class="title"><a name="Implement_Specific_Driver"></a>Implement
-Specific Drivers</h4></div></div></div><div class="segmentedlist"><table border="1" cellpadding="3" cellspacing="0" width="90%"><tr><th width="15%">Feature</th><th width="8%">Status</th><th width="77%">Description</th></tr><thead><tr><th>Implement specific drivers</th></tr></thead><tbody><tr class="seglistitem"><td class="seg">EXT-AUTH-09</td><td class="seg">A</td><td class="seg">Create Auth. drivers for Local Authority</td></tr><tr class="seglistitem"><td class="seg">EXT-AUTH-10</td><td class="seg">A</td><td class="seg">Create Acct. Creation driver for Local Authority</td></tr><tr class="seglistitem"><td class="seg">EXT-AUTH-11</td><td class="seg">A</td><td class="seg">Create Auth. driver for PAM</td></tr><tr class="seglistitem"><td class="seg">EXT-AUTH-12</td><td class="seg">X</td><td class="seg"><span class="emphasis"><em>Create Acct. Creation driver for PAM - this
-          functionality is explicitly excluded from PAM</em></span></td></tr><tr class="seglistitem"><td class="seg">EXT-AUTH-13</td><td class="seg">A</td><td class="seg">Create Acct. Creation driver for LDAP</td></tr><tr class="seglistitem"><td class="seg">EXT-AUTH-14</td><td class="seg">A</td><td class="seg">Create Auth. driver for LDAP</td></tr></tbody></table></div><p>We'll need drivers for:</p><div class="itemizedlist"><ul type="disc"><li><p>Operating system (Linux/Solaris) PAM: Delegate to the
+Specific Drivers</h4></div></div><div></div></div><div class="segmentedlist"><table border="1" cellpadding="3" cellspacing="0" width="90%"><tr><th width="15%">Feature</th><th width="8%">Status</th><th width="77%">Description</th></tr><thead><tr><th>Implement specific drivers</th></tr></thead><tbody><tr><td>EXT-AUTH-09</td><td>A</td><td>Create Auth. drivers for Local Authority</td></tr><tr><td>EXT-AUTH-10</td><td>A</td><td>Create Acct. Creation driver for Local Authority</td></tr><tr><td>EXT-AUTH-11</td><td>A</td><td>Create Auth. driver for PAM</td></tr><tr><td>EXT-AUTH-12</td><td>X</td><td><span class="emphasis"><em>Create Acct. Creation driver for PAM - this
+          functionality is explicitly excluded from PAM</em></span></td></tr><tr><td>EXT-AUTH-13</td><td>A</td><td>Create Acct. Creation driver for LDAP</td></tr><tr><td>EXT-AUTH-14</td><td>A</td><td>Create Auth. driver for LDAP</td></tr></tbody></table></div><p>We'll need drivers for:</p><div class="itemizedlist"><ul type="disc"><li><p>Operating system (Linux/Solaris) PAM: Delegate to the
           operating system, which can then talk to RADIUS, LDAP, whatever.
           This is convenient because there'll be plenty of drivers for the OS
           PAM level, so we don't have to write them all ourselves. The
           downside is that we can't do things like account creation, password
           management, real-time account synchronization, etc., not supported
           by PAM (I'm not entirely sure what is and is not
-          supported).</p></li><li><p>RADIUS</p></li><li><p>LDAP</p></li></ul></div><div class="sect4" lang="en"><div class="titlepage"><div><div><h5 class="title"><a name="RADIU"></a>RADIUS</h5></div></div></div><p>RADIUS is a simple username/password-type authentication
+          supported).</p></li><li><p>RADIUS</p></li><li><p>LDAP</p></li></ul></div><div class="sect4" lang="en"><div class="titlepage"><div><div><h5 class="title"><a name="RADIU"></a>RADIUS</h5></div></div><div></div></div><p>RADIUS is a simple username/password-type authentication
 server.</p><p>It also supports sending a challenge to which the user must
 respond with the proper answer (e.g. mother's maiden name, or could
 be additional password), but we will not support this
@@ -367,12 +368,12 @@
 in Python</a> can be found in the
 <a href="http://exuserfolder.sourceforge.net/" target="_top">exUserFolder
 module</a> for Zope
-(<a href="http://sourceforge.net/docman/display_doc.php?docid=7238&amp;group_id=36318" target="_top">documentation</a>).</p></div></div></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="Feedbac"></a>Feedback</h3></div></div></div><p>We'd really appreciate feedback on this proposal. Please
+(<a href="http://sourceforge.net/docman/display_doc.php?docid=7238&amp;group_id=36318" target="_top">documentation</a>).</p></div></div></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="Feedbac"></a>Feedback</h3></div></div><div></div></div><p>We'd really appreciate feedback on this proposal. Please
 follow up at
 <a href="http://openacs.org/forums/message-view?message_id=97341" target="_top">this
-openacs.org forums thread</a>.</p></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="Reference"></a>References</h3></div></div></div><div class="itemizedlist"><ul type="disc"><li><p>      <a href="http://ims.edna.edu.au/enterprise/" target="_top">IMS Enterprise</a></p></li><li><p><a href="http://openacs.org/projects/openacs/packages/ex-auth/" target="_top">Threads
+openacs.org forums thread</a>.</p></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="Reference"></a>References</h3></div></div><div></div></div><div class="itemizedlist"><ul type="disc"><li><p>      <a href="http://ims.edna.edu.au/enterprise/" target="_top">IMS Enterprise</a></p></li><li><p><a href="http://openacs.org/projects/openacs/packages/ex-auth/" target="_top">Threads
 and links</a> collected by Carl Blesius.</p></li><li><p><a href="http://java.sun.com/security/jaas/doc/pam.html" target="_top">Solaris/Linux
 PAM specification</a></p></li><li><p><a href="http://openacs.org/new-file-storage/download/oacs-pam.html?version_id=687" target="_top">Draft
 Proposal</a> by Andrew Grumet.</p></li><li><p><a href="http://www.yale.edu/tp/auth/" target="_top">Yale
 CAS</a>, a centrl authentication service a' la
-        Passport.</p></li></ul></div></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="ext-auth-revision-history"></a>Revision History</h3></div></div></div><div class="informaltable"><table cellspacing="0" border="1"><colgroup><col><col><col><col></colgroup><tbody><tr><td><span class="strong"><strong>Document Revision #</strong></span></td><td><span class="strong"><strong>Action Taken, Notes</strong></span></td><td><span class="strong"><strong>When?</strong></span></td><td><span class="strong"><strong>By Whom?</strong></span></td></tr><tr><td>1</td><td>Updated work-in-progress for consortium-sponsored ext-auth work at Collaboraid.</td><td>20 Aug 2003</td><td>Joel Aufrecht</td></tr></tbody></table></div></div></div><div class="navfooter"><hr><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="bootstrap-acs.html">Prev</a> </td><td width="20%" align="center"><a accesskey="h" href="index.html">Home</a></td><td width="40%" align="right"> <a accesskey="n" href="releasing-openacs.html">Next</a></td></tr><tr><td width="40%" align="left">Bootstrapping OpenACS </td><td width="20%" align="center"><a accesskey="u" href="kernel-doc.html">Up</a></td><td width="40%" align="right"> Chapter�16.�Releasing OpenACS</td></tr></table><hr><address><a href="mailto:docs@openacs.org">docs@openacs.org</a></address></div><a name="comments"></a><center><a href="http://openacs.org/doc/current/ext-auth-requirements.html#comments">View comments on this page at openacs.org</a></center></body></html>
+        Passport.</p></li></ul></div></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="ext-auth-revision-history"></a>Revision History</h3></div></div><div></div></div><div class="informaltable"><table cellspacing="0" border="1"><colgroup><col><col><col><col></colgroup><tbody><tr><td><span class="strong">Document Revision #</span></td><td><span class="strong">Action Taken, Notes</span></td><td><span class="strong">When?</span></td><td><span class="strong">By Whom?</span></td></tr><tr><td>1</td><td>Updated work-in-progress for consortium-sponsored ext-auth work at Collaboraid.</td><td>20 Aug 2003</td><td>Joel Aufrecht</td></tr></tbody></table></div></div></div><div class="navfooter"><hr><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="bootstrap-acs.html">Prev</a> </td><td width="20%" align="center"><a accesskey="h" href="index.html">Home</a></td><td width="40%" align="right"> <a accesskey="n" href="releasing-openacs.html">Next</a></td></tr><tr><td width="40%" align="left">Bootstrapping OpenACS </td><td width="20%" align="center"><a accesskey="u" href="kernel-doc.html">Up</a></td><td width="40%" align="right"> Chapter�16.�Releasing OpenACS</td></tr></table><hr><address><a href="mailto:docs@openacs.org">docs@openacs.org</a></address></div><a name="comments"></a><center><a href="http://openacs.org/doc/current/ext-auth-requirements.html#comments">View comments on this page at openacs.org</a></center></body></html>
Index: openacs-4/packages/acs-core-docs/www/filename.html
===================================================================
RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/filename.html,v
diff -u -r1.42 -r1.42.4.1
--- openacs-4/packages/acs-core-docs/www/filename.html	17 Jul 2006 05:38:31 -0000	1.42
+++ openacs-4/packages/acs-core-docs/www/filename.html	3 Feb 2008 12:07:38 -0000	1.42.4.1
@@ -1,4 +1,5 @@
-<html><head><meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"><title>Detailed Design Documentation Template</title><meta name="generator" content="DocBook XSL Stylesheets V1.70.1"><link rel="home" href="index.html" title="OpenACS Core Documentation"><link rel="up" href="doc-standards.html" title="Chapter�13.�Documentation Standards"><link rel="previous" href="nxml-mode.html" title="Using nXML mode in Emacs"><link rel="next" href="requirements-template.html" title="System/Application Requirements Template"><link rel="stylesheet" href="openacs.css" type="text/css"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><a href="http://openacs.org"><img src="/doc/images/alex.jpg" border="0" alt="Alex logo"></a><table width="100%" summary="Navigation header" border="0"><tr><td width="20%" align="left"><a accesskey="p" href="nxml-mode.html">Prev</a> </td><th width="60%" align="center">Chapter�13.�Documentation Standards</th><td width="20%" align="right"> <a accesskey="n" href="requirements-template.html">Next</a></td></tr></table><hr></div><div class="sect1" lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="filename"></a>Detailed Design Documentation Template</h2></div></div></div><p>By <a href="mailto:youremail@example.com" target="_top">You</a></p><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="yourpackage-design-start-note"></a>Start Note</h3></div></div></div><p>
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html><head><meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"><title>Detailed Design Documentation Template</title><meta name="generator" content="DocBook XSL Stylesheets V1.60.1"><link rel="home" href="index.html" title="OpenACS Core Documentation"><link rel="up" href="doc-standards.html" title="Chapter�13.�Documentation Standards"><link rel="previous" href="nxml-mode.html" title="Using nXML mode in Emacs"><link rel="next" href="requirements-template.html" title="System/Application Requirements Template"><link rel="stylesheet" href="openacs.css" type="text/css"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><a href="http://openacs.org"><img src="/doc/images/alex.jpg" border="0" alt="Alex logo"></a><table width="100%" summary="Navigation header" border="0"><tr><td width="20%" align="left"><a accesskey="p" href="nxml-mode.html">Prev</a> </td><th width="60%" align="center">Chapter�13.�Documentation Standards</th><td width="20%" align="right"> <a accesskey="n" href="requirements-template.html">Next</a></td></tr></table><hr></div><div class="sect1" lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="filename"></a>Detailed Design Documentation Template</h2></div></div><div></div></div><p>By <a href="mailto:youremail@example.com" target="_top">You</a></p><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="yourpackage-design-start-note"></a>Start Note</h3></div></div><div></div></div><p>
       <span class="emphasis"><em>NOTE: Some of the sections of this template may not apply to your
 	package, e.g. there may be no user-visible UI elements for a component
 	of the OpenACS Core.  Furthermore, it may be easier in some circumstances
@@ -10,19 +11,19 @@
 	your own judgment, consult with peers when possible, and adapt
 	intelligently.</em></span>
     </p><p>
-      <span class="emphasis"><em>Also, bear in mind <span class="strong"><strong>the audience</strong></span> for detailed design: fellow
+      <span class="emphasis"><em>Also, bear in mind <span class="strong">the audience</span> for detailed design: fellow
 	programmers who want to maintain/extend the software, AND parties
 	interested in evaluating software quality. </em></span>
-    </p></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="yourpackage-design-essentials"></a>Essentials</h3></div></div></div><p>
+    </p></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="yourpackage-design-essentials"></a>Essentials</h3></div></div><div></div></div><p>
       When applicable, each of the following items should receive its own link:
-    </p><div class="itemizedlist"><ul type="disc"><li><p> User directory </p></li><li><p> OpenACS administrator directory </p></li><li><p> Subsite administrator directory </p></li><li><p> Tcl script directory (link to the API browser page for the package)  </p></li><li><p> PL/SQL file (link to the API browser page for the package)  </p></li><li><p> Data model </p></li><li><p> Requirements document </p></li><li><p> ER diagram </p></li><li><p> Transaction flow diagram </p></li></ul></div></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="yourpackage-design-introduction"></a>Introduction</h3></div></div></div><p>
+    </p><div class="itemizedlist"><ul type="disc"><li><p> User directory </p></li><li><p> OpenACS administrator directory </p></li><li><p> Subsite administrator directory </p></li><li><p> Tcl script directory (link to the API browser page for the package)  </p></li><li><p> PL/SQL file (link to the API browser page for the package)  </p></li><li><p> Data model </p></li><li><p> Requirements document </p></li><li><p> ER diagram </p></li><li><p> Transaction flow diagram </p></li></ul></div></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="yourpackage-design-introduction"></a>Introduction</h3></div></div><div></div></div><p>
       This section should provide an overview of the package
       and address at least the following issues:
     </p><div class="itemizedlist"><ul type="disc"><li><p> What this package is intended to allow the user (or different
 	  classes of users) to accomplish.  </p></li><li><p> Within reasonable bounds, what this package is not intended to allow users to
 	  accomplish. </p></li><li><p> The application domains where this package is most likely to be of use.  </p></li><li><p> A high-level overview of how the package meets its
 	  requirements (which should have been documented elsewhere).  This
-	  is to include relevant material from the "features" section of the
+	  is to include relevant material from the &quot;features&quot; section of the
 	  cover sheet (the cover sheet is a wrapper doc with links to all
 	  other package docs). </p></li></ul></div><p>
       Also worthy of treatment in this section:
@@ -32,15 +33,15 @@
       Note: it's entirely possible that a discussion of what a package
       is not intended to do differs from a discussion of future
       improvements for the package.
-    </p></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="yourpackage-design-historical-consid"></a>Historical Considerations</h3></div></div></div><p>
+    </p></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="yourpackage-design-historical-consid"></a>Historical Considerations</h3></div></div><div></div></div><p>
       For a given set of requirements, typically many possible
       implementations and solutions exist.  Although eventually only one
       solution is implemented, a discussion of the alternative solutions
       canvassed - noting why they were rejected - proves helpful to both
       current and future developers.  All readers would be reminded as to
       why and how the particular solution developed over time, avoiding
       re-analysis of problems already solved.
-    </p></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="yourpackage-design-competitive-analysis"></a>Competitive Analysis</h3></div></div></div><p>
+    </p></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="yourpackage-design-competitive-analysis"></a>Competitive Analysis</h3></div></div><div></div></div><p>
       Although currently only a few package documentation pages contain a
       discussion of competing software, (e.g. chat, portals), this section
       should be present whenever such competition exists.
@@ -51,7 +52,7 @@
 	  lacks.  </p></li></ul></div><p>
       Note that such a discussion may differ from a discussion of a
       package's potential future improvements.
-    </p></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="yourpackage-design-design-tradeoffs"></a>Design Tradeoffs</h3></div></div></div><p>
+    </p></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="yourpackage-design-design-tradeoffs"></a>Design Tradeoffs</h3></div></div><div></div></div><p>
       No single design solution can optimize every desirable software
       attribute. For example, an increase in the security of a system will
       likely entail a decrease in its ease-of-use, and an increase in the
@@ -61,7 +62,7 @@
       should include a discussion of the tradeoffs involved with the design
       chosen, and the reasons for your choices. Some areas of importance to
       keep in mind are:
-    </p><p>Areas of interest to users:</p><div class="itemizedlist"><ul type="disc"><li><p> Performance: availability and efficiency  </p></li><li><p> Flexibility  </p></li><li><p> Interoperability  </p></li><li><p> Reliability and robustness  </p></li><li><p> Usability  </p></li></ul></div><p>Areas of interest to developers:</p><div class="itemizedlist"><ul type="disc"><li><p> Maintainability </p></li><li><p> Portability </p></li><li><p> Reusability </p></li><li><p> Testability </p></li></ul></div></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="yourpackage-design-api"></a>API</h3></div></div></div><p>
+    </p><p>Areas of interest to users:</p><div class="itemizedlist"><ul type="disc"><li><p> Performance: availability and efficiency  </p></li><li><p> Flexibility  </p></li><li><p> Interoperability  </p></li><li><p> Reliability and robustness  </p></li><li><p> Usability  </p></li></ul></div><p>Areas of interest to developers:</p><div class="itemizedlist"><ul type="disc"><li><p> Maintainability </p></li><li><p> Portability </p></li><li><p> Reusability </p></li><li><p> Testability </p></li></ul></div></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="yourpackage-design-api"></a>API</h3></div></div><div></div></div><p>
       Here's where you discuss the abstractions used by your package, such
       as the procedures encapsulating the legal transactions on the data
       model.  Explain the organization of procedures and their
@@ -79,10 +80,10 @@
       handle transactions, instead of encapsulating them via procedures).
       Experience has taught us that we need to focus on the API for
       maintainability of our systems in the face of constant change. 
-    </p></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="yourpackage-design-data-model"></a>Data Model Discussion</h3></div></div></div><p>
+    </p></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="yourpackage-design-data-model"></a>Data Model Discussion</h3></div></div><div></div></div><p>
       The data model discussion should do more than merely display the SQL
       code, since this information is already be available via a link in the
-      "essentials" section above.  Instead, there should be a high-level
+      &quot;essentials&quot; section above.  Instead, there should be a high-level
       discussion of how your data model meets your solution requirements:
       why the database entities were defined as they are, and what
       transactions you expect to occur. (There may be some overlap with the
@@ -93,10 +94,10 @@
 	  itself. </p></li><li><p> If a core service or other subsystem is being used (e.g., the
 	  new parties and groups, permissions, etc.) this should also be
 	  mentioned. </p></li><li><p> Any default permissions should be identified herein.  </p></li><li><p> Discuss any data model extensions which tie into other
-	  packages.  </p></li><li><p><span class="strong"><strong>Transactions</strong></span></p><p> Discuss modifications which the database may undergo from
+	  packages.  </p></li><li><p><span class="strong">Transactions</span></p><p> Discuss modifications which the database may undergo from
 	  your package. Consider grouping legal transactions according to
 	  the invoking user class, i.e. transactions by an OpenACS-admin, by
-	  subsite-admin, by a user, by a developer, etc.  </p></li></ul></div></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="yourpackage-design-ui"></a>User Interface</h3></div></div></div><p>
+	  subsite-admin, by a user, by a developer, etc.  </p></li></ul></div></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="yourpackage-design-ui"></a>User Interface</h3></div></div><div></div></div><p>
       In this section, discuss user interface issues and pages to be built;
       you can organize by the expected classes of users.  These may include:
     </p><div class="itemizedlist"><ul type="disc"><li><p> Developers</p></li><li><p> OpenACS administrators (previously known as site-wide administrators)</p></li><li><p> Subsite administrators</p></li><li><p> End users</p></li></ul></div><p>
@@ -107,32 +108,32 @@
     </p><p>
       <span class="emphasis"><em>Note: In order that developer documentation be uniform across
 	different system documents, these users should herein be designated as
-	"the developer," "the OpenACS-admin," "the sub-admin," and "the user,"
+	&quot;the developer,&quot; &quot;the OpenACS-admin,&quot; &quot;the sub-admin,&quot; and &quot;the user,&quot;
 	respectively. </em></span>
     </p><p>
       Finally, note that as our templating system becomes more entrenched
       within the OpenACS, this section's details are likely to shift from UI
       specifics to template interface specifics.
-    </p></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="yourpackage-design-config"></a>Configuration/Parameters</h3></div></div></div><p>
-      Under OpenACS 5.2.3rc1, parameters are set at two levels: at the global level by
+    </p></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="yourpackage-design-config"></a>Configuration/Parameters</h3></div></div><div></div></div><p>
+      Under OpenACS 5.4.0, parameters are set at two levels: at the global level by
       the OpenACS-admin, and at the subsite level by a sub-admin.  In this
       section, list and discuss both levels of parameters.
-    </p></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="yourpackage-design-future"></a>Future Improvements/Areas of Likely Change</h3></div></div></div><p>
+    </p></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="yourpackage-design-future"></a>Future Improvements/Areas of Likely Change</h3></div></div><div></div></div><p>
       If the system presently lacks useful/desirable features, note details
       here.  You could also comment on non-functional improvements to the
       package, such as usability.
     </p><p>
-      Note that a careful treatment of the earlier "competitive analysis"
+      Note that a careful treatment of the earlier &quot;competitive analysis&quot;
       section can greatly facilitate the documenting of this section.
-    </p></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="yourpackage-design-authors"></a>Authors</h3></div></div></div><p>
+    </p></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="yourpackage-design-authors"></a>Authors</h3></div></div><div></div></div><p>
       Although a system's data model file often contains this information,
       this isn't always the case.  Furthermore, data model files often
       undergo substantial revision, making it difficult to track down the
       system creator. An additional complication: package documentation may
       be authored by people not directly involved in coding.  Thus to avoid
       unnecessary confusion, include email links to the following roles as
       they may apply:
-    </p><div class="itemizedlist"><ul type="disc"><li><p> System creator</p></li><li><p> System owner</p></li><li><p> Documentation author</p></li></ul></div></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="yourpackage-design-revision-history"></a>Revision History</h3></div></div></div><p>
+    </p><div class="itemizedlist"><ul type="disc"><li><p> System creator</p></li><li><p> System owner</p></li><li><p> Documentation author</p></li></ul></div></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="yourpackage-design-revision-history"></a>Revision History</h3></div></div><div></div></div><p>
       <span class="emphasis"><em>The revision history table below is for this template - modify it
 	as needed for your actual design document.  </em></span>
     </p><div class="informaltable"><table cellspacing="0" border="1"><colgroup><col><col><col><col></colgroup><thead><tr><th>Document Revision #</th><th>Action Taken, Notes</th><th>When?</th><th>By Whom?</th></tr></thead><tbody><tr><td>0.3</td><td>Edited further, incorporated feedback from Michael Yoon</td><td>9/05/2000</td><td>Kai Wu</td></tr><tr><td>0.2</td><td>Edited</td><td>8/22/2000</td><td>Kai Wu</td></tr><tr><td>0.1</td><td>Creation</td><td>8/21/2000</td><td>Josh Finkler, Audrey McLoghlin</td></tr></tbody></table></div><div class="cvstag">($Id$)</div></div></div><div class="navfooter"><hr><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="nxml-mode.html">Prev</a> </td><td width="20%" align="center"><a accesskey="h" href="index.html">Home</a></td><td width="40%" align="right"> <a accesskey="n" href="requirements-template.html">Next</a></td></tr><tr><td width="40%" align="left">Using nXML mode in Emacs </td><td width="20%" align="center"><a accesskey="u" href="doc-standards.html">Up</a></td><td width="40%" align="right"> System/Application Requirements Template</td></tr></table><hr><address><a href="mailto:docs@openacs.org">docs@openacs.org</a></address></div><a name="comments"></a><center><a href="http://openacs.org/doc/current/filename.html#comments">View comments on this page at openacs.org</a></center></body></html>
Index: openacs-4/packages/acs-core-docs/www/for-everyone.html
===================================================================
RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/for-everyone.html,v
diff -u -r1.22 -r1.22.4.1
--- openacs-4/packages/acs-core-docs/www/for-everyone.html	17 Jul 2006 05:38:31 -0000	1.22
+++ openacs-4/packages/acs-core-docs/www/for-everyone.html	3 Feb 2008 12:07:38 -0000	1.22.4.1
@@ -1 +1,2 @@
-<html><head><meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"><title>Part�I.�OpenACS For Everyone</title><meta name="generator" content="DocBook XSL Stylesheets V1.70.1"><link rel="home" href="index.html" title="OpenACS Core Documentation"><link rel="up" href="index.html" title="OpenACS Core Documentation"><link rel="previous" href="index.html" title="OpenACS Core Documentation"><link rel="next" href="general-documents.html" title="Chapter�1.�High level information: What is OpenACS?"><link rel="stylesheet" href="openacs.css" type="text/css"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><a href="http://openacs.org"><img src="/doc/images/alex.jpg" border="0" alt="Alex logo"></a><table width="100%" summary="Navigation header" border="0"><tr><td width="20%" align="left"><a accesskey="p" href="index.html">Prev</a> </td><th width="60%" align="center"></th><td width="20%" align="right"> <a accesskey="n" href="general-documents.html">Next</a></td></tr></table><hr></div><div class="part" lang="en"><div class="titlepage"><div><div><h1 class="title"><a name="for-everyone"></a>Part�I.�OpenACS For Everyone</h1></div></div></div><div class="toc"><p><b>Table of Contents</b></p><dl><dt><span class="chapter"><a href="general-documents.html">1. High level information: What is OpenACS?</a></span></dt><dd><dl><dt><span class="sect1"><a href="openacs-overview.html">Overview</a></span></dt><dt><span class="sect1"><a href="release-notes.html">OpenACS Release Notes</a></span></dt></dl></dd></dl></div></div><div class="navfooter"><hr><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="index.html">Prev</a> </td><td width="20%" align="center"><a accesskey="h" href="index.html">Home</a></td><td width="40%" align="right"> <a accesskey="n" href="general-documents.html">Next</a></td></tr><tr><td width="40%" align="left">OpenACS Core Documentation </td><td width="20%" align="center"><a accesskey="u" href="index.html">Up</a></td><td width="40%" align="right"> Chapter�1.�High level information: What is OpenACS?</td></tr></table><hr><address><a href="mailto:docs@openacs.org">docs@openacs.org</a></address></div><a name="comments"></a><center><a href="http://openacs.org/doc/current/for-everyone.html#comments">View comments on this page at openacs.org</a></center></body></html>
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html><head><meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"><title>Part�I.�OpenACS For Everyone</title><meta name="generator" content="DocBook XSL Stylesheets V1.60.1"><link rel="home" href="index.html" title="OpenACS Core Documentation"><link rel="up" href="index.html" title="OpenACS Core Documentation"><link rel="previous" href="index.html" title="OpenACS Core Documentation"><link rel="next" href="general-documents.html" title="Chapter�1.�High level information: What is OpenACS?"><link rel="stylesheet" href="openacs.css" type="text/css"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><a href="http://openacs.org"><img src="/doc/images/alex.jpg" border="0" alt="Alex logo"></a><table width="100%" summary="Navigation header" border="0"><tr><td width="20%" align="left"><a accesskey="p" href="index.html">Prev</a> </td><th width="60%" align="center"></th><td width="20%" align="right"> <a accesskey="n" href="general-documents.html">Next</a></td></tr></table><hr></div><div class="part" lang="en"><div class="titlepage"><div><div><h1 class="title"><a name="for-everyone"></a>OpenACS For Everyone</h1></div></div><div></div></div><div class="toc"><p><b>Table of Contents</b></p><dl><dt>1. <a href="general-documents.html">High level information: What is OpenACS?</a></dt><dd><dl><dt><a href="openacs-overview.html">Overview</a></dt><dt><a href="release-notes.html">OpenACS Release Notes</a></dt></dl></dd></dl></div></div><div class="navfooter"><hr><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="index.html">Prev</a> </td><td width="20%" align="center"><a accesskey="h" href="index.html">Home</a></td><td width="40%" align="right"> <a accesskey="n" href="general-documents.html">Next</a></td></tr><tr><td width="40%" align="left">OpenACS Core Documentation </td><td width="20%" align="center"><a accesskey="u" href="index.html">Up</a></td><td width="40%" align="right"> Chapter�1.�High level information: What is OpenACS?</td></tr></table><hr><address><a href="mailto:docs@openacs.org">docs@openacs.org</a></address></div><a name="comments"></a><center><a href="http://openacs.org/doc/current/for-everyone.html#comments">View comments on this page at openacs.org</a></center></body></html>
Index: openacs-4/packages/acs-core-docs/www/form-builder.html
===================================================================
RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/form-builder.html,v
diff -u -r1.23 -r1.23.4.1
--- openacs-4/packages/acs-core-docs/www/form-builder.html	17 Jul 2006 05:38:31 -0000	1.23
+++ openacs-4/packages/acs-core-docs/www/form-builder.html	3 Feb 2008 12:07:38 -0000	1.23.4.1
@@ -1,29 +1,30 @@
-<html><head><meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"><title>Using Form Builder: building html forms dynamically</title><meta name="generator" content="DocBook XSL Stylesheets V1.70.1"><link rel="home" href="index.html" title="OpenACS Core Documentation"><link rel="up" href="dev-guide.html" title="Chapter�11.�Development Reference"><link rel="previous" href="programming-with-aolserver.html" title="Programming with AOLserver"><link rel="next" href="eng-standards.html" title="Chapter�12.�Engineering Standards"><link rel="stylesheet" href="openacs.css" type="text/css"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><a href="http://openacs.org"><img src="/doc/images/alex.jpg" border="0" alt="Alex logo"></a><table width="100%" summary="Navigation header" border="0"><tr><td width="20%" align="left"><a accesskey="p" href="programming-with-aolserver.html">Prev</a> </td><th width="60%" align="center">Chapter�11.�Development Reference</th><td width="20%" align="right"> <a accesskey="n" href="eng-standards.html">Next</a></td></tr></table><hr></div><div class="sect1" lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="form-builder"></a>Using Form Builder: building html forms dynamically</h2></div></div></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="ad-form-overview"></a>Overview</h3></div></div></div><div class="authorblurb"><div class="cvstag">($Id$)</div>
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html><head><meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"><title>Using Form Builder: building html forms dynamically</title><meta name="generator" content="DocBook XSL Stylesheets V1.60.1"><link rel="home" href="index.html" title="OpenACS Core Documentation"><link rel="up" href="dev-guide.html" title="Chapter�11.�Development Reference"><link rel="previous" href="programming-with-aolserver.html" title="Programming with AOLserver"><link rel="next" href="eng-standards.html" title="Chapter�12.�Engineering Standards"><link rel="stylesheet" href="openacs.css" type="text/css"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><a href="http://openacs.org"><img src="/doc/images/alex.jpg" border="0" alt="Alex logo"></a><table width="100%" summary="Navigation header" border="0"><tr><td width="20%" align="left"><a accesskey="p" href="programming-with-aolserver.html">Prev</a> </td><th width="60%" align="center">Chapter�11.�Development Reference</th><td width="20%" align="right"> <a accesskey="n" href="eng-standards.html">Next</a></td></tr></table><hr></div><div class="sect1" lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="form-builder"></a>Using Form Builder: building html forms dynamically</h2></div></div><div></div></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="ad-form-overview"></a>Overview</h3></div></div><div></div></div><div class="authorblurb"><div class="cvstag">($Id$)</div>
           OpenACS docs are written by the named authors, and may be edited
           by OpenACS documentation staff.
         </div><p>OpenACS has a form manager called ad_form. Ad_form has an
 adaptable UI. Error handling includes inline error reporting, and is customizable.
  However, ad_form can be tricky to use. In addition to this document,
  the ad_form <a href="http://openacs.org/api-doc/proc-view?proc=ad_form" target="_top">api
- documentation</a> is helpful.</p></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="multi-part-elements"></a>Multi-part Elements</h3></div></div></div><p>Some elements have more than one choice, or can submit more than one value.</p><div class="sect3" lang="en"><div class="titlepage"><div><div><h4 class="title"><a name="id1150418"></a>SELECT elements</h4></div></div></div><div class="orderedlist"><ol type="1"><li><p><b>Creating the form element.�</b>Populate a list of lists with values for the option list.</p><pre class="programlisting">set foo_options [db_list_of_lists foo_option_list "
+ documentation</a> is helpful.</p></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="multi-part-elements"></a>Multi-part Elements</h3></div></div><div></div></div><p>Some elements have more than one choice, or can submit more than one value.</p><div class="sect3" lang="en"><div class="titlepage"><div><div><h4 class="title"><a name="id2898725"></a>SELECT elements</h4></div></div><div></div></div><div class="orderedlist"><ol type="1"><li><p><b>Creating the form element.�</b>Populate a list of lists with values for the option list.</p><pre class="programlisting">set foo_options [db_list_of_lists foo_option_list &quot;
     select foo,
            foo_id
       from foos
-"]
-</pre><p>The variable <code class="computeroutput">foo_options</code> should resemble <code class="computeroutput">{{first foo} 1234} {{second foo} 1235}
-</code></p><p>Within ad_form, set up the element to use this list:</p><pre class="programlisting">{foo:text(select)
-        {label "Which Foo"}
+&quot;]
+</pre><p>The variable <tt class="computeroutput">foo_options</tt> should resemble <tt class="computeroutput">{{first foo} 1234} {{second foo} 1235}
+</tt></p><p>Within ad_form, set up the element to use this list:</p><pre class="programlisting">{foo:text(select)
+        {label &quot;Which Foo&quot;}
         {options $foo_options}
-    }</pre><p>This will result in a single name/value pair coming back in the submitted form.  Handle this within the same ad_form structure, in the <code class="computeroutput">-new_data</code> and <code class="computeroutput">-edit_data</code>.  In the example, it is available as <code class="computeroutput">$foo</code></p></li></ol></div><p>See also the 
-        <a href="http://www.w3.org/TR/html401/interact/forms.html#h-17.6" target="_top">W3C spec for "The SELECT, OPTGROUP, and OPTION elements"</a>.
+    }</pre><p>This will result in a single name/value pair coming back in the submitted form.  Handle this within the same ad_form structure, in the <tt class="computeroutput">-new_data</tt> and <tt class="computeroutput">-edit_data</tt>.  In the example, it is available as <tt class="computeroutput">$foo</tt></p></li></ol></div><p>See also the 
+        <a href="http://www.w3.org/TR/html401/interact/forms.html#h-17.6" target="_top">W3C spec for &quot;The SELECT, OPTGROUP, and OPTION elements&quot;</a>.
         </p></div></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="refreshing"></a>Using refreshes to pull additional information from the
-    database</h3></div></div></div><p>A situation you may run into often is where you want to pull
+    database</h3></div></div><div></div></div><p>A situation you may run into often is where you want to pull
     in form items from a sub-category when the first category is
     selected. Ad_form makes this fairly easy to do. In the definition
     of your form element, include an html section</p><pre class="programlisting">    {pm_task_id:integer(select),optional
-        {label "Subject"}
+        {label &quot;Subject&quot;}
         {options {$task_options}}
-        {html {onChange "document.form_name.__refreshing_p.value='1';submit()"}}
+        {html {onChange &quot;document.form_name.__refreshing_p.value='1';submit()&quot;}}
         {value $pm_task_id}
     }
     </pre><p>What this will do is set the value for pm_task_id and all the
@@ -38,17 +39,17 @@
     -on_refresh section of your ad_form. In that section, you'll get
     the values from the database, and set the values as so:</p><pre class="programlisting">    db_1row get_task_values { }
     template::element set_value form_name estimated_hours_work $estimated_hours_work
-    </pre></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="form-troubleshooting"></a>Troubleshooting</h3></div></div></div><p>A good way to troubleshoot when you're using ad_form is to
+    </pre></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="form-troubleshooting"></a>Troubleshooting</h3></div></div><div></div></div><p>A good way to troubleshoot when you're using ad_form is to
     add the following code at the top of the .tcl page (thanks Jerry
     Asher):</p><pre class="programlisting">
 ns_log notice it's my page!
 set mypage [ns_getform]
-if {[string equal "" $mypage]} {
+if {[string equal &quot;&quot; $mypage]} {
     ns_log notice no form was submitted on my page
 } else {
     ns_log notice the following form was submitted on my page
     ns_set print $mypage
 }
-    </pre></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="form-widgets"></a>Tips for form widgets</h3></div></div></div><p>Here are some tips for dealing with some of the form widgets:</p><p><a href="http://openacs.org/forums/message-view?message_id=106331" target="_top">Current widget</a></p></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="errors"></a>Common Errors</h3></div></div></div><p>Here are some common errors and what to do when you
-    encounter them:</p><div class="sect3" lang="en"><div class="titlepage"><div><div><h4 class="title"><a name="id1003222"></a>Error when selecting values</h4></div></div></div><p>This generally happens when there is an error in your
+    </pre></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="form-widgets"></a>Tips for form widgets</h3></div></div><div></div></div><p>Here are some tips for dealing with some of the form widgets:</p><p><a href="http://openacs.org/forums/message-view?message_id=106331" target="_top">Current widget</a></p></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="errors"></a>Common Errors</h3></div></div><div></div></div><p>Here are some common errors and what to do when you
+    encounter them:</p><div class="sect3" lang="en"><div class="titlepage"><div><div><h4 class="title"><a name="id3035220"></a>Error when selecting values</h4></div></div><div></div></div><p>This generally happens when there is an error in your
           query.</p></div></div></div><div class="navfooter"><hr><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="programming-with-aolserver.html">Prev</a> </td><td width="20%" align="center"><a accesskey="h" href="index.html">Home</a></td><td width="40%" align="right"> <a accesskey="n" href="eng-standards.html">Next</a></td></tr><tr><td width="40%" align="left">Programming with AOLserver </td><td width="20%" align="center"><a accesskey="u" href="dev-guide.html">Up</a></td><td width="40%" align="right"> Chapter�12.�Engineering Standards</td></tr></table><hr><address><a href="mailto:docs@openacs.org">docs@openacs.org</a></address></div><a name="comments"></a><center><a href="http://openacs.org/doc/current/form-builder.html#comments">View comments on this page at openacs.org</a></center></body></html>
Index: openacs-4/packages/acs-core-docs/www/general-documents.html
===================================================================
RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/general-documents.html,v
diff -u -r1.22 -r1.22.4.1
--- openacs-4/packages/acs-core-docs/www/general-documents.html	17 Jul 2006 05:38:31 -0000	1.22
+++ openacs-4/packages/acs-core-docs/www/general-documents.html	3 Feb 2008 12:07:38 -0000	1.22.4.1
@@ -1 +1,2 @@
-<html><head><meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"><title>Chapter�1.�High level information: What is OpenACS?</title><meta name="generator" content="DocBook XSL Stylesheets V1.70.1"><link rel="home" href="index.html" title="OpenACS Core Documentation"><link rel="up" href="for-everyone.html" title="Part�I.�OpenACS For Everyone"><link rel="previous" href="for-everyone.html" title="Part�I.�OpenACS For Everyone"><link rel="next" href="openacs-overview.html" title="Overview"><link rel="stylesheet" href="openacs.css" type="text/css"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><a href="http://openacs.org"><img src="/doc/images/alex.jpg" border="0" alt="Alex logo"></a><table width="100%" summary="Navigation header" border="0"><tr><td width="20%" align="left"><a accesskey="p" href="for-everyone.html">Prev</a> </td><th width="60%" align="center">Part�I.�OpenACS For Everyone</th><td width="20%" align="right"> <a accesskey="n" href="openacs-overview.html">Next</a></td></tr></table><hr></div><div class="chapter" lang="en"><div class="titlepage"><div><div><h2 class="title"><a name="general-documents"></a>Chapter�1.�High level information: What is OpenACS?</h2></div></div></div><div class="toc"><p><b>Table of Contents</b></p><dl><dt><span class="sect1"><a href="openacs-overview.html">Overview</a></span></dt><dt><span class="sect1"><a href="release-notes.html">OpenACS Release Notes</a></span></dt></dl></div></div><div class="navfooter"><hr><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="for-everyone.html">Prev</a> </td><td width="20%" align="center"><a accesskey="h" href="index.html">Home</a></td><td width="40%" align="right"> <a accesskey="n" href="openacs-overview.html">Next</a></td></tr><tr><td width="40%" align="left">Part�I.�OpenACS For Everyone </td><td width="20%" align="center"><a accesskey="u" href="for-everyone.html">Up</a></td><td width="40%" align="right"> Overview</td></tr></table><hr><address><a href="mailto:docs@openacs.org">docs@openacs.org</a></address></div><a name="comments"></a><center><a href="http://openacs.org/doc/current/general-documents.html#comments">View comments on this page at openacs.org</a></center></body></html>
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html><head><meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"><title>Chapter�1.�High level information: What is OpenACS?</title><meta name="generator" content="DocBook XSL Stylesheets V1.60.1"><link rel="home" href="index.html" title="OpenACS Core Documentation"><link rel="up" href="for-everyone.html" title="Part�I.�OpenACS For Everyone"><link rel="previous" href="for-everyone.html" title="Part�I.�OpenACS For Everyone"><link rel="next" href="openacs-overview.html" title="Overview"><link rel="stylesheet" href="openacs.css" type="text/css"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><a href="http://openacs.org"><img src="/doc/images/alex.jpg" border="0" alt="Alex logo"></a><table width="100%" summary="Navigation header" border="0"><tr><td width="20%" align="left"><a accesskey="p" href="for-everyone.html">Prev</a> </td><th width="60%" align="center">Part�I.�OpenACS For Everyone</th><td width="20%" align="right"> <a accesskey="n" href="openacs-overview.html">Next</a></td></tr></table><hr></div><div class="chapter" lang="en"><div class="titlepage"><div><div><h2 class="title"><a name="general-documents"></a>Chapter�1.�High level information: What is OpenACS?</h2></div></div><div></div></div><div class="toc"><p><b>Table of Contents</b></p><dl><dt><a href="openacs-overview.html">Overview</a></dt><dt><a href="release-notes.html">OpenACS Release Notes</a></dt></dl></div></div><div class="navfooter"><hr><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="for-everyone.html">Prev</a> </td><td width="20%" align="center"><a accesskey="h" href="index.html">Home</a></td><td width="40%" align="right"> <a accesskey="n" href="openacs-overview.html">Next</a></td></tr><tr><td width="40%" align="left">Part�I.�OpenACS For Everyone </td><td width="20%" align="center"><a accesskey="u" href="for-everyone.html">Up</a></td><td width="40%" align="right"> Overview</td></tr></table><hr><address><a href="mailto:docs@openacs.org">docs@openacs.org</a></address></div><a name="comments"></a><center><a href="http://openacs.org/doc/current/general-documents.html#comments">View comments on this page at openacs.org</a></center></body></html>
Index: openacs-4/packages/acs-core-docs/www/groups-design.html
===================================================================
RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/groups-design.html,v
diff -u -r1.27 -r1.27.4.1
--- openacs-4/packages/acs-core-docs/www/groups-design.html	17 Jul 2006 05:38:31 -0000	1.27
+++ openacs-4/packages/acs-core-docs/www/groups-design.html	3 Feb 2008 12:07:38 -0000	1.27.4.1
@@ -1,31 +1,32 @@
-<html><head><meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"><title>Groups Design</title><meta name="generator" content="DocBook XSL Stylesheets V1.70.1"><link rel="home" href="index.html" title="OpenACS Core Documentation"><link rel="up" href="kernel-doc.html" title="Chapter�15.�Kernel Documentation"><link rel="previous" href="groups-requirements.html" title="Groups Requirements"><link rel="next" href="subsites-requirements.html" title="Subsites Requirements"><link rel="stylesheet" href="openacs.css" type="text/css"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><a href="http://openacs.org"><img src="/doc/images/alex.jpg" border="0" alt="Alex logo"></a><table width="100%" summary="Navigation header" border="0"><tr><td width="20%" align="left"><a accesskey="p" href="groups-requirements.html">Prev</a> </td><th width="60%" align="center">Chapter�15.�Kernel Documentation</th><td width="20%" align="right"> <a accesskey="n" href="subsites-requirements.html">Next</a></td></tr></table><hr></div><div class="sect1" lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="groups-design"></a>Groups Design</h2></div></div></div><div class="authorblurb"><p>By <a href="http://planitia.org" target="_top">Rafael H. Schloming</a> and Mark Thomas</p>
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html><head><meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"><title>Groups Design</title><meta name="generator" content="DocBook XSL Stylesheets V1.60.1"><link rel="home" href="index.html" title="OpenACS Core Documentation"><link rel="up" href="kernel-doc.html" title="Chapter�15.�Kernel Documentation"><link rel="previous" href="groups-requirements.html" title="Groups Requirements"><link rel="next" href="subsites-requirements.html" title="Subsites Requirements"><link rel="stylesheet" href="openacs.css" type="text/css"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><a href="http://openacs.org"><img src="/doc/images/alex.jpg" border="0" alt="Alex logo"></a><table width="100%" summary="Navigation header" border="0"><tr><td width="20%" align="left"><a accesskey="p" href="groups-requirements.html">Prev</a> </td><th width="60%" align="center">Chapter�15.�Kernel Documentation</th><td width="20%" align="right"> <a accesskey="n" href="subsites-requirements.html">Next</a></td></tr></table><hr></div><div class="sect1" lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="groups-design"></a>Groups Design</h2></div></div><div></div></div><div class="authorblurb"><p>By <a href="http://planitia.org" target="_top">Rafael H. Schloming</a> and Mark Thomas</p>
           OpenACS docs are written by the named authors, and may be edited
           by OpenACS documentation staff.
-        </div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="groups-design-essentials"></a>Essentials</h3></div></div></div><div class="itemizedlist"><ul type="disc"><li><p>User directory</p></li><li><p>Sitewide administrator directory</p></li><li><p>Subsite administrator directory</p></li><li><p>TCL script directory</p></li><li><p><a href="groups-requirements.html">OpenACS 4 Groups Requirements</a></p></li><li><p>Data model</p></li><li><p>PL/SQL file </p><div class="itemizedlist"><ul type="circle"><li><p><a href="/doc/sql/display-sql?url=community-core-create.sql&amp;package_key=acs-kernel" target="_top">
-community-core-create.sql</a></p></li><li><p><a href="/doc/sql/display-sql?url=groups-create.sql&amp;package_key=acs-kernel" target="_top">groups-create.sql</a></p></li></ul></div></li><li><p>ER diagram</p></li><li><p>Transaction flow diagram</p></li></ul></div></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="groups-design-intro"></a>Introduction</h3></div></div></div><p>Almost all database-backed websites have users, and need to model the
+        </div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="groups-design-essentials"></a>Essentials</h3></div></div><div></div></div><div class="itemizedlist"><ul type="disc"><li><p>User directory</p></li><li><p>Sitewide administrator directory</p></li><li><p>Subsite administrator directory</p></li><li><p>TCL script directory</p></li><li><p><a href="groups-requirements.html">OpenACS 4 Groups Requirements</a></p></li><li><p>Data model</p></li><li><p>PL/SQL file </p><div class="itemizedlist"><ul type="circle"><li><p><a href="/doc/sql/display-sql?url=community-core-create.sql&amp;package_key=acs-kernel" target="_top">
+community-core-create.sql</a></p></li><li><p><a href="/doc/sql/display-sql?url=groups-create.sql&amp;package_key=acs-kernel" target="_top">groups-create.sql</a></p></li></ul></div></li><li><p>ER diagram</p></li><li><p>Transaction flow diagram</p></li></ul></div></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="groups-design-intro"></a>Introduction</h3></div></div><div></div></div><p>Almost all database-backed websites have users, and need to model the
 grouping of users. The OpenACS 4 Parties and Groups system is intended to provide
 the flexibility needed to model complex real-world organizational structures,
 particularly to support powerful subsite services; that is, where one OpenACS
 installation can support what appears to the user as distinct web services
-for different user communities.</p></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="groups-design-hist-considerations"></a>Historical Considerations</h3></div></div></div><p>The primary limitation of the OpenACS 3.x user group system is that it
-restricts the application developer to representing a "flat group"
-that contains only users: The <code class="computeroutput">user_groups</code> table may contain the
-<code class="computeroutput">group_id</code> of a parent group, but parent-child relationship
+for different user communities.</p></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="groups-design-hist-considerations"></a>Historical Considerations</h3></div></div><div></div></div><p>The primary limitation of the OpenACS 3.x user group system is that it
+restricts the application developer to representing a &quot;flat group&quot;
+that contains only users: The <tt class="computeroutput">user_groups</tt> table may contain the
+<tt class="computeroutput">group_id</tt> of a parent group, but parent-child relationship
 support is limited because it only allows one kind of relationship between
 groups to be represented. Moreover, the Oracle database's limited support
 for tree-like structures makes the queries over these relationships
 expensive.</p><p>In addition, the Module Scoping design in OpenACS 3.0 introduced a
 <span class="emphasis"><em>party</em></span> abstraction - a thing that is a person or a group of people -
 though not in the form of an explicit table. Rather, the triple of
-<code class="computeroutput">scope</code>, <code class="computeroutput">user_id</code>, and <code class="computeroutput">group_id</code> columns
+<tt class="computeroutput">scope</tt>, <tt class="computeroutput">user_id</tt>, and <tt class="computeroutput">group_id</tt> columns
 was used to identify the party. One disadvantage of this design convention is
 that it increases a data model's complexity by requiring the programmer
-to:</p><div class="itemizedlist"><ul type="disc"><li><p>add these three columns to each "scoped" table</p></li><li><p>define a multi-column check constraint to protect against data corruption
-(e.g., a row with a <code class="computeroutput">scope</code> value of "group" but a null
-<code class="computeroutput">group_id</code>)</p></li><li><p>perform extra checks in <code class="computeroutput">Tcl</code> and <code class="computeroutput">PL/SQL</code>
-functions and procedures to check both the <code class="computeroutput">user_id</code> and
-<code class="computeroutput">group_id</code> values</p></li></ul></div></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="groups-design-competitors"></a>Competitive Analysis</h3></div></div></div><p>...</p></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="groups-design-design-tradeoffs"></a>Design Tradeoffs</h3></div></div></div><p>The core of the Group Systems data model is quite simple, but it was
-designed in the hopes of modeling "real world" organizations which
+to:</p><div class="itemizedlist"><ul type="disc"><li><p>add these three columns to each &quot;scoped&quot; table</p></li><li><p>define a multi-column check constraint to protect against data corruption
+(e.g., a row with a <tt class="computeroutput">scope</tt> value of &quot;group&quot; but a null
+<tt class="computeroutput">group_id</tt>)</p></li><li><p>perform extra checks in <tt class="computeroutput">Tcl</tt> and <tt class="computeroutput">PL/SQL</tt>
+functions and procedures to check both the <tt class="computeroutput">user_id</tt> and
+<tt class="computeroutput">group_id</tt> values</p></li></ul></div></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="groups-design-competitors"></a>Competitive Analysis</h3></div></div><div></div></div><p>...</p></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="groups-design-design-tradeoffs"></a>Design Tradeoffs</h3></div></div><div></div></div><p>The core of the Group Systems data model is quite simple, but it was
+designed in the hopes of modeling &quot;real world&quot; organizations which
 can be complex graph structures. The Groups System only considers groups that
 can be modeled using directed acyclic graphs, but queries over these
 structures are still complex enough to slow the system down. Since almost
@@ -37,44 +38,44 @@
 without making the system too complex or too slow. The added triggers, views,
 and tables and will increase storage requirements and the insert and delete
 times in an effort to speed access time. The limited flexibility (no updates
-on membership) trades against the complexity of the code.</p></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="groups-design-data-model"></a>Data Model Discussion</h3></div></div></div><p>The Group System data model consists of the following tables:</p><div class="variablelist"><dl><dt><span class="term"><code class="computeroutput">parties</code>
+on membership) trades against the complexity of the code.</p></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="groups-design-data-model"></a>Data Model Discussion</h3></div></div><div></div></div><p>The Group System data model consists of the following tables:</p><div class="variablelist"><dl><dt><span class="term"><tt class="computeroutput">parties</tt>
 
 </span></dt><dd><p>The set of all defined parties: any <span class="emphasis"><em>person</em></span>, <span class="emphasis"><em>user</em></span>, or
-<span class="emphasis"><em>group</em></span> must have a corresponding row in this table.</p></dd><dt><span class="term"><code class="computeroutput">persons</code>
+<span class="emphasis"><em>group</em></span> must have a corresponding row in this table.</p></dd><dt><span class="term"><tt class="computeroutput">persons</tt>
 
 </span></dt><dd><p>The set of all defined persons. To allow easy sorting of persons, the
 name requirement <a href="groups-requirements.html#groups-requirements-30-10">30.10</a> is met by
-splitting the person's name into two columns: <code class="computeroutput">first_names</code> and
-<code class="computeroutput">last_name</code>.</p></dd><dt><span class="term"><code class="computeroutput">users</code>
+splitting the person's name into two columns: <tt class="computeroutput">first_names</tt> and
+<tt class="computeroutput">last_name</tt>.</p></dd><dt><span class="term"><tt class="computeroutput">users</tt>
 
 </span></dt><dd><p>The set of all registered users; this table includes information about
-the user's email address and the user's visits to the site.</p></dd><dt><span class="term"><code class="computeroutput">user_preferences</code>
+the user's email address and the user's visits to the site.</p></dd><dt><span class="term"><tt class="computeroutput">user_preferences</tt>
 
-</span></dt><dd><p>Preferences for the user.</p></dd><dt><span class="term"><code class="computeroutput">groups</code>
+</span></dt><dd><p>Preferences for the user.</p></dd><dt><span class="term"><tt class="computeroutput">groups</tt>
 
-</span></dt><dd><p>The set of all defined groups.</p></dd><dt><span class="term"><code class="computeroutput">group_types</code>
+</span></dt><dd><p>The set of all defined groups.</p></dd><dt><span class="term"><tt class="computeroutput">group_types</tt>
 
 </span></dt><dd><p>When a new type of group is created, this table holds additional
-knowledge level attributes for the group and its subtypes.</p></dd><dt><span class="term"><code class="computeroutput">membership_rels</code>
+knowledge level attributes for the group and its subtypes.</p></dd><dt><span class="term"><tt class="computeroutput">membership_rels</tt>
 
 </span></dt><dd><p>The set of direct membership relationships between a group and a
-party.</p></dd><dt><span class="term"><code class="computeroutput">group_member_index</code>
+party.</p></dd><dt><span class="term"><tt class="computeroutput">group_member_index</tt>
 
-</span></dt><dd><p>A mapping of a party <span class="strong"><strong>P</strong></span> to the groups
-{<span class="strong"><strong>G<sub>i</sub></strong></span>}the party is a member of; this mapping
-includes the type of relationship by including the appropriate<code class="computeroutput">rel_id</code>
-from the <code class="computeroutput">membership_rels</code> table.</p></dd><dt><span class="term"><code class="computeroutput">composition_rels</code>
+</span></dt><dd><p>A mapping of a party <span class="strong">P</span> to the groups
+{<span class="strong">G<sub>i</sub></span>}the party is a member of; this mapping
+includes the type of relationship by including the appropriate<tt class="computeroutput">rel_id</tt>
+from the <tt class="computeroutput">membership_rels</tt> table.</p></dd><dt><span class="term"><tt class="computeroutput">composition_rels</tt>
 
 </span></dt><dd><p>The set of direct component relationships between a group and another
-group.</p></dd><dt><span class="term"><code class="computeroutput">group_component_index</code>
+group.</p></dd><dt><span class="term"><tt class="computeroutput">group_component_index</tt>
 
-</span></dt><dd><p>A mapping of a group <span class="strong"><strong>G</strong></span>to the set of groups
-{<span class="strong"><strong>G<sub>i</sub></strong></span>} that <span class="strong"><strong>G</strong></span> is a component of;
+</span></dt><dd><p>A mapping of a group <span class="strong">G</span>to the set of groups
+{<span class="strong">G<sub>i</sub></span>} that <span class="strong">G</span> is a component of;
 this mapping includes the type of relationship by including the
-appropriate<code class="computeroutput">rel_id</code> from the <code class="computeroutput">composition_rels</code> table.</p></dd></dl></div><p>New groups are created through the <code class="computeroutput">group.new</code> constructor.
+appropriate<tt class="computeroutput">rel_id</tt> from the <tt class="computeroutput">composition_rels</tt> table.</p></dd></dl></div><p>New groups are created through the <tt class="computeroutput">group.new</tt> constructor.
 When a specialized type of group is required, the group type can be extended
 by an application developer. Membership constraints can be specified at
-creation time by passing a parent group to the constructor.</p><p>The <code class="computeroutput">membership_rels</code> and <code class="computeroutput">composition_rels</code> tables indicate
+creation time by passing a parent group to the constructor.</p><p>The <tt class="computeroutput">membership_rels</tt> and <tt class="computeroutput">composition_rels</tt> tables indicate
 a group's direct members and direct components; these tables do not
 provide a record of the members or components that are in the group by virtue
 of being a member or component of one of the group's component groups.
@@ -84,60 +85,60 @@
 queries responsive, the data model includes triggers (described in the next
 paragraph) which watch for changes in membership or composition and update
 tables that maintain the group party mappings, i.e.,
-<code class="computeroutput">group_member_index</code> and <code class="computeroutput">group_component_index</code>. One can think
-of these tables as a manually maintained index.</p><p>The following triggers keep the <code class="computeroutput">group_*_index</code> tables up to
-date:</p><div class="variablelist"><dl><dt><span class="term"><code class="computeroutput">membership_rels_in_tr</code>
+<tt class="computeroutput">group_member_index</tt> and <tt class="computeroutput">group_component_index</tt>. One can think
+of these tables as a manually maintained index.</p><p>The following triggers keep the <tt class="computeroutput">group_*_index</tt> tables up to
+date:</p><div class="variablelist"><dl><dt><span class="term"><tt class="computeroutput">membership_rels_in_tr</tt>
 
 </span></dt><dd><p>Is executed when a new group/member relationship is created (an insert on
-<code class="computeroutput">membership_rels</code>)</p></dd><dt><span class="term"><code class="computeroutput">membership_rels_del_tr</code>
+<tt class="computeroutput">membership_rels</tt>)</p></dd><dt><span class="term"><tt class="computeroutput">membership_rels_del_tr</tt>
 
 </span></dt><dd><p>Is executed when a group/member relationship is deleted (a delete on
-<code class="computeroutput">membership_rels</code>)</p></dd><dt><span class="term"><code class="computeroutput">composition_rels_in_tr</code>
+<tt class="computeroutput">membership_rels</tt>)</p></dd><dt><span class="term"><tt class="computeroutput">composition_rels_in_tr</tt>
 
 </span></dt><dd><p>Is executed when a new group/component relationship is created (an insert
-on <code class="computeroutput">composition_rels</code>)</p></dd><dt><span class="term"><code class="computeroutput">composition_rels_del_tr</code>
+on <tt class="computeroutput">composition_rels</tt>)</p></dd><dt><span class="term"><tt class="computeroutput">composition_rels_del_tr</tt>
 
 </span></dt><dd><p>Is executed when a group/component relationship is deleted (a delete on
-<code class="computeroutput">composition_rels</code>)</p></dd></dl></div><p>The data model provides the following views onto the
-<code class="computeroutput">group_member_index</code> and <code class="computeroutput">group_component_index</code> tables. No
-code outside of Groups System should modify the <code class="computeroutput">group_*_index</code>
-tables.</p><div class="variablelist"><dl><dt><span class="term"><code class="computeroutput">group_member_map</code>
+<tt class="computeroutput">composition_rels</tt>)</p></dd></dl></div><p>The data model provides the following views onto the
+<tt class="computeroutput">group_member_index</tt> and <tt class="computeroutput">group_component_index</tt> tables. No
+code outside of Groups System should modify the <tt class="computeroutput">group_*_index</tt>
+tables.</p><div class="variablelist"><dl><dt><span class="term"><tt class="computeroutput">group_member_map</tt>
 
 </span></dt><dd><p>A mapping of a party to the groups the party is a member of; this mapping
-includes the type of relationship by including the appropriate<code class="computeroutput">rel_id</code>
-from the <code class="computeroutput">membership_rels</code> table.</p></dd><dt><span class="term"><code class="computeroutput">group_approved_member_map</code>
+includes the type of relationship by including the appropriate<tt class="computeroutput">rel_id</tt>
+from the <tt class="computeroutput">membership_rels</tt> table.</p></dd><dt><span class="term"><tt class="computeroutput">group_approved_member_map</tt>
 
 </span></dt><dd><p>A mapping of a party to the groups the party is an approved member of
-(<code class="computeroutput">member_state</code> is 'approved'); this mapping includes the type
-of relationship by including the appropriate<code class="computeroutput">rel_id</code> from the
-<code class="computeroutput">membership_rels</code> table.</p></dd><dt><span class="term"><code class="computeroutput">group_distinct_member_map</code>
+(<tt class="computeroutput">member_state</tt> is 'approved'); this mapping includes the type
+of relationship by including the appropriate<tt class="computeroutput">rel_id</tt> from the
+<tt class="computeroutput">membership_rels</tt> table.</p></dd><dt><span class="term"><tt class="computeroutput">group_distinct_member_map</tt>
 
 </span></dt><dd><p>A person may appear in the group member map multiple times, for example,
 by being a member of two different groups that are both components of a third
-group. This view is strictly a mapping of <span class="strong"><strong>approved</strong></span> members
-to groups.</p></dd><dt><span class="term"><code class="computeroutput">group_component_map</code>
+group. This view is strictly a mapping of <span class="strong">approved</span> members
+to groups.</p></dd><dt><span class="term"><tt class="computeroutput">group_component_map</tt>
 
-</span></dt><dd><p>A mapping of a group <span class="strong"><strong>G</strong></span>to the set of groups
-{<span class="strong"><strong>G<sub>i</sub></strong></span>} group <span class="strong"><strong>G</strong></span> is a component of;
+</span></dt><dd><p>A mapping of a group <span class="strong">G</span>to the set of groups
+{<span class="strong">G<sub>i</sub></span>} group <span class="strong">G</span> is a component of;
 this mapping includes the type of relationship by including the
-appropriate<code class="computeroutput">rel_id</code> from the <code class="computeroutput">composition_rels</code> table.</p></dd><dt><span class="term"><code class="computeroutput">party_member_map</code>
+appropriate<tt class="computeroutput">rel_id</tt> from the <tt class="computeroutput">composition_rels</tt> table.</p></dd><dt><span class="term"><tt class="computeroutput">party_member_map</tt>
 
-</span></dt><dd><p>A mapping of a party <span class="strong"><strong>P</strong></span> to the set of parties
-{<span class="strong"><strong>P<sub>i</sub></strong></span>} party <span class="strong"><strong>P</strong></span> is a member
-of.</p></dd><dt><span class="term"><code class="computeroutput">party_approved_member_map</code>
+</span></dt><dd><p>A mapping of a party <span class="strong">P</span> to the set of parties
+{<span class="strong">P<sub>i</sub></span>} party <span class="strong">P</span> is a member
+of.</p></dd><dt><span class="term"><tt class="computeroutput">party_approved_member_map</tt>
 
-</span></dt><dd><p>A mapping of a party <span class="strong"><strong>P</strong></span> to the set of parties
-{<span class="strong"><strong>P<sub>i</sub></strong></span>} party <span class="strong"><strong>P</strong></span> is an
-<span class="strong"><strong>approved</strong></span> member of.</p></dd></dl></div></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="groups-design-api"></a>API</h3></div></div></div><p>
+</span></dt><dd><p>A mapping of a party <span class="strong">P</span> to the set of parties
+{<span class="strong">P<sub>i</sub></span>} party <span class="strong">P</span> is an
+<span class="strong">approved</span> member of.</p></dd></dl></div></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="groups-design-api"></a>API</h3></div></div><div></div></div><p>
 The API consists of tables and views and PL/SQL functions. 
-</p><div class="sect3" lang="en"><div class="titlepage"><div><div><h4 class="title"><a name="groups-design-tables-views"></a>Tables and Views</h4></div></div></div><p>The <code class="computeroutput">group_types</code> table is used to create new types of groups.</p><p>The <code class="computeroutput">group_member_map</code>, <code class="computeroutput">group_approved_member_map</code>,
-<code class="computeroutput">group_distinct_member_map</code>, <code class="computeroutput">group_component_map</code>,
-<code class="computeroutput">party_member_map</code>, and <code class="computeroutput">party_approved_member_map</code> views are
-used to query group membership and composition.</p></div><div class="sect3" lang="en"><div class="titlepage"><div><div><h4 class="title"><a name="groups-design-pl-sql-api"></a>PL/SQL API</h4></div></div></div><p><span class="strong"><strong>Person</strong></span></p><p><code class="computeroutput">person.new</code> creates a new person and returns the
-<code class="computeroutput">person_id</code>. The function must be given the full name of the person in
-two pieces: <code class="computeroutput">first_names</code> and <code class="computeroutput">last_name</code>. All other fields are
-optional and default to null except for <code class="computeroutput">object_type</code> which defaults
-to person and <code class="computeroutput">creation_date</code> which defaults to <code class="computeroutput">sysdate</code>. The
+</p><div class="sect3" lang="en"><div class="titlepage"><div><div><h4 class="title"><a name="groups-design-tables-views"></a>Tables and Views</h4></div></div><div></div></div><p>The <tt class="computeroutput">group_types</tt> table is used to create new types of groups.</p><p>The <tt class="computeroutput">group_member_map</tt>, <tt class="computeroutput">group_approved_member_map</tt>,
+<tt class="computeroutput">group_distinct_member_map</tt>, <tt class="computeroutput">group_component_map</tt>,
+<tt class="computeroutput">party_member_map</tt>, and <tt class="computeroutput">party_approved_member_map</tt> views are
+used to query group membership and composition.</p></div><div class="sect3" lang="en"><div class="titlepage"><div><div><h4 class="title"><a name="groups-design-pl-sql-api"></a>PL/SQL API</h4></div></div><div></div></div><p><span class="strong">Person</span></p><p><tt class="computeroutput">person.new</tt> creates a new person and returns the
+<tt class="computeroutput">person_id</tt>. The function must be given the full name of the person in
+two pieces: <tt class="computeroutput">first_names</tt> and <tt class="computeroutput">last_name</tt>. All other fields are
+optional and default to null except for <tt class="computeroutput">object_type</tt> which defaults
+to person and <tt class="computeroutput">creation_date</tt> which defaults to <tt class="computeroutput">sysdate</tt>. The
 interface for this function is:</p><pre class="programlisting">
 function person.new (
   person_id          persons.person_id%TYPE,
@@ -150,19 +151,19 @@
   first_names        persons.first_names%TYPE,
   last_name          persons.last_name%TYPE
 ) return persons.person_id%TYPE;
-</pre><p><code class="computeroutput">person.delete</code> deletes the person whose <code class="computeroutput">person_id</code> is
+</pre><p><tt class="computeroutput">person.delete</tt> deletes the person whose <tt class="computeroutput">person_id</tt> is
 passed to it. The interface for this procedure is:</p><pre class="programlisting">
 procedure person.delete (
   person_id     persons.person_id%TYPE
 );
-</pre><p><code class="computeroutput">person.name</code> returns the name of the person whose
-<code class="computeroutput">person_id</code> is passed to it. The interface for this function is:</p><pre class="programlisting">
+</pre><p><tt class="computeroutput">person.name</tt> returns the name of the person whose
+<tt class="computeroutput">person_id</tt> is passed to it. The interface for this function is:</p><pre class="programlisting">
 function person.name (
   person_id     persons.person_id%TYPE
 ) return varchar;
-</pre><p><span class="strong"><strong>User</strong></span></p><p><code class="computeroutput">acs_user.new</code> creates a new user and returns the <code class="computeroutput">user_id</code>.
+</pre><p><span class="strong">User</span></p><p><tt class="computeroutput">acs_user.new</tt> creates a new user and returns the <tt class="computeroutput">user_id</tt>.
 The function must be given the user's email address and the full name of
-the user in two pieces: <code class="computeroutput">first_names</code> and <code class="computeroutput">last_name</code>. All
+the user in two pieces: <tt class="computeroutput">first_names</tt> and <tt class="computeroutput">last_name</tt>. All
 other fields are optional. The interface for this function is:</p><pre class="programlisting">
 function acs_user.new (
   user_id            users.user_id%TYPE,
@@ -181,19 +182,19 @@
   screen_name        users.screen_name%TYPE,
   email_verified_p   users.email_verified_p%TYPE
 ) return users.user_id%TYPE;
-</pre><p><code class="computeroutput">acs_user.delete</code> deletes the user whose <code class="computeroutput">user_id</code> is passed
+</pre><p><tt class="computeroutput">acs_user.delete</tt> deletes the user whose <tt class="computeroutput">user_id</tt> is passed
 to it. The interface for this procedure is:</p><pre class="programlisting">
 procedure acs_user.delete (
   user_id       users.user_id%TYPE
 );
-</pre><p><code class="computeroutput">acs_user.receives_alerts_p</code> returns 't' if the user should
+</pre><p><tt class="computeroutput">acs_user.receives_alerts_p</tt> returns 't' if the user should
 receive email alerts and 'f' otherwise. The interface for this
 function is:</p><pre class="programlisting">
 function acs_user.receives_alerts_p (
   user_id       users.user_id%TYPE
 ) return varchar;
-</pre><p>Use the procedures <code class="computeroutput">acs_user.approve_email</code> and
-<code class="computeroutput">acs_user.unapprove_email</code> to specify whether the user's email
+</pre><p>Use the procedures <tt class="computeroutput">acs_user.approve_email</tt> and
+<tt class="computeroutput">acs_user.unapprove_email</tt> to specify whether the user's email
 address is valid. The interface for these procedures are:</p><pre class="programlisting">
 procedure acs_user.approve_email (
   user_id       users.user_id%TYPE
@@ -202,11 +203,11 @@
 procedure acs_user.unapprove_email (
   user_id       users.user_id%TYPE
 );
-</pre><p><span class="strong"><strong>Group</strong></span></p><p><code class="computeroutput">acs_group.new</code> creates a new group and returns the
-<code class="computeroutput">group_id</code>. All fields are optional and default to null except for
-<code class="computeroutput">object_type</code> which defaults to 'group',
-<code class="computeroutput">creation_date</code> which defaults to <code class="computeroutput">sysdate</code>, and
-<code class="computeroutput">group_name</code> which is required. The interface for
+</pre><p><span class="strong">Group</span></p><p><tt class="computeroutput">acs_group.new</tt> creates a new group and returns the
+<tt class="computeroutput">group_id</tt>. All fields are optional and default to null except for
+<tt class="computeroutput">object_type</tt> which defaults to 'group',
+<tt class="computeroutput">creation_date</tt> which defaults to <tt class="computeroutput">sysdate</tt>, and
+<tt class="computeroutput">group_name</tt> which is required. The interface for
 this function is:</p><pre class="programlisting">
 function acs_group.new (
   group_id           groups.group_id%TYPE,
@@ -218,21 +219,21 @@
   url                parties.url%TYPE,
   group_name         groups.group_name%TYPE
 ) return groups.group_id%TYPE;
-</pre><p><code class="computeroutput">acs_group.name</code> returns the name of the group whose
-<code class="computeroutput">group_id</code> is passed to it. The interface for this function is:</p><pre class="programlisting">
+</pre><p><tt class="computeroutput">acs_group.name</tt> returns the name of the group whose
+<tt class="computeroutput">group_id</tt> is passed to it. The interface for this function is:</p><pre class="programlisting">
 function acs_group.name (
   group_id      groups.group_id%TYPE
 ) return varchar;
-</pre><p><code class="computeroutput">acs_group.member_p</code> returns 't' if the specified party is
+</pre><p><tt class="computeroutput">acs_group.member_p</tt> returns 't' if the specified party is
 a member of the specified group. Returns 'f' otherwise. The interface
 for this function is:</p><pre class="programlisting">
 function acs_group.member_p (
   group_id      groups.group_id%TYPE,
   party_id      parties.party_id%TYPE,
 ) return char;
-</pre><p><span class="strong"><strong>Membership Relationship</strong></span></p><p><code class="computeroutput">membership_rel.new</code> creates a new membership relationship type
-between two parties and returns the relationship type's <code class="computeroutput">rel_id</code>.
-All fields are optional and default to null except for <code class="computeroutput">rel_type</code>
+</pre><p><span class="strong">Membership Relationship</span></p><p><tt class="computeroutput">membership_rel.new</tt> creates a new membership relationship type
+between two parties and returns the relationship type's <tt class="computeroutput">rel_id</tt>.
+All fields are optional and default to null except for <tt class="computeroutput">rel_type</tt>
 which defaults to membership_rel. The interface for this function is:</p><pre class="programlisting">
 function membership_rel.new (
   rel_id             membership_rels.rel_id%TYPE,
@@ -243,42 +244,42 @@
   creation_user      acs_objects.creation_user%TYPE,
   creation_ip        acs_objects.creation_ip%TYPE,
 ) return membership_rels.rel_id%TYPE;
-</pre><p><code class="computeroutput">membership_rel.ban</code> sets the <code class="computeroutput">member_state</code> of the given
-<code class="computeroutput">rel_id</code> to 'banned'. The interface for this procedure is:</p><pre class="programlisting">
+</pre><p><tt class="computeroutput">membership_rel.ban</tt> sets the <tt class="computeroutput">member_state</tt> of the given
+<tt class="computeroutput">rel_id</tt> to 'banned'. The interface for this procedure is:</p><pre class="programlisting">
 procedure membership_rel.ban (
   rel_id           membership_rels.rel_id%TYPE
 );
-</pre><p><code class="computeroutput">membership_rel.approve</code> sets the <code class="computeroutput">member_state</code> of the
-given <code class="computeroutput">rel_id</code> to 'approved'. The interface for this procedure
+</pre><p><tt class="computeroutput">membership_rel.approve</tt> sets the <tt class="computeroutput">member_state</tt> of the
+given <tt class="computeroutput">rel_id</tt> to 'approved'. The interface for this procedure
 is:</p><pre class="programlisting">
 procedure membership_rel.approve (
   rel_id           membership_rels.rel_id%TYPE
 );
-</pre><p><code class="computeroutput">membership_rel.reject</code> sets the <code class="computeroutput">member_state</code> of the given
-<code class="computeroutput">rel_id</code> to 'rejected. The interface for this procedure is:</p><pre class="programlisting">
+</pre><p><tt class="computeroutput">membership_rel.reject</tt> sets the <tt class="computeroutput">member_state</tt> of the given
+<tt class="computeroutput">rel_id</tt> to 'rejected. The interface for this procedure is:</p><pre class="programlisting">
 procedure membership_rel.reject (
   rel_id           membership_rels.rel_id%TYPE
 );
-</pre><p><code class="computeroutput">membership_rel.unapprove</code> sets the <code class="computeroutput">member_state</code> of the
-given <code class="computeroutput">rel_id</code> to an empty string ''. The interface for this
+</pre><p><tt class="computeroutput">membership_rel.unapprove</tt> sets the <tt class="computeroutput">member_state</tt> of the
+given <tt class="computeroutput">rel_id</tt> to an empty string ''. The interface for this
 procedure is:</p><pre class="programlisting">
 procedure membership_rel.unapprove (
   rel_id           membership_rels.rel_id%TYPE
 );
-</pre><p><code class="computeroutput">membership_rel.deleted</code> sets the <code class="computeroutput">member_state</code> of the
-given <code class="computeroutput">rel_id</code> to 'deleted'. The interface for this procedure
+</pre><p><tt class="computeroutput">membership_rel.deleted</tt> sets the <tt class="computeroutput">member_state</tt> of the
+given <tt class="computeroutput">rel_id</tt> to 'deleted'. The interface for this procedure
 is:</p><pre class="programlisting">
 procedure membership_rel.deleted (
   rel_id           membership_rels.rel_id%TYPE
 );
-</pre><p><code class="computeroutput">membership_rel.delete</code> deletes the given <code class="computeroutput">rel_id</code>. The
+</pre><p><tt class="computeroutput">membership_rel.delete</tt> deletes the given <tt class="computeroutput">rel_id</tt>. The
 interface for this procedure is:</p><pre class="programlisting">
 procedure membership_rel.delete (
   rel_id           membership_rels.rel_id%TYPE
 );
-</pre><p><span class="strong"><strong>Composition Relationship</strong></span></p><p><code class="computeroutput">composition_rel.new</code> creates a new composition relationship type
-and returns the relationship's <code class="computeroutput">rel_id</code>. All fields are optional
-and default to null except for <code class="computeroutput">rel_type</code> which defaults to
+</pre><p><span class="strong">Composition Relationship</span></p><p><tt class="computeroutput">composition_rel.new</tt> creates a new composition relationship type
+and returns the relationship's <tt class="computeroutput">rel_id</tt>. All fields are optional
+and default to null except for <tt class="computeroutput">rel_type</tt> which defaults to
 composition_rel. The interface for this function is:</p><pre class="programlisting">
 function membership_rel.new (
   rel_id             composition_rels.rel_id%TYPE,
@@ -288,18 +289,18 @@
   creation_user      acs_objects.creation_user%TYPE,
   creation_ip        acs_objects.creation_ip%TYPE,
 ) return composition_rels.rel_id%TYPE;
-</pre><p><code class="computeroutput">composition_rel.delete</code> deletes the given <code class="computeroutput">rel_id</code>. The
+</pre><p><tt class="computeroutput">composition_rel.delete</tt> deletes the given <tt class="computeroutput">rel_id</tt>. The
 interface for this procedure is:</p><pre class="programlisting">
 procedure membership_rel.delete (
   rel_id           composition_rels.rel_id%TYPE
 );
-</pre></div></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="groups-design-ui"></a>User Interface</h3></div></div></div><p>Describe the admin pages.</p></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="groups-design-config"></a>Configuration/Parameters</h3></div></div></div><p>...</p></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="groups-design-acc-tests"></a>Acceptance Tests</h3></div></div></div><p>...</p></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="groups-design-future"></a>Future Improvements/Areas of Likely Change</h3></div></div></div><p>...</p></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="groups-design-authors"></a>Authors</h3></div></div></div><div class="variablelist"><dl><dt><span class="term">System creator
+</pre></div></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="groups-design-ui"></a>User Interface</h3></div></div><div></div></div><p>Describe the admin pages.</p></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="groups-design-config"></a>Configuration/Parameters</h3></div></div><div></div></div><p>...</p></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="groups-design-acc-tests"></a>Acceptance Tests</h3></div></div><div></div></div><p>...</p></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="groups-design-future"></a>Future Improvements/Areas of Likely Change</h3></div></div><div></div></div><p>...</p></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="groups-design-authors"></a>Authors</h3></div></div><div></div></div><div class="variablelist"><dl><dt><span class="term">System creator
 
 </span></dt><dd><p><a href="mailto:rhs@mit.edu" target="_top">Rafael H. Schloming</a></p></dd><dt><span class="term">System owner
 
 </span></dt><dd><p><a href="mailto:rhs@mit.edu" target="_top">Rafael H. Schloming</a></p></dd><dt><span class="term">Documentation author
 
-</span></dt><dd><p>Mark Thomas</p></dd></dl></div></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="groups-design-rev-history"></a>Revision History</h3></div></div></div><div class="informaltable"><table cellspacing="0" border="1"><colgroup><col><col><col><col></colgroup><thead><tr><th><span class="strong"><strong>Document Revision #</strong></span></th><th><span class="strong"><strong>Action Taken, Notes</strong></span></th><th><span class="strong"><strong>When?</strong></span></th><th><span class="strong"><strong>By Whom?</strong></span></th></tr></thead><tbody><tr><td>0.1</td><td>Creation</td><td>08/22/2000</td><td><a href="mailto:rhs@mit.edu" target="_top">Rafael H. Schloming</a></td></tr><tr><td>0.2</td><td>Initial Revision</td><td>08/30/2000</td><td>
+</span></dt><dd><p>Mark Thomas</p></dd></dl></div></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="groups-design-rev-history"></a>Revision History</h3></div></div><div></div></div><div class="informaltable"><table cellspacing="0" border="1"><colgroup><col><col><col><col></colgroup><thead><tr><th><span class="strong">Document Revision #</span></th><th><span class="strong">Action Taken, Notes</span></th><th><span class="strong">When?</span></th><th><span class="strong">By Whom?</span></th></tr></thead><tbody><tr><td>0.1</td><td>Creation</td><td>08/22/2000</td><td><a href="mailto:rhs@mit.edu" target="_top">Rafael H. Schloming</a></td></tr><tr><td>0.2</td><td>Initial Revision</td><td>08/30/2000</td><td>
 Mark Thomas
 </td></tr><tr><td>0.3</td><td>Additional revisions; tried to clarify membership/compostion</td><td>09/08/2000</td><td>
 Mark Thomas
Index: openacs-4/packages/acs-core-docs/www/groups-requirements.html
===================================================================
RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/groups-requirements.html,v
diff -u -r1.27 -r1.27.4.1
--- openacs-4/packages/acs-core-docs/www/groups-requirements.html	17 Jul 2006 05:38:31 -0000	1.27
+++ openacs-4/packages/acs-core-docs/www/groups-requirements.html	3 Feb 2008 12:07:38 -0000	1.27.4.1
@@ -1,59 +1,60 @@
-<html><head><meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"><title>Groups Requirements</title><meta name="generator" content="DocBook XSL Stylesheets V1.70.1"><link rel="home" href="index.html" title="OpenACS Core Documentation"><link rel="up" href="kernel-doc.html" title="Chapter�15.�Kernel Documentation"><link rel="previous" href="permissions-design.html" title="Permissions Design"><link rel="next" href="groups-design.html" title="Groups Design"><link rel="stylesheet" href="openacs.css" type="text/css"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><a href="http://openacs.org"><img src="/doc/images/alex.jpg" border="0" alt="Alex logo"></a><table width="100%" summary="Navigation header" border="0"><tr><td width="20%" align="left"><a accesskey="p" href="permissions-design.html">Prev</a> </td><th width="60%" align="center">Chapter�15.�Kernel Documentation</th><td width="20%" align="right"> <a accesskey="n" href="groups-design.html">Next</a></td></tr></table><hr></div><div class="sect1" lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="groups-requirements"></a>Groups Requirements</h2></div></div></div><div class="authorblurb"><p>By <a href="http://planitia.org" target="_top">Rafael H. Schloming</a>, Mark Thomas</p>
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html><head><meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"><title>Groups Requirements</title><meta name="generator" content="DocBook XSL Stylesheets V1.60.1"><link rel="home" href="index.html" title="OpenACS Core Documentation"><link rel="up" href="kernel-doc.html" title="Chapter�15.�Kernel Documentation"><link rel="previous" href="permissions-design.html" title="Permissions Design"><link rel="next" href="groups-design.html" title="Groups Design"><link rel="stylesheet" href="openacs.css" type="text/css"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><a href="http://openacs.org"><img src="/doc/images/alex.jpg" border="0" alt="Alex logo"></a><table width="100%" summary="Navigation header" border="0"><tr><td width="20%" align="left"><a accesskey="p" href="permissions-design.html">Prev</a> </td><th width="60%" align="center">Chapter�15.�Kernel Documentation</th><td width="20%" align="right"> <a accesskey="n" href="groups-design.html">Next</a></td></tr></table><hr></div><div class="sect1" lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="groups-requirements"></a>Groups Requirements</h2></div></div><div></div></div><div class="authorblurb"><p>By <a href="http://planitia.org" target="_top">Rafael H. Schloming</a>, Mark Thomas</p>
           OpenACS docs are written by the named authors, and may be edited
           by OpenACS documentation staff.
-        </div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="groups-requirements-intro"></a>Introduction</h3></div></div></div><p>Almost all database-backed websites have users, and need to model the
+        </div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="groups-requirements-intro"></a>Introduction</h3></div></div><div></div></div><p>Almost all database-backed websites have users, and need to model the
       grouping of users. The OpenACS 4 Parties and Groups system is intended to provide
       the flexibility needed to model complex real-world organizational structures,
       particularly to support powerful subsite services; that is, where one OpenACS
       installation can support what appears to the user as distinct web services
-      for different user communities.</p></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="groups-requirements-vision"></a>Vision Statement</h3></div></div></div><p>A powerful web service that can meet the needs of large enterprises must
+      for different user communities.</p></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="groups-requirements-vision"></a>Vision Statement</h3></div></div><div></div></div><p>A powerful web service that can meet the needs of large enterprises must
       be able to model the the real world's very rich organizational structures
       and many ways of decomposing the same organization. For example, a
       corporation can be broken into structures (the corporation, its divisions,
       and their departments) or regions (the Boston office, the LA office); a
       person who is employed by (is a member of) a specific department is also a
       member of the division and the corporation, and works at (is a member of, but
       in a different sense) a particular office. OpenACS's Parties and Groups
-      system will support such complex relations faithfully.</p><p><span class="strong"><strong>Historical Motivations</strong></span></p><p>The primary limitation of the OpenACS 3.x user group system is that it
-      restricts the application developer to representing a "flat group"
-      that contains only users: The <code class="computeroutput">user_groups</code> table may contain the
-      <code class="computeroutput">group_id</code> of a parent group, but parent-child relationship
+      system will support such complex relations faithfully.</p><p><span class="strong">Historical Motivations</span></p><p>The primary limitation of the OpenACS 3.x user group system is that it
+      restricts the application developer to representing a &quot;flat group&quot;
+      that contains only users: The <tt class="computeroutput">user_groups</tt> table may contain the
+      <tt class="computeroutput">group_id</tt> of a parent group, but parent-child relationship
       support is limited because it only allows one kind of relationship between
       groups to be represented. Moreover, the Oracle database's limited support
       for tree-like structures makes the queries over these relationships
       expensive.</p><p>In addition, the Module Scoping design in OpenACS 3.0 introduced a
       <span class="emphasis"><em>party</em></span> abstraction - a thing that is a person or a group of people -
       though not in the form of an explicit table. Rather, the triple of
-      <code class="computeroutput">scope</code>, <code class="computeroutput">user_id</code>, and <code class="computeroutput">group_id</code> columns
+      <tt class="computeroutput">scope</tt>, <tt class="computeroutput">user_id</tt>, and <tt class="computeroutput">group_id</tt> columns
       was used to identify the party. One disadvantage of this design convention is
       that it increases a data model's complexity by requiring the programmer
-      to:</p><div class="itemizedlist"><ul type="disc"><li><p>add these three columns to each "scoped" table</p></li><li><p>define a multi-column check constraint to protect against data corruption
-          (e.g., a row with a <code class="computeroutput">scope</code> value of "group" but a null
-          <code class="computeroutput">group_id</code>)</p></li><li><p>perform extra checks in <code class="computeroutput">Tcl</code> and <code class="computeroutput">PL/SQL</code>
-          functions and procedures to check both the <code class="computeroutput">user_id</code> and
-          <code class="computeroutput">group_id</code> values</p></li></ul></div><p>In sum, the goal of the <span class="strong"><strong>Parties and Groups</strong></span> system is to
+      to:</p><div class="itemizedlist"><ul type="disc"><li><p>add these three columns to each &quot;scoped&quot; table</p></li><li><p>define a multi-column check constraint to protect against data corruption
+          (e.g., a row with a <tt class="computeroutput">scope</tt> value of &quot;group&quot; but a null
+          <tt class="computeroutput">group_id</tt>)</p></li><li><p>perform extra checks in <tt class="computeroutput">Tcl</tt> and <tt class="computeroutput">PL/SQL</tt>
+          functions and procedures to check both the <tt class="computeroutput">user_id</tt> and
+          <tt class="computeroutput">group_id</tt> values</p></li></ul></div><p>In sum, the goal of the <span class="strong">Parties and Groups</span> system is to
       provide OpenACS programmers and site administrators with simple tools that fully
       describe the complex relationships that exist among groups in the real
-      world.</p></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="groups-requirements-user-scenarios"></a>User Scenarios</h3></div></div></div><p>Pat Developer has a client project and wants to model the company, its
+      world.</p></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="groups-requirements-user-scenarios"></a>User Scenarios</h3></div></div><div></div></div><p>Pat Developer has a client project and wants to model the company, its
       offices, its divisions, and its departments as groups and the employees as
-      users.</p></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="groups-requirements-system-overview"></a>System Overview</h3></div></div></div><p>We start with <span class="strong"><strong>Groups</strong></span>, which contain members; the
-      <span class="strong"><strong>member can be either a person or another group</strong></span> (i.e. a
+      users.</p></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="groups-requirements-system-overview"></a>System Overview</h3></div></div><div></div></div><p>We start with <span class="strong">Groups</span>, which contain members; the
+      <span class="strong">member can be either a person or another group</span> (i.e. a
       member is a party).</p><p>In addition to membership, the party and groups system defines a
-      <span class="strong"><strong>composition</strong></span> relationship that may exist between groups: A
-      group can be a <span class="strong"><strong>component</strong></span> of another group. The child group
+      <span class="strong">composition</span> relationship that may exist between groups: A
+      group can be a <span class="strong">component</span> of another group. The child group
       is called a <span class="emphasis"><em>component group</em></span>; the parent group is called a
-      <span class="emphasis"><em>composite group</em></span>.</p><p>A group <span class="strong"><strong>G<sub>c</sub></strong></span> can be a member and/or a component
-      of another group <span class="strong"><strong>G<sub>p</sub></strong></span>; the difference is in the way
-      the members of <span class="strong"><strong>G<sub>c</sub></strong></span> are related to
-      <span class="strong"><strong>G<sub>p</sub></strong></span>:</p><div class="itemizedlist"><ul type="disc"><li><p>If a party <span class="strong"><strong>P</strong></span> is a member (or a component) of
-          <span class="strong"><strong>G<sub>c</sub></strong></span> and if <span class="strong"><strong>G<sub>c</sub></strong></span> is a
-          component of <span class="strong"><strong>G<sub>p</sub></strong></span>, then <span class="strong"><strong>P</strong></span> is also
-          a member (or a component) of <span class="strong"><strong>G<sub>p</sub></strong></span></p></li><li><p>If a party <span class="strong"><strong>P</strong></span> is a member (or a component) of
-          <span class="strong"><strong>G<sub>c</sub></strong></span> and if <span class="strong"><strong>G<sub>c</sub></strong></span> is a
-          member of <span class="strong"><strong>G<sub>p</sub></strong></span>, then <span class="strong"><strong>no
-            relationship</strong></span> between <span class="strong"><strong>P</strong></span> and
-          <span class="strong"><strong>G<sub>p</sub></strong></span> exists as a result of the relationship between
-          <span class="strong"><strong>G<sub>p</sub></strong></span> and <span class="strong"><strong>G<sub>p</sub></strong></span>.</p></li></ul></div><p>Consider an example to make this less abstract: Pretend that the Sierra
+      <span class="emphasis"><em>composite group</em></span>.</p><p>A group <span class="strong">G<sub>c</sub></span> can be a member and/or a component
+      of another group <span class="strong">G<sub>p</sub></span>; the difference is in the way
+      the members of <span class="strong">G<sub>c</sub></span> are related to
+      <span class="strong">G<sub>p</sub></span>:</p><div class="itemizedlist"><ul type="disc"><li><p>If a party <span class="strong">P</span> is a member (or a component) of
+          <span class="strong">G<sub>c</sub></span> and if <span class="strong">G<sub>c</sub></span> is a
+          component of <span class="strong">G<sub>p</sub></span>, then <span class="strong">P</span> is also
+          a member (or a component) of <span class="strong">G<sub>p</sub></span></p></li><li><p>If a party <span class="strong">P</span> is a member (or a component) of
+          <span class="strong">G<sub>c</sub></span> and if <span class="strong">G<sub>c</sub></span> is a
+          member of <span class="strong">G<sub>p</sub></span>, then <span class="strong">no
+            relationship</span> between <span class="strong">P</span> and
+          <span class="strong">G<sub>p</sub></span> exists as a result of the relationship between
+          <span class="strong">G<sub>p</sub></span> and <span class="strong">G<sub>p</sub></span>.</p></li></ul></div><p>Consider an example to make this less abstract: Pretend that the Sierra
       Club is a <span class="emphasis"><em>member</em></span> of Greenpeace. The Sierra Club has chapters; each
       chapter is a <span class="emphasis"><em>component</em></span> of the Sierra Club. If Eddie Environmentalist
       is a member of the Massachusetts Chapter of the Sierra Club, Eddie is
@@ -66,158 +67,158 @@
       Massachusetts chapter), and between the Sierra Club and Greenpeace.</p><p>Membership requirements can vary from group to group. The parties and
       groups system must provide a base type that specifies the bare minimum
       necessary to join a group.</p><p>The parties and groups system must support constraints between a composite
-      group <span class="strong"><strong>G<sub>P</sub></strong></span> and any of its component groups,
-      <span class="strong"><strong>G<sub>C</sub></strong></span>. For example, the system should be able to
-      enforce a rule like: Do not allow a party <span class="strong"><strong>P</strong></span> to become a
-      member of <span class="strong"><strong>G<sub>C</sub></strong></span> unless <span class="strong"><strong>P</strong></span> is already
-      a member of <span class="strong"><strong>G<sub>P</sub></strong></span>.</p></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="groups-requirements-links"></a>Related Links</h3></div></div></div><div class="itemizedlist"><ul type="disc"><li><p><a href="groups-design.html">OpenACS 4 Groups Design</a></p></li></ul></div></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="groups-requirements-data-model"></a>Requirements: Data Model</h3></div></div></div><p>The data model for the parties and groups system must provide support for
-      the following types of entities:</p><div class="variablelist"><dl><dt><span class="term"><span class="strong"><strong>10.0 Parties</strong></span>
+      group <span class="strong">G<sub>P</sub></span> and any of its component groups,
+      <span class="strong">G<sub>C</sub></span>. For example, the system should be able to
+      enforce a rule like: Do not allow a party <span class="strong">P</span> to become a
+      member of <span class="strong">G<sub>C</sub></span> unless <span class="strong">P</span> is already
+      a member of <span class="strong">G<sub>P</sub></span>.</p></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="groups-requirements-links"></a>Related Links</h3></div></div><div></div></div><div class="itemizedlist"><ul type="disc"><li><p><a href="groups-design.html">OpenACS 4 Groups Design</a></p></li></ul></div></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="groups-requirements-data-model"></a>Requirements: Data Model</h3></div></div><div></div></div><p>The data model for the parties and groups system must provide support for
+      the following types of entities:</p><div class="variablelist"><dl><dt><span class="term"><span class="strong">10.0 Parties</span>
 
-        </span></dt><dd><p>A <span class="strong"><strong>party</strong></span> is an entity used to represent either a
-            <span class="emphasis"><em>group</em></span> or a <span class="emphasis"><em>person</em></span>.</p><p>The data model should enforce these constraints:</p><p><span class="strong"><strong>10.10</strong></span> A party has an email address, which can be
-            empty.</p><p><span class="strong"><strong>10.20</strong></span> A party may have multiple email addresses
-            associated with it.</p><p><span class="strong"><strong>10.30</strong></span> The email address of a party must be unique within
-            an OpenACS system.</p></dd><dt><span class="term"><span class="strong"><strong>20.0 Groups</strong></span>
+        </span></dt><dd><p>A <span class="strong">party</span> is an entity used to represent either a
+            <span class="emphasis"><em>group</em></span> or a <span class="emphasis"><em>person</em></span>.</p><p>The data model should enforce these constraints:</p><p><span class="strong">10.10</span> A party has an email address, which can be
+            empty.</p><p><span class="strong">10.20</span> A party may have multiple email addresses
+            associated with it.</p><p><span class="strong">10.30</span> The email address of a party must be unique within
+            an OpenACS system.</p></dd><dt><span class="term"><span class="strong">20.0 Groups</span>
 
-        </span></dt><dd><p>A <span class="strong"><strong>group</strong></span> is a collection of zero or more parties.</p><p><span class="strong"><strong>20.10</strong></span> The data model should support the subclassing of
-            groups via OpenACS Objects.</p></dd><dt><span class="term"><span class="strong"><strong>30.0 Persons</strong></span>
+        </span></dt><dd><p>A <span class="strong">group</span> is a collection of zero or more parties.</p><p><span class="strong">20.10</span> The data model should support the subclassing of
+            groups via OpenACS Objects.</p></dd><dt><span class="term"><span class="strong">30.0 Persons</span>
 
-        </span></dt><dd><p>A <span class="strong"><strong>person</strong></span> represents an actual human being, past or
-            present.</p><p><a name="groups-requirements-30-10"></a><span class="strong"><strong>30.10.</strong></span> A person must have
-            an associated name.</p></dd><dt><span class="term"><span class="strong"><strong>40.0 Users</strong></span>
+        </span></dt><dd><p>A <span class="strong">person</span> represents an actual human being, past or
+            present.</p><p><a name="groups-requirements-30-10"></a><span class="strong">30.10.</span> A person must have
+            an associated name.</p></dd><dt><span class="term"><span class="strong">40.0 Users</span>
 
-        </span></dt><dd><p>A <span class="strong"><strong>user</strong></span> is a person who has registered with an OpenACS site. A
-            user may have additional attributes, such as a screen name.</p><p>The data model should enforce these constraints:</p><p><span class="strong"><strong>40.10</strong></span> A user must have a non-empty email address.</p><p><span class="strong"><strong>40.20</strong></span> Two different users may not have the same email
+        </span></dt><dd><p>A <span class="strong">user</span> is a person who has registered with an OpenACS site. A
+            user may have additional attributes, such as a screen name.</p><p>The data model should enforce these constraints:</p><p><span class="strong">40.10</span> A user must have a non-empty email address.</p><p><span class="strong">40.20</span> Two different users may not have the same email
             address on a single OpenACS installation; i.e., an email address identifies a
-            single user on the system.</p><p><span class="strong"><strong>40.30</strong></span> A user may have multiple email addresses; for
-            example, two or more email addresses may identify a single user.</p><p><span class="strong"><strong>40.40</strong></span> A user must have password field which can be
+            single user on the system.</p><p><span class="strong">40.30</span> A user may have multiple email addresses; for
+            example, two or more email addresses may identify a single user.</p><p><span class="strong">40.40</span> A user must have password field which can be
             empty.</p></dd></dl></div><p>The data model for the parties and groups system must provide support for
-      the following types of relationships between entities:</p><div class="variablelist"><dl><dt><span class="term"><span class="strong"><strong>50.0 Membership</strong></span>
+      the following types of relationships between entities:</p><div class="variablelist"><dl><dt><span class="term"><span class="strong">50.0 Membership</span>
 
         </span></dt><dd><p>
-            A party <span class="strong"><strong>P</strong></span> is considered a <span class="strong"><strong>member</strong></span> of a
-            group <span class="strong"><strong>G</strong></span></p><div class="itemizedlist"><ul type="disc"><li><p>when a direct membership relationship exists between <span class="strong"><strong>P</strong></span>
-                and <span class="strong"><strong>G</strong></span></p></li><li><p>or when there exists a direct membership relationship between
-                <span class="strong"><strong>P</strong></span> and some group <span class="strong"><strong>G<sub>C</sub></strong></span> and
-                <span class="strong"><strong>G<sub>C</sub></strong></span> has a composition relationship (c.f., <a href="groups-requirements.html#groups-requirements-60-0">60.0</a>) with <span class="strong"><strong>G</strong></span>.</p></li></ul></div><p><span class="strong"><strong>50.10</strong></span> A party may be a member of multiple groups.</p><p><span class="strong"><strong>50.20</strong></span> A party may be a member of the same group multiple
+            A party <span class="strong">P</span> is considered a <span class="strong">member</span> of a
+            group <span class="strong">G</span></p><div class="itemizedlist"><ul type="disc"><li><p>when a direct membership relationship exists between <span class="strong">P</span>
+                and <span class="strong">G</span></p></li><li><p>or when there exists a direct membership relationship between
+                <span class="strong">P</span> and some group <span class="strong">G<sub>C</sub></span> and
+                <span class="strong">G<sub>C</sub></span> has a composition relationship (c.f., <a href="groups-requirements.html#groups-requirements-60-0">60.0</a>) with <span class="strong">G</span>.</p></li></ul></div><p><span class="strong">50.10</span> A party may be a member of multiple groups.</p><p><span class="strong">50.20</span> A party may be a member of the same group multiple
             times only when all the memberships have different types; for example, Jane
             may be a member of The Company by being both an Employee and an
-            Executive.</p><p><span class="strong"><strong>50.30</strong></span> A party as a member of itself is not supported.</p><p><span class="strong"><strong>50.40</strong></span> The data model must support membership
-            constraints.</p><p><span class="strong"><strong>50.50</strong></span>The data model should support the subclassing of
+            Executive.</p><p><span class="strong">50.30</span> A party as a member of itself is not supported.</p><p><span class="strong">50.40</span> The data model must support membership
+            constraints.</p><p><span class="strong">50.50</span>The data model should support the subclassing of
             membership via OpenACS Relationships.</p></dd></dl></div><div class="variablelist"><dl><dt><span class="term">
           <a name="groups-requirements-60-0"></a>
-          <span class="strong"><strong>60.0 Composition</strong></span>
-        </span></dt><dd><p>A group <span class="strong"><strong>G<sub>C</sub></strong></span> is considered a
-            <span class="strong"><strong>component</strong></span> of a second group
-            <span class="strong"><strong>G<sub>P</sub></strong></span></p><div class="itemizedlist"><ul type="disc"><li><p>when a direct composition relationship exists between
-                <span class="strong"><strong>G<sub>C</sub></strong></span> and <span class="strong"><strong>G<sub>P</sub></strong></span></p></li><li><p>or when there exists a direct composition relationship between
-                <span class="strong"><strong>G<sub>C</sub></strong></span> and some group <span class="strong"><strong>G<sub>i</sub></strong></span>
-                and <span class="strong"><strong>G<sub>i</sub></strong></span> has a composition relationship with
-                <span class="strong"><strong>G<sub>P</sub></strong></span>.</p></li></ul></div><p><span class="strong"><strong>60.10</strong></span>A group may be a component of multiple groups.</p><p><span class="strong"><strong>60.20</strong></span>A group as a component of itself is not
-            supported.</p><p><span class="strong"><strong>60.30</strong></span>The data model must support component
-            constraints.</p><p><span class="strong"><strong>60.40</strong></span>The data model should support the subclassing of
-            composition via OpenACS Relationships.</p></dd></dl></div></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="groups-requirements-api"></a>Requirements: API</h3></div></div></div><p>The API should let programmers accomplish the following tasks:</p><div class="variablelist"><dl><dt><span class="term"><span class="strong"><strong>70.10 Create a group</strong></span>
+          <span class="strong">60.0 Composition</span>
+        </span></dt><dd><p>A group <span class="strong">G<sub>C</sub></span> is considered a
+            <span class="strong">component</span> of a second group
+            <span class="strong">G<sub>P</sub></span></p><div class="itemizedlist"><ul type="disc"><li><p>when a direct composition relationship exists between
+                <span class="strong">G<sub>C</sub></span> and <span class="strong">G<sub>P</sub></span></p></li><li><p>or when there exists a direct composition relationship between
+                <span class="strong">G<sub>C</sub></span> and some group <span class="strong">G<sub>i</sub></span>
+                and <span class="strong">G<sub>i</sub></span> has a composition relationship with
+                <span class="strong">G<sub>P</sub></span>.</p></li></ul></div><p><span class="strong">60.10</span>A group may be a component of multiple groups.</p><p><span class="strong">60.20</span>A group as a component of itself is not
+            supported.</p><p><span class="strong">60.30</span>The data model must support component
+            constraints.</p><p><span class="strong">60.40</span>The data model should support the subclassing of
+            composition via OpenACS Relationships.</p></dd></dl></div></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="groups-requirements-api"></a>Requirements: API</h3></div></div><div></div></div><p>The API should let programmers accomplish the following tasks:</p><div class="variablelist"><dl><dt><span class="term"><span class="strong">70.10 Create a group</span>
 
         </span></dt><dd><p>The parties and groups system provides a well defined API call that
             creates a new group by running the appropriate transactions on the parties
             and groups system data model. This API is subject to the constraints laid out
-            in the data model.</p></dd><dt><span class="term"><span class="strong"><strong>70.20 Create a person</strong></span>
+            in the data model.</p></dd><dt><span class="term"><span class="strong">70.20 Create a person</span>
 
         </span></dt><dd><p>The parties and groups system provides a well defined API call that
             creates a new person by running the appropriate transactions on the parties
             and groups system data model. This API is subject to the constraints laid out
-            in the data model.</p></dd><dt><span class="term"><span class="strong"><strong>70.30 Create a user</strong></span>
+            in the data model.</p></dd><dt><span class="term"><span class="strong">70.30 Create a user</span>
 
         </span></dt><dd><p>The parties and groups system provides a well defined API call that
             creates a new user by running the appropriate transactions on the parties and
             groups system data model. This API is subject to the constraints laid out in
-            the data model.</p></dd><dt><span class="term"><span class="strong"><strong>80.10 Refine a person to a user</strong></span>
+            the data model.</p></dd><dt><span class="term"><span class="strong">80.10 Refine a person to a user</span>
 
         </span></dt><dd><p>The parties and groups system provides a well defined API call that
             creates a new user by running the appropriate transactions on an existing
             person entity. This API is subject to the constraints laid out in the data
-            model.</p></dd><dt><span class="term"><span class="strong"><strong>80.30 Demote a user to a person</strong></span>
+            model.</p></dd><dt><span class="term"><span class="strong">80.30 Demote a user to a person</span>
 
         </span></dt><dd><p>The parties and groups system provides a well defined API call that
             demotes an existing user entity to a person entity by running the appropriate
             transactions on the existing user. This API is subject to the constraints
-            laid out in the data model.</p></dd><dt><span class="term"><span class="strong"><strong>90.10 Update a party</strong></span>
+            laid out in the data model.</p></dd><dt><span class="term"><span class="strong">90.10 Update a party</span>
 
         </span></dt><dd><p>The programmer should be able to modify, add, and delete attributes on any
-            party. This API is subject to the constraints laid out in the data model.</p></dd><dt><span class="term"><span class="strong"><strong>95.10 Get the attributes of a party</strong></span>
+            party. This API is subject to the constraints laid out in the data model.</p></dd><dt><span class="term"><span class="strong">95.10 Get the attributes of a party</span>
 
         </span></dt><dd><p>The programmer should be able to view the attributes on any party. This
-            API is subject to the constraints laid out in the data model.</p></dd><dt><span class="term"><span class="strong"><strong>100.10 Delete a party</strong></span>
+            API is subject to the constraints laid out in the data model.</p></dd><dt><span class="term"><span class="strong">100.10 Delete a party</span>
 
 
         </span></dt><dd><p>The system provides an API for deleting a party. This API is subject to
-            the constraints laid out in the data model.</p><p><span class="strong"><strong>100.30</strong></span> The system may provide a single API call to remove
-            the party from all groups and then delete the party.</p><p><span class="strong"><strong>100.40</strong></span> In the case of a group, the system may provide a
+            the constraints laid out in the data model.</p><p><span class="strong">100.30</span> The system may provide a single API call to remove
+            the party from all groups and then delete the party.</p><p><span class="strong">100.40</span> In the case of a group, the system may provide a
             single API call to remove all parties from a group and then delete the
-            group.</p></dd><dt><span class="term"><span class="strong"><strong>110.0 Add a party as a member of a group</strong></span>
+            group.</p></dd><dt><span class="term"><span class="strong">110.0 Add a party as a member of a group</span>
 
         </span></dt><dd><p>The parties and groups system provides an API for adding a party as a
             member of a group. This API is subject to the constraints laid out in the
-            data model.</p></dd><dt><span class="term"><span class="strong"><strong>115.0 Add a group as a component of a second group</strong></span>
+            data model.</p></dd><dt><span class="term"><span class="strong">115.0 Add a group as a component of a second group</span>
 
         </span></dt><dd><p>The parties and groups system provides an API for adding a group as a
             component of a second group. This API is subject to the constraints laid out
-            in the data model.</p></dd><dt><span class="term"><span class="strong"><strong>120.0 Remove a party as a member of a group</strong></span>
+            in the data model.</p></dd><dt><span class="term"><span class="strong">120.0 Remove a party as a member of a group</span>
 
         </span></dt><dd><p>The parties and groups system provides an API for deleting a party's
             membership in a group. This API is subject to the constraints laid out in the
-            data model.</p></dd><dt><span class="term"><span class="strong"><strong>125.0 Remove a group as a component of a second
-            group</strong></span>
+            data model.</p></dd><dt><span class="term"><span class="strong">125.0 Remove a group as a component of a second
+            group</span>
 
         </span></dt><dd><p>The parties and groups system provides an API for deleting a group's
             composition in a second group. This API is subject to the constraints laid
-            out in the data model.</p></dd><dt><span class="term"><span class="strong"><strong>130.0 Membership check</strong></span>
+            out in the data model.</p></dd><dt><span class="term"><span class="strong">130.0 Membership check</span>
 
 
         </span></dt><dd><p>The parties and groups system provides an API for answering the question:
-            "Is party <span class="strong"><strong>P</strong></span> a member of group
-            <span class="strong"><strong>G</strong></span>?"</p></dd><dt><span class="term"><span class="strong"><strong>135.0 Composition check</strong></span>
+            &quot;Is party <span class="strong">P</span> a member of group
+            <span class="strong">G</span>?&quot;</p></dd><dt><span class="term"><span class="strong">135.0 Composition check</span>
 
 
         </span></dt><dd><p>The parties and groups system provides an API for answering the question:
-            "Is group <span class="strong"><strong>G<sub>C</sub></strong></span> a component of group
-            <span class="strong"><strong>G<sub>P</sub></strong></span>?"</p></dd><dt><span class="term"><span class="strong"><strong>140.0 Get members query</strong></span>
+            &quot;Is group <span class="strong">G<sub>C</sub></span> a component of group
+            <span class="strong">G<sub>P</sub></span>?&quot;</p></dd><dt><span class="term"><span class="strong">140.0 Get members query</span>
 
 
         </span></dt><dd><p>The parties and groups system provides an API for answering the question:
-            "Which parties are members of group <span class="strong"><strong>G</strong></span>?"</p></dd><dt><span class="term"><span class="strong"><strong>145.0 Get components query</strong></span>
+            &quot;Which parties are members of group <span class="strong">G</span>?&quot;</p></dd><dt><span class="term"><span class="strong">145.0 Get components query</span>
 
 
         </span></dt><dd><p>The parties and groups system provides an API for answering the question:
-            "Which groups are components of group <span class="strong"><strong>G</strong></span>?"</p></dd><dt><span class="term"><span class="strong"><strong>150.0 Member-of-groups query</strong></span>
+            &quot;Which groups are components of group <span class="strong">G</span>?&quot;</p></dd><dt><span class="term"><span class="strong">150.0 Member-of-groups query</span>
 
 
         </span></dt><dd><p>The parties and groups system provides an API for answering the question:
-            "Of which groups is party <span class="strong"><strong>P</strong></span> a member?"</p></dd><dt><span class="term"><span class="strong"><strong>155.0 Component-of-groups query</strong></span>
+            &quot;Of which groups is party <span class="strong">P</span> a member?&quot;</p></dd><dt><span class="term"><span class="strong">155.0 Component-of-groups query</span>
 
 
         </span></dt><dd><p>The parties and groups system provides an API for answering the question:
-            "Of which groups is group <span class="strong"><strong>G</strong></span> a component?"</p></dd><dt><span class="term"><span class="strong"><strong>160.0 Allowed membership check</strong></span>
+            &quot;Of which groups is group <span class="strong">G</span> a component?&quot;</p></dd><dt><span class="term"><span class="strong">160.0 Allowed membership check</span>
 
 
         </span></dt><dd><p>The parties and groups system provides an API for answering the question:
-            "Is party <span class="strong"><strong>P</strong></span> allowed to become a member of group
-            <span class="strong"><strong>G</strong></span>?"</p></dd><dt><span class="term"><span class="strong"><strong>165.0 Allowed composition check</strong></span>
+            &quot;Is party <span class="strong">P</span> allowed to become a member of group
+            <span class="strong">G</span>?&quot;</p></dd><dt><span class="term"><span class="strong">165.0 Allowed composition check</span>
 
 
         </span></dt><dd><p>The parties and groups system provides an API for answering the question:
-            "Is group <span class="strong"><strong>G<sub>C</sub></strong></span> allowed to become a component
-            of group <span class="strong"><strong>G<sub>P</sub></strong></span>?"</p></dd><dt><span class="term"><span class="strong"><strong>170.0 Efficiency</strong></span>
+            &quot;Is group <span class="strong">G<sub>C</sub></span> allowed to become a component
+            of group <span class="strong">G<sub>P</sub></span>?&quot;</p></dd><dt><span class="term"><span class="strong">170.0 Efficiency</span>
 
 
         </span></dt><dd><p>Since many pages at a site may check membership in a group before serving
             a page (e.g., as part of a general permissions check), the data model must
             support the efficient storage and retrieval of party attributes and
-            membership.</p></dd><dt><span class="term"><span class="strong"><strong>180.0 Ease of Use</strong></span>
+            membership.</p></dd><dt><span class="term"><span class="strong">180.0 Ease of Use</span>
 
 
         </span></dt><dd><p>Since many SQL queries will check membership in a group as part of the
-            <code class="computeroutput">where</code> clause, whatever mechanism is used to check membership in SQL
-            should be fairly small and simple.</p></dd></dl></div></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="groups-requirements-ui"></a>Requirements: User Interface</h3></div></div></div><p>The user interface is a set of HTML pages that are used to drive the
-      underlying API. The user interface may provide the following functions:</p><div class="itemizedlist"><ul type="disc"><li><p><span class="strong"><strong>200.0</strong></span> Create a party</p></li><li><p><span class="strong"><strong>210.0</strong></span> View the attributes of a party</p></li><li><p><span class="strong"><strong>220.0</strong></span> Update the attributes of a party</p></li><li><p><span class="strong"><strong>240.0</strong></span> Delete a party</p></li><li><p><span class="strong"><strong>250.0</strong></span> Add a party to a group</p></li><li><p><span class="strong"><strong>260.0</strong></span> Remove a party from a group</p></li><li><p><span class="strong"><strong>270.0</strong></span> Perform the membership and composition checks
-          outlined in 130.x to 165.x</p></li></ul></div></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="groups-requirements-rev-history"></a>Revision History</h3></div></div></div><div class="informaltable"><table cellspacing="0" border="1"><colgroup><col><col><col><col></colgroup><tbody><tr><td><span class="strong"><strong>Document Revision #</strong></span></td><td><span class="strong"><strong>Action Taken, Notes</strong></span></td><td><span class="strong"><strong>When?</strong></span></td><td><span class="strong"><strong>By Whom?</strong></span></td></tr><tr><td>0.1</td><td>Creation</td><td>08/16/2000</td><td>Rafael Schloming</td></tr><tr><td>0.2</td><td>Initial revision</td><td>08/19/2000</td><td>Mark Thomas</td></tr><tr><td>0.3</td><td>Edited and reviewed, conforms to requirements template</td><td>08/23/2000</td><td>Kai Wu</td></tr><tr><td>0.4</td><td>Further revised, added UI requirements</td><td>08/24/2000</td><td>Mark Thomas</td></tr><tr><td>0.5</td><td>Final edits, pending freeze</td><td>08/24/2000</td><td>Kai Wu</td></tr><tr><td>0.6</td><td>More revisions, added composition requirements</td><td>08/30/2000</td><td>Mark Thomas</td></tr><tr><td>0.7</td><td>More revisions, added composition requirements</td><td>09/08/2000</td><td>Mark Thomas</td></tr></tbody></table></div></div></div><div class="navfooter"><hr><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="permissions-design.html">Prev</a> </td><td width="20%" align="center"><a accesskey="h" href="index.html">Home</a></td><td width="40%" align="right"> <a accesskey="n" href="groups-design.html">Next</a></td></tr><tr><td width="40%" align="left">Permissions Design </td><td width="20%" align="center"><a accesskey="u" href="kernel-doc.html">Up</a></td><td width="40%" align="right"> Groups Design</td></tr></table><hr><address><a href="mailto:docs@openacs.org">docs@openacs.org</a></address></div><a name="comments"></a><center><a href="http://openacs.org/doc/current/groups-requirements.html#comments">View comments on this page at openacs.org</a></center></body></html>
+            <tt class="computeroutput">where</tt> clause, whatever mechanism is used to check membership in SQL
+            should be fairly small and simple.</p></dd></dl></div></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="groups-requirements-ui"></a>Requirements: User Interface</h3></div></div><div></div></div><p>The user interface is a set of HTML pages that are used to drive the
+      underlying API. The user interface may provide the following functions:</p><div class="itemizedlist"><ul type="disc"><li><p><span class="strong">200.0</span> Create a party</p></li><li><p><span class="strong">210.0</span> View the attributes of a party</p></li><li><p><span class="strong">220.0</span> Update the attributes of a party</p></li><li><p><span class="strong">240.0</span> Delete a party</p></li><li><p><span class="strong">250.0</span> Add a party to a group</p></li><li><p><span class="strong">260.0</span> Remove a party from a group</p></li><li><p><span class="strong">270.0</span> Perform the membership and composition checks
+          outlined in 130.x to 165.x</p></li></ul></div></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="groups-requirements-rev-history"></a>Revision History</h3></div></div><div></div></div><div class="informaltable"><table cellspacing="0" border="1"><colgroup><col><col><col><col></colgroup><tbody><tr><td><span class="strong">Document Revision #</span></td><td><span class="strong">Action Taken, Notes</span></td><td><span class="strong">When?</span></td><td><span class="strong">By Whom?</span></td></tr><tr><td>0.1</td><td>Creation</td><td>08/16/2000</td><td>Rafael Schloming</td></tr><tr><td>0.2</td><td>Initial revision</td><td>08/19/2000</td><td>Mark Thomas</td></tr><tr><td>0.3</td><td>Edited and reviewed, conforms to requirements template</td><td>08/23/2000</td><td>Kai Wu</td></tr><tr><td>0.4</td><td>Further revised, added UI requirements</td><td>08/24/2000</td><td>Mark Thomas</td></tr><tr><td>0.5</td><td>Final edits, pending freeze</td><td>08/24/2000</td><td>Kai Wu</td></tr><tr><td>0.6</td><td>More revisions, added composition requirements</td><td>08/30/2000</td><td>Mark Thomas</td></tr><tr><td>0.7</td><td>More revisions, added composition requirements</td><td>09/08/2000</td><td>Mark Thomas</td></tr></tbody></table></div></div></div><div class="navfooter"><hr><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="permissions-design.html">Prev</a> </td><td width="20%" align="center"><a accesskey="h" href="index.html">Home</a></td><td width="40%" align="right"> <a accesskey="n" href="groups-design.html">Next</a></td></tr><tr><td width="40%" align="left">Permissions Design </td><td width="20%" align="center"><a accesskey="u" href="kernel-doc.html">Up</a></td><td width="40%" align="right"> Groups Design</td></tr></table><hr><address><a href="mailto:docs@openacs.org">docs@openacs.org</a></address></div><a name="comments"></a><center><a href="http://openacs.org/doc/current/groups-requirements.html#comments">View comments on this page at openacs.org</a></center></body></html>
Index: openacs-4/packages/acs-core-docs/www/high-avail.html
===================================================================
RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/high-avail.html,v
diff -u -r1.17 -r1.17.4.1
--- openacs-4/packages/acs-core-docs/www/high-avail.html	17 Jul 2006 05:38:31 -0000	1.17
+++ openacs-4/packages/acs-core-docs/www/high-avail.html	3 Feb 2008 12:07:38 -0000	1.17.4.1
@@ -1 +1,2 @@
-<html><head><meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"><title>High Availability/High Performance Configurations</title><meta name="generator" content="DocBook XSL Stylesheets V1.70.1"><link rel="home" href="index.html" title="OpenACS Core Documentation"><link rel="up" href="maintenance-web.html" title="Chapter�6.�Production Environments"><link rel="previous" href="install-next-add-server.html" title="Running multiple services on one machine"><link rel="next" href="maintenance-deploy.html" title="Staged Deployment for Production Networks"><link rel="stylesheet" href="openacs.css" type="text/css"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><a href="http://openacs.org"><img src="/doc/images/alex.jpg" border="0" alt="Alex logo"></a><table width="100%" summary="Navigation header" border="0"><tr><td width="20%" align="left"><a accesskey="p" href="install-next-add-server.html">Prev</a> </td><th width="60%" align="center">Chapter�6.�Production Environments</th><td width="20%" align="right"> <a accesskey="n" href="maintenance-deploy.html">Next</a></td></tr></table><hr></div><div class="sect1" lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="high-avail"></a>High Availability/High Performance Configurations</h2></div></div></div><p>See also <a href="remote-postgres.html" title="Running a PostgreSQL database on another server">the section called &#8220;Running a PostgreSQL database on another server&#8221;</a>.</p><div class="figure"><a name="id1072517"></a><p class="title"><b>Figure�6.1.�Multiple-server configuration</b></p><div class="figure-contents"><div class="mediaobject" align="center"><img src="images/hpha.png" align="middle" alt="Multiple-server configuration"></div></div></div><br class="figure-break"></div><div class="navfooter"><hr><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="install-next-add-server.html">Prev</a> </td><td width="20%" align="center"><a accesskey="h" href="index.html">Home</a></td><td width="40%" align="right"> <a accesskey="n" href="maintenance-deploy.html">Next</a></td></tr><tr><td width="40%" align="left">Running multiple services on one machine </td><td width="20%" align="center"><a accesskey="u" href="maintenance-web.html">Up</a></td><td width="40%" align="right"> Staged Deployment for Production Networks</td></tr></table><hr><address><a href="mailto:docs@openacs.org">docs@openacs.org</a></address></div><a name="comments"></a><center><a href="http://openacs.org/doc/current/high-avail.html#comments">View comments on this page at openacs.org</a></center></body></html>
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html><head><meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"><title>High Availability/High Performance Configurations</title><meta name="generator" content="DocBook XSL Stylesheets V1.60.1"><link rel="home" href="index.html" title="OpenACS Core Documentation"><link rel="up" href="maintenance-web.html" title="Chapter�6.�Production Environments"><link rel="previous" href="install-next-add-server.html" title="Running multiple services on one machine"><link rel="next" href="maintenance-deploy.html" title="Staged Deployment for Production Networks"><link rel="stylesheet" href="openacs.css" type="text/css"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><a href="http://openacs.org"><img src="/doc/images/alex.jpg" border="0" alt="Alex logo"></a><table width="100%" summary="Navigation header" border="0"><tr><td width="20%" align="left"><a accesskey="p" href="install-next-add-server.html">Prev</a> </td><th width="60%" align="center">Chapter�6.�Production Environments</th><td width="20%" align="right"> <a accesskey="n" href="maintenance-deploy.html">Next</a></td></tr></table><hr></div><div class="sect1" lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="high-avail"></a>High Availability/High Performance Configurations</h2></div></div><div></div></div><p>See also <a href="remote-postgres.html" title="Running a PostgreSQL database on another server">Section�, &#8220;Running a PostgreSQL database on another server&#8221;</a>.</p><div class="figure"><a name="id2983661"></a><p class="title"><b>Figure�6.1.�Multiple-server configuration</b></p><div class="mediaobject" align="center"><img src="../images/hpha.png" align="middle" alt="Multiple-server configuration"></div></div></div><div class="navfooter"><hr><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="install-next-add-server.html">Prev</a> </td><td width="20%" align="center"><a accesskey="h" href="index.html">Home</a></td><td width="40%" align="right"> <a accesskey="n" href="maintenance-deploy.html">Next</a></td></tr><tr><td width="40%" align="left">Running multiple services on one machine </td><td width="20%" align="center"><a accesskey="u" href="maintenance-web.html">Up</a></td><td width="40%" align="right"> Staged Deployment for Production Networks</td></tr></table><hr><address><a href="mailto:docs@openacs.org">docs@openacs.org</a></address></div><a name="comments"></a><center><a href="http://openacs.org/doc/current/high-avail.html#comments">View comments on this page at openacs.org</a></center></body></html>
Index: openacs-4/packages/acs-core-docs/www/how-do-I.html
===================================================================
RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/how-do-I.html,v
diff -u -r1.20 -r1.20.4.1
--- openacs-4/packages/acs-core-docs/www/how-do-I.html	17 Jul 2006 05:38:31 -0000	1.20
+++ openacs-4/packages/acs-core-docs/www/how-do-I.html	3 Feb 2008 12:07:38 -0000	1.20.4.1
@@ -1,6 +1,7 @@
-<html><head><meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"><title>How Do I?</title><meta name="generator" content="DocBook XSL Stylesheets V1.70.1"><link rel="home" href="index.html" title="OpenACS Core Documentation"><link rel="up" href="configuring-new-site.html" title="Chapter�4.�Configuring a new OpenACS Site"><link rel="previous" href="configuring-configuring-permissions.html" title="Setting Permissions on an OpenACS package"><link rel="next" href="upgrade.html" title="Chapter�5.�Upgrading"><link rel="stylesheet" href="openacs.css" type="text/css"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><a href="http://openacs.org"><img src="/doc/images/alex.jpg" border="0" alt="Alex logo"></a><table width="100%" summary="Navigation header" border="0"><tr><td width="20%" align="left"><a accesskey="p" href="configuring-configuring-permissions.html">Prev</a> </td><th width="60%" align="center">Chapter�4.�Configuring a new OpenACS Site</th><td width="20%" align="right"> <a accesskey="n" href="upgrade.html">Next</a></td></tr></table><hr></div><div class="sect1" lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="how-do-I"></a>How Do I?</h2></div></div></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id1013449"></a>How do I edit the front page of a new site through a web interface?</h3></div></div></div><p>The easiest way is to install the Edit-This-Page package.</p><div class="orderedlist"><ol type="1"><li><p>Log in to the web site as an administrator.</p></li><li><p>Click on Admin &gt; Install Software &gt; Install from OpenACS Repository / Install new application</p></li><li><p>Choose Edit This Page and install</p></li><li><p>Follow the instructions within <a href="/doc/edit-this-page/install" target="_top">Edit This Page</a> (the link will only work after Edit This Page is installed).</p></li></ol></div></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id967530"></a>How do I let anybody who registers post to a weblog?</h3></div></div></div><p>Go to <code class="computeroutput"><a href="/admin/permissions" target="_top">/admin/permissions</a></code> and grant Create to Registered Users</p></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id972749"></a>How do I replace the front page of a new site with the front page of an application on that site</h3></div></div></div><p>Suppose you install a new site and install Weblogger, and you want all visitors to see weblogger automatically.</p><div class="orderedlist"><ol type="1"><li><p>On the front page, click the <code class="computeroutput"><a href="/admin" target="_top">Admin</a></code> button.</p></li><li><p>On the administration page, click <code class="computeroutput">Parameters</code> link.</p></li><li><p>Change the parameter <code class="computeroutput">IndexRedirectUrl</code> to be the URI of the desired application.  For a default weblogger installation, this would be <code class="computeroutput"><strong class="userinput"><code>weblogger/</code></strong></code>.  Note the trailing slash.</p></li></ol></div></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id1007743"></a>How do I put custom functionality on front page of a new site?</h3></div></div></div><p>Every page within an OpenACS site is part of a <span class="strong"><strong>subsite</strong></span> <a href="/doc/acs-subsite" target="_top">More information)</a>.  The home page of the entire site is the front page is a special, default instance of a subsite, served from <code class="computeroutput">/var/lib/aolserver/<span class="replaceable"><span class="replaceable">$OPENACS_SERVICE_NAME</span></span>/www</code>.  If an index page is not found there, the default index page for all subsites is used.  To customize the code on the front page, copy the default index page from the Subsite package to the Main site and edit it:</p><div class="orderedlist"><ol type="1"><li><pre class="screen"><strong class="userinput"><code>cp <code class="computeroutput">/var/lib/aolserver/<span class="replaceable"><span class="replaceable">$OPENACS_SERVICE_NAME</span></span>/packages/acs-subsite/www/index*</code> <code class="computeroutput">/var/lib/aolserver/<span class="replaceable"><span class="replaceable">$OPENACS_SERVICE_NAME</span></span>/www</code></code></strong></pre></li><li><p>Edit the new <code class="computeroutput">index.adp</code> to change the text; you shouldn't need to edit <code class="computeroutput">index.tcl</code> unless you are adding new functionality.</p></li></ol></div></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id1046369"></a>How do I change the site-wide style?</h3></div></div></div><p>Almost all pages on an OpenACS site use <a href="/doc/acs-templating" target="_top">ACS Templating</a>, and so their appearance is driven by a layer of different files.  Let's examine how this works:</p><div class="itemizedlist"><ul type="disc"><li><p>
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html><head><meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"><title>How Do I?</title><meta name="generator" content="DocBook XSL Stylesheets V1.60.1"><link rel="home" href="index.html" title="OpenACS Core Documentation"><link rel="up" href="configuring-new-site.html" title="Chapter�4.�Configuring a new OpenACS Site"><link rel="previous" href="configuring-configuring-permissions.html" title="Setting Permissions on an OpenACS package"><link rel="next" href="upgrade.html" title="Chapter�5.�Upgrading"><link rel="stylesheet" href="openacs.css" type="text/css"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><a href="http://openacs.org"><img src="/doc/images/alex.jpg" border="0" alt="Alex logo"></a><table width="100%" summary="Navigation header" border="0"><tr><td width="20%" align="left"><a accesskey="p" href="configuring-configuring-permissions.html">Prev</a> </td><th width="60%" align="center">Chapter�4.�Configuring a new OpenACS Site</th><td width="20%" align="right"> <a accesskey="n" href="upgrade.html">Next</a></td></tr></table><hr></div><div class="sect1" lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="how-do-I"></a>How Do I?</h2></div></div><div></div></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id2978258"></a>How do I edit the front page of a new site through a web interface?</h3></div></div><div></div></div><p>The easiest way is to install the Edit-This-Page package.</p><div class="orderedlist"><ol type="1"><li><p>Log in to the web site as an administrator.</p></li><li><p>Click on Admin &gt; Install Software &gt; Install from OpenACS Repository / Install new application</p></li><li><p>Choose Edit This Page and install</p></li><li><p>Follow the instructions within <a href="/doc/edit-this-page/install" target="_top">Edit This Page</a> (the link will only work after Edit This Page is installed).</p></li></ol></div></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id2978320"></a>How do I let anybody who registers post to a weblog?</h3></div></div><div></div></div><p>Go to <tt class="computeroutput"><a href="/admin/permissions" target="_top">/admin/permissions</a></tt> and grant Create to Registered Users</p></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id2978344"></a>How do I replace the front page of a new site with the front page of an application on that site</h3></div></div><div></div></div><p>Suppose you install a new site and install Weblogger, and you want all visitors to see weblogger automatically.</p><div class="orderedlist"><ol type="1"><li><p>On the front page, click the <tt class="computeroutput"><a href="/admin" target="_top">Admin</a></tt> button.</p></li><li><p>On the administration page, click <tt class="computeroutput">Parameters</tt> link.</p></li><li><p>Change the parameter <tt class="computeroutput">IndexRedirectUrl</tt> to be the URI of the desired application.  For a default weblogger installation, this would be <tt class="computeroutput"><b class="userinput"><tt>weblogger/</tt></b></tt>.  Note the trailing slash.</p></li></ol></div></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id2936806"></a>How do I put custom functionality on front page of a new site?</h3></div></div><div></div></div><p>Every page within an OpenACS site is part of a <span class="strong">subsite</span> <a href="/doc/acs-subsite" target="_top">More information)</a>.  The home page of the entire site is the front page is a special, default instance of a subsite, served from <tt class="computeroutput">/var/lib/aolserver/<span class="replaceable"><span class="replaceable">$OPENACS_SERVICE_NAME</span></span>/www</tt>.  If an index page is not found there, the default index page for all subsites is used.  To customize the code on the front page, copy the default index page from the Subsite package to the Main site and edit it:</p><div class="orderedlist"><ol type="1"><li><pre class="screen"><b class="userinput"><tt>cp <tt class="computeroutput">/var/lib/aolserver/<span class="replaceable"><span class="replaceable">$OPENACS_SERVICE_NAME</span></span>/packages/acs-subsite/www/index*</tt> <tt class="computeroutput">/var/lib/aolserver/<span class="replaceable"><span class="replaceable">$OPENACS_SERVICE_NAME</span></span>/www</tt></tt></b></pre></li><li><p>Edit the new <tt class="computeroutput">index.adp</tt> to change the text; you shouldn't need to edit <tt class="computeroutput">index.tcl</tt> unless you are adding new functionality.</p></li></ol></div></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id2817206"></a>How do I change the site-wide style?</h3></div></div><div></div></div><p>Almost all pages on an OpenACS site use <a href="/doc/acs-templating" target="_top">ACS Templating</a>, and so their appearance is driven by a layer of different files.  Let's examine how this works:</p><div class="itemizedlist"><ul type="disc"><li><p>
           A templated page uses an ADP/TCL pair.  The first line in the ADP file is usually:
-          </p><pre class="programlisting">&lt;master&gt;</pre><p>If it appears exactly like this, without any arguments, the template processer uses <code class="computeroutput">default-master</code> for that subsite.  For pages in <code class="computeroutput">/var/lib/aolserver/<span class="replaceable"><span class="replaceable">$OPENACS_SERVICE_NAME</span></span>/www</code>, this is <code class="computeroutput">/var/lib/aolserver/<span class="replaceable"><span class="replaceable">$OPENACS_SERVICE_NAME</span></span>/www/default-master.adp</code> and the associated .tcl file.
-          </p></li><li><p>The <code class="computeroutput">default-master</code> is itself a normal ADP page.  It draws the subsite navigation elements and invokes <code class="computeroutput">site-master</code> (<code class="computeroutput">/var/lib/aolserver/<span class="replaceable"><span class="replaceable">$OPENACS_SERVICE_NAME</span></span>/www/site-master.adp</code> and .tcl)</p></li><li><p>The <code class="computeroutput">site-master</code> draws site-wide navigation elements and invokes <code class="computeroutput">blank-master</code> (<code class="computeroutput">/var/lib/aolserver/<span class="replaceable"><span class="replaceable">$OPENACS_SERVICE_NAME</span></span>/www/blank-master.adp</code> and .tcl).  </p></li><li><p><code class="computeroutput">Blank-master</code> does HTML housekeeping and provides a framework for special sitewide navigation "meta" elements such as Translator widgets and Admin widgets.</p></li></ul></div><div class="figure"><a name="id1039051"></a><p class="title"><b>Figure�4.1.�Site Templates</b></p><div class="figure-contents"><div class="mediaobject"><img src="images/site-templates.png" alt="Site Templates"></div></div></div><br class="figure-break"></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id1013447"></a>How do I diagnose a permissions problem?</h3></div></div></div><div class="itemizedlist"><ul type="disc"><li><p><b>Steps to Reproduce.�</b>The events package does not allow users to register for new events.</p><div class="orderedlist"><ol type="1"><li><p>Go to the http://yourserver.net/events as a visitor (ie, log out and, if necessary, clear cookies).  This in on a 4.6.3 site with events version 0.1d3.</p></li><li><p>Select an available event</p></li><li><p>A link such as <code class="computeroutput">Registration: Deadline is 03/15/2004 10:00am. 
-� Login or sign up to register for this event.</code> is visible.  Click on "Login or sign up"
-          </p></li><li><p>Complete a new registration.  Afterwards, you should be redirected back to the same page.</p></li></ol></div><p>Actual Results: The page says <code class="computeroutput">"You do not have permission to register for this event."</code></p><p>Expected results: A link or form to sign up for the event is shown.</p></li><li><p><b>Finding the problem.�</b>We start with the page that has the error.  In the URL it's <code class="computeroutput">http://myserver.net/events/event-info.tcl</code>, so open the file <code class="computeroutput">/var/lib/aolserver/$OPENACS_SERVICE_NAME/packages/events/www/event-info.tcl</code>.  It contains this line:</p><pre class="programlisting">set can_register_p [events::security::can_register_for_event_p -event_id $event_id]</pre><p>We need to know what that procedure does, so go to <a href="/api-doc" target="_top">/api-doc</a>, paste events::security::can_register_for_event_p into the ACS Tcl API Search box, and click Feeling Lucky.  The next pages shows the proc, and we click "show source" to see more information.  The body of the proc is simply</p><pre class="programlisting">return [permission::permission_p -party_id $user_id -object_id $event_id -privilege write]</pre><p>This means that a given user must have the write privilige on the event in order to register.  Let's assume that the priviliges inherit, so that if a user has the write privilige on the whole package, they will have the write privilege on the event.</p></li><li><p><b>Setting Permissions.�</b>A permission has three parts: the privilige, the object of the privilige, and the subject being granted the privilige.  In this case the privilige is "write," the object is the Events package, and the subject is all Registered Users.</p><div class="orderedlist"><ol type="1"><li><p>To grant permissions on a package, start at the <a href="/admin/site-map" target="_top">site map</a>.  Find the event package and click "Set permissions".  </p></li><li><p>Click "Grant Permission"</p></li><li><p>Grant the write permission to Registered Users.</p><div class="figure"><a name="id1067290"></a><p class="title"><b>Figure�4.2.�Granting Permissions</b></p><div class="figure-contents"><div class="mediaobject"><img src="images/grant-perm-463.png" alt="Granting Permissions"></div></div></div><br class="figure-break"></li></ol></div><p>OpenACS 5.0 offers a prettier version at <a href="/admin/applications" target="_top">/admin/applications</a>.</p><div class="figure"><a name="id1067322"></a><p class="title"><b>Figure�4.3.�Granting Permissions in 5.0</b></p><div class="figure-contents"><div class="mediaobject"><img src="images/grant-perm-50.png" alt="Granting Permissions in 5.0"></div></div></div><br class="figure-break"></li></ul></div></div></div><div class="navfooter"><hr><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="configuring-configuring-permissions.html">Prev</a> </td><td width="20%" align="center"><a accesskey="h" href="index.html">Home</a></td><td width="40%" align="right"> <a accesskey="n" href="upgrade.html">Next</a></td></tr><tr><td width="40%" align="left">Setting Permissions on an OpenACS package </td><td width="20%" align="center"><a accesskey="u" href="configuring-new-site.html">Up</a></td><td width="40%" align="right"> Chapter�5.�Upgrading</td></tr></table><hr><address><a href="mailto:docs@openacs.org">docs@openacs.org</a></address></div><a name="comments"></a><center><a href="http://openacs.org/doc/current/how-do-I.html#comments">View comments on this page at openacs.org</a></center></body></html>
+          </p><pre class="programlisting">&lt;master&gt;</pre><p>If it appears exactly like this, without any arguments, the template processer uses <tt class="computeroutput">default-master</tt> for that subsite.  For pages in <tt class="computeroutput">/var/lib/aolserver/<span class="replaceable"><span class="replaceable">$OPENACS_SERVICE_NAME</span></span>/www</tt>, this is <tt class="computeroutput">/var/lib/aolserver/<span class="replaceable"><span class="replaceable">$OPENACS_SERVICE_NAME</span></span>/www/default-master.adp</tt> and the associated .tcl file.
+          </p></li><li><p>The <tt class="computeroutput">default-master</tt> is itself a normal ADP page.  It draws the subsite navigation elements and invokes <tt class="computeroutput">site-master</tt> (<tt class="computeroutput">/var/lib/aolserver/<span class="replaceable"><span class="replaceable">$OPENACS_SERVICE_NAME</span></span>/www/site-master.adp</tt> and .tcl)</p></li><li><p>The <tt class="computeroutput">site-master</tt> draws site-wide navigation elements and invokes <tt class="computeroutput">blank-master</tt> (<tt class="computeroutput">/var/lib/aolserver/<span class="replaceable"><span class="replaceable">$OPENACS_SERVICE_NAME</span></span>/www/blank-master.adp</tt> and .tcl).  </p></li><li><p><tt class="computeroutput">Blank-master</tt> does HTML housekeeping and provides a framework for special sitewide navigation &quot;meta&quot; elements such as Translator widgets and Admin widgets.</p></li></ul></div><div class="figure"><a name="id2817365"></a><p class="title"><b>Figure�4.1.�Site Templates</b></p><div class="mediaobject"><img src="../images/site-templates.png" alt="Site Templates"></div></div></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id2817395"></a>How do I diagnose a permissions problem?</h3></div></div><div></div></div><div class="itemizedlist"><ul type="disc"><li><p><b>Steps to Reproduce.�</b>The events package does not allow users to register for new events.</p><div class="orderedlist"><ol type="1"><li><p>Go to the http://yourserver.net/events as a visitor (ie, log out and, if necessary, clear cookies).  This in on a 4.6.3 site with events version 0.1d3.</p></li><li><p>Select an available event</p></li><li><p>A link such as <tt class="computeroutput">Registration: Deadline is 03/15/2004 10:00am. 
+� Login or sign up to register for this event.</tt> is visible.  Click on &quot;Login or sign up&quot;
+          </p></li><li><p>Complete a new registration.  Afterwards, you should be redirected back to the same page.</p></li></ol></div><p>Actual Results: The page says <tt class="computeroutput">&quot;You do not have permission to register for this event.&quot;</tt></p><p>Expected results: A link or form to sign up for the event is shown.</p></li><li><p><b>Finding the problem.�</b>We start with the page that has the error.  In the URL it's <tt class="computeroutput">http://myserver.net/events/event-info.tcl</tt>, so open the file <tt class="computeroutput">/var/lib/aolserver/$OPENACS_SERVICE_NAME/packages/events/www/event-info.tcl</tt>.  It contains this line:</p><pre class="programlisting">set can_register_p [events::security::can_register_for_event_p -event_id $event_id]</pre><p>We need to know what that procedure does, so go to <a href="/api-doc" target="_top">/api-doc</a>, paste events::security::can_register_for_event_p into the ACS Tcl API Search box, and click Feeling Lucky.  The next pages shows the proc, and we click &quot;show source&quot; to see more information.  The body of the proc is simply</p><pre class="programlisting">return [permission::permission_p -party_id $user_id -object_id $event_id -privilege write]</pre><p>This means that a given user must have the write privilige on the event in order to register.  Let's assume that the priviliges inherit, so that if a user has the write privilige on the whole package, they will have the write privilege on the event.</p></li><li><p><b>Setting Permissions.�</b>A permission has three parts: the privilige, the object of the privilige, and the subject being granted the privilige.  In this case the privilige is &quot;write,&quot; the object is the Events package, and the subject is all Registered Users.</p><div class="orderedlist"><ol type="1"><li><p>To grant permissions on a package, start at the <a href="/admin/site-map" target="_top">site map</a>.  Find the event package and click &quot;Set permissions&quot;.  </p></li><li><p>Click &quot;Grant Permission&quot;</p></li><li><p>Grant the write permission to Registered Users.</p><div class="figure"><a name="id2979592"></a><p class="title"><b>Figure�4.2.�Granting Permissions</b></p><div class="mediaobject"><img src="../images/grant-perm-463.png" alt="Granting Permissions"></div></div></li></ol></div><p>OpenACS 5.0 offers a prettier version at <a href="/admin/applications" target="_top">/admin/applications</a>.</p><div class="figure"><a name="id2979634"></a><p class="title"><b>Figure�4.3.�Granting Permissions in 5.0</b></p><div class="mediaobject"><img src="../images/grant-perm-50.png" alt="Granting Permissions in 5.0"></div></div></li></ul></div></div></div><div class="navfooter"><hr><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="configuring-configuring-permissions.html">Prev</a> </td><td width="20%" align="center"><a accesskey="h" href="index.html">Home</a></td><td width="40%" align="right"> <a accesskey="n" href="upgrade.html">Next</a></td></tr><tr><td width="40%" align="left">Setting Permissions on an OpenACS package </td><td width="20%" align="center"><a accesskey="u" href="configuring-new-site.html">Up</a></td><td width="40%" align="right"> Chapter�5.�Upgrading</td></tr></table><hr><address><a href="mailto:docs@openacs.org">docs@openacs.org</a></address></div><a name="comments"></a><center><a href="http://openacs.org/doc/current/how-do-I.html#comments">View comments on this page at openacs.org</a></center></body></html>
Index: openacs-4/packages/acs-core-docs/www/i18n-convert.html
===================================================================
RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/i18n-convert.html,v
diff -u -r1.19 -r1.19.4.1
--- openacs-4/packages/acs-core-docs/www/i18n-convert.html	17 Jul 2006 05:38:31 -0000	1.19
+++ openacs-4/packages/acs-core-docs/www/i18n-convert.html	3 Feb 2008 12:07:38 -0000	1.19.4.1
@@ -1,4 +1,5 @@
-<html><head><meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"><title>How to Internationalize a Package</title><meta name="generator" content="DocBook XSL Stylesheets V1.70.1"><link rel="home" href="index.html" title="OpenACS Core Documentation"><link rel="up" href="i18n.html" title="Chapter�14.�Internationalization"><link rel="previous" href="i18n-introduction.html" title="How Internationalization/Localization works in OpenACS"><link rel="next" href="i18n-design.html" title="Design Notes"><link rel="stylesheet" href="openacs.css" type="text/css"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><a href="http://openacs.org"><img src="/doc/images/alex.jpg" border="0" alt="Alex logo"></a><table width="100%" summary="Navigation header" border="0"><tr><td width="20%" align="left"><a accesskey="p" href="i18n-introduction.html">Prev</a> </td><th width="60%" align="center">Chapter�14.�Internationalization</th><td width="20%" align="right"> <a accesskey="n" href="i18n-design.html">Next</a></td></tr></table><hr></div><div class="sect1" lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="i18n-convert"></a>How to Internationalize a Package</h2></div></div></div><div class="tip" style="margin-left: 0.5in; margin-right: 0.5in;"><h3 class="title">Tip</h3><p>
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html><head><meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"><title>How to Internationalize a Package</title><meta name="generator" content="DocBook XSL Stylesheets V1.60.1"><link rel="home" href="index.html" title="OpenACS Core Documentation"><link rel="up" href="i18n.html" title="Chapter�14.�Internationalization"><link rel="previous" href="i18n-introduction.html" title="How Internationalization/Localization works in OpenACS"><link rel="next" href="i18n-design.html" title="Design Notes"><link rel="stylesheet" href="openacs.css" type="text/css"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><a href="http://openacs.org"><img src="/doc/images/alex.jpg" border="0" alt="Alex logo"></a><table width="100%" summary="Navigation header" border="0"><tr><td width="20%" align="left"><a accesskey="p" href="i18n-introduction.html">Prev</a> </td><th width="60%" align="center">Chapter�14.�Internationalization</th><td width="20%" align="right"> <a accesskey="n" href="i18n-design.html">Next</a></td></tr></table><hr></div><div class="sect1" lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="i18n-convert"></a>How to Internationalize a Package</h2></div></div><div></div></div><div class="tip" style="margin-left: 0.5in; margin-right: 0.5in;"><h3 class="title">Tip</h3><p>
       For multilingual websites we recommend using the UTF8
       charset. In order for AOLserver to use utf8 you need to set
       the config parameters OutputCharset and
@@ -8,23 +9,23 @@
       variable set to .UTF8. You should set this variable in the
       nsd-oracle run script (use the
       acs-core-docs/www/files/nds-oracle.txt template file).
-    </p></div><div class="orderedlist"><ol type="1"><li><p><b>Replace all text with temporary message tags.�</b>From<code class="computeroutput">/acs-admin/apm/</code>, select a
+    </p></div><div class="orderedlist"><ol type="1"><li><p><b>Replace all text with temporary message tags.�</b>From<tt class="computeroutput">/acs-admin/apm/</tt>, select a
         package and then click on
-        <code class="computeroutput">Internationalization</code>, then
-        <code class="computeroutput">Convert ADP, Tcl, and SQL files to using the
-        message catalog.</code>.  This pass only changes the adp files; it does not affect catalog files or the catalog in the database.</p><div class="mediaobject" align="center"><img src="images/i18n-1.png" align="middle"></div><p>You will now be walked through all of the selected adp pages.  The UI shows you the intended changes and lets you edit or cancel them key by key.</p><div class="mediaobject" align="center"><img src="images/i18n-2.png" align="middle"></div></li><li><p><b>Replace the temporary message tags in ADP files.�</b>From the same <code class="computeroutput">Convert ADP ...</code> page in <code class="computeroutput">/acs-admin/apm</code> as in the last step, repeat the process but deselect <code class="computeroutput">Find human language text ...</code> and select <code class="computeroutput">Replace &lt;# ... #&gt; tags ...</code> and click OK.  This step replaces all of the temporary tags with "short" message lookups, inserts the message keys into the database message catalog, and then writes that catalog out to an xml file.</p></li><li><p><b>Replace human-readable text in TCL files with temporary tags.�</b>Examine all of the tcl files in the packages for human-readable text and replace it with temporary tags.  The temporary tags in TCL are slightly different from those in ADP.  If the first character in the temporary tag is an underscore (<code class="computeroutput">_</code>), then the message keys will be auto-generated from the original message text.  Here is an unmodified tcl file:</p><pre class="programlisting">
-set title "Messages for $a(name) in $b(label)"
-set context [list [list . "SimPlay"] \
+        <tt class="computeroutput">Internationalization</tt>, then
+        <tt class="computeroutput">Convert ADP, Tcl, and SQL files to using the
+        message catalog.</tt>.  This pass only changes the adp files; it does not affect catalog files or the catalog in the database.</p><div class="mediaobject" align="center"><img src="../images/i18n-1.png" align="middle"></div><p>You will now be walked through all of the selected adp pages.  The UI shows you the intended changes and lets you edit or cancel them key by key.</p><div class="mediaobject" align="center"><img src="../images/i18n-2.png" align="middle"></div></li><li><p><b>Replace the temporary message tags in ADP files.�</b>From the same <tt class="computeroutput">Convert ADP ...</tt> page in <tt class="computeroutput">/acs-admin/apm</tt> as in the last step, repeat the process but deselect <tt class="computeroutput">Find human language text ...</tt> and select <tt class="computeroutput">Replace &lt;# ... #&gt; tags ...</tt> and click OK.  This step replaces all of the temporary tags with &quot;short&quot; message lookups, inserts the message keys into the database message catalog, and then writes that catalog out to an xml file.</p></li><li><p><b>Replace human-readable text in TCL files with temporary tags.�</b>Examine all of the tcl files in the packages for human-readable text and replace it with temporary tags.  The temporary tags in TCL are slightly different from those in ADP.  If the first character in the temporary tag is an underscore (<tt class="computeroutput">_</tt>), then the message keys will be auto-generated from the original message text.  Here is an unmodified tcl file:</p><pre class="programlisting">
+set title &quot;Messages for $a(name) in $b(label)&quot;
+set context [list [list . &quot;SimPlay&quot;] \
                   [list [export_vars -base case-admin { case_id }] \ 
-                    "Administer $a(name)"] \
-                  "Messages for $a(name)"]
+                    &quot;Administer $a(name)&quot;] \
+                  &quot;Messages for $a(name)&quot;]
 </pre><p>... and here is the same file after temporary message tags have been manually added:</p><pre class="programlisting">
 set title &lt;#admin_title Messages for %a.name% in %b.label%#&gt;
 set context [list [list . &lt;#_ SimPlay#&gt;] \
                   [list [export_vars -base case-admin { case_id }] \
                     &lt;#_ Administer %a.name%#&gt;] \
                   &lt;#_ Messages for %a.name%#&gt;]
-</pre><p>Note that the message key <code class="computeroutput">case_admin_page_title</code> was manually selected, because an autogenerated key for this text, with its substitute variables, would have been very confusing
+</pre><p>Note that the message key <tt class="computeroutput">case_admin_page_title</tt> was manually selected, because an autogenerated key for this text, with its substitute variables, would have been very confusing
 </p></li><li><p><b>Replace the temporary message tags in TCL files.�</b>Repeat step 2 for tcl files.  Here is the example TCL file after conversion:</p><pre class="programlisting">
 set title [_ simulation.admin_title]
 set context [list [list . [_ simulation.SimPlay]] \
@@ -33,12 +34,12 @@
                   [_ simulation.lt_Messages_for_role_pre]]
 </pre></li><li><p><b>Internationalize SQL Code.�</b>If there is any user-visible TCL code in the .sql or .xql files, internationalize that the same way as for the TCL files.</p></li><li><p><b>Internationalize Package Parameters.�</b>
       See <a href="i18n-introduction.html#i18n-message-apm-params">Multilingual APM Parameters</a>
-    </p></li><li><p><b>Internationalize Date and Time queries.�</b></p><div class="orderedlist"><ol type="a"><li><p>Find datetime in .xql files.  Use command line tools to find suspect SQL code:</p><pre class="programlisting">grep -r "to_char.*H" *
-grep -r "to_date.*H" *
-</pre></li><li><p>In SQL statements, replace the format string with the ANSI standard format, <code class="computeroutput">YYYY-MM-DD HH24:MI:SS</code> and change the field name to *_ansi so that it cannot be confused with previous, improperly formatting fields.  For example,</p><pre class="programlisting">to_char(timestamp,'MM/DD/YYYY HH:MI:SS') as foo_date_pretty</pre><p>becomes</p><pre class="programlisting">to_char(timestamp,'YYYY-MM-DD HH24:MI:SS') as foo_date_ansi</pre></li><li><p>In TCL files where the date fields are used, convert the datetime from local server timezone, which is how it's stored in the database, to the user's timezone for display.  Do this with the localizing function <code class="computeroutput"><a href="/api-doc/proc-view?proc=lc_time_system_to_conn" target="_top">lc_time_system_to_conn</a></code>:</p><pre class="programlisting">
-set foo_date_ansi [lc_time_system_to_conn $foo_date_ansi]</pre><p>When a datetime will be written to the database, first convert it from the user's local time to the server's timezone with <code class="computeroutput"><a href="/api-doc/proc-view?proc=lc%5ftime%5fconn%5fto%5fsystem" target="_top">lc_time_conn_to_system</a></code>.
-</p></li><li><p>When a datetime field will be displayed, format it using the localizing function <code class="computeroutput"><a href="/api-doc/proc-view?proc=lc_time_fmt" target="_top">lc_time_fmt</a></code>. lc_time_fmt takes two parameters, datetime and format code.  Several format codes are usable for localization; they are placeholders that format dates with the appropriate codes for the user's locale.  These codes are: <code class="computeroutput">%x, %X, %q, %Q, and %c.</code></p><pre class="programlisting">set foo_date_pretty [lc_time_fmt $foo_date_ansi "%x %X"]</pre><p>
-          Use the <code class="computeroutput">_pretty</code> version in your ADP page.
+    </p></li><li><p><b>Internationalize Date and Time queries.�</b></p><div class="orderedlist"><ol type="a"><li><p>Find datetime in .xql files.  Use command line tools to find suspect SQL code:</p><pre class="programlisting">grep -r &quot;to_char.*H&quot; *
+grep -r &quot;to_date.*H&quot; *
+</pre></li><li><p>In SQL statements, replace the format string with the ANSI standard format, <tt class="computeroutput">YYYY-MM-DD HH24:MI:SS</tt> and change the field name to *_ansi so that it cannot be confused with previous, improperly formatting fields.  For example,</p><pre class="programlisting">to_char(timestamp,'MM/DD/YYYY HH:MI:SS') as foo_date_pretty</pre><p>becomes</p><pre class="programlisting">to_char(timestamp,'YYYY-MM-DD HH24:MI:SS') as foo_date_ansi</pre></li><li><p>In TCL files where the date fields are used, convert the datetime from local server timezone, which is how it's stored in the database, to the user's timezone for display.  Do this with the localizing function <tt class="computeroutput"><a href="/api-doc/proc-view?proc=lc_time_system_to_conn" target="_top">lc_time_system_to_conn</a></tt>:</p><pre class="programlisting">
+set foo_date_ansi [lc_time_system_to_conn $foo_date_ansi]</pre><p>When a datetime will be written to the database, first convert it from the user's local time to the server's timezone with <tt class="computeroutput"><a href="/api-doc/proc-view?proc=lc%5ftime%5fconn%5fto%5fsystem" target="_top">lc_time_conn_to_system</a></tt>.
+</p></li><li><p>When a datetime field will be displayed, format it using the localizing function <tt class="computeroutput"><a href="/api-doc/proc-view?proc=lc_time_fmt" target="_top">lc_time_fmt</a></tt>. lc_time_fmt takes two parameters, datetime and format code.  Several format codes are usable for localization; they are placeholders that format dates with the appropriate codes for the user's locale.  These codes are: <tt class="computeroutput">%x, %X, %q, %Q, and %c.</tt></p><pre class="programlisting">set foo_date_pretty [lc_time_fmt $foo_date_ansi &quot;%x %X&quot;]</pre><p>
+          Use the <tt class="computeroutput">_pretty</tt> version in your ADP page.
         </p><div class="itemizedlist"><ul type="disc"><li><p>
           %c: Long date and time (Mon November 18, 2002 12:00 AM)
         </p></li><li><p>
@@ -50,10 +51,10 @@
         </p></li><li><p>
            %Q: Long date with weekday (Monday November 18, 2002)
         </p></li></ul></div><p>
-      The "q" format strings are OpenACS additions; the rest follow unix standards (see <code class="computeroutput">man
-      strftime</code>).
+      The &quot;q&quot; format strings are OpenACS additions; the rest follow unix standards (see <tt class="computeroutput">man
+      strftime</tt>).
     </p></li></ol></div></li><li><p><b>Internationalize Numbers.�</b>
-            To internationalize numbers, use <code class="computeroutput">lc_numeric $value</code>, which formats the number using the appropriate decimal point and thousand separator for the locale.
+            To internationalize numbers, use <tt class="computeroutput">lc_numeric $value</tt>, which formats the number using the appropriate decimal point and thousand separator for the locale.
           </p></li><li><p><b>Internationalizing Forms.�</b>When coding forms, remember to use message keys for each piece of text that is user-visible, including form option labels and button labels.</p></li><li><p><a name="catalog-consistency-check"></a><b>Checking the Consistency of Catalog Files.�</b>
         This section describes how to check that the set of keys used in
         message lookups in tcl, adp, and info files and the set of keys in
@@ -63,23 +64,23 @@
         are always is done with one of the valid lookups described above. The script further assumes
         that you have perl installed and in your path.  Run the script like
         this:
-            <code class="computeroutput">
+            <tt class="computeroutput">
               acs-lang/bin/check-catalog.sh package_key
-            </code>
+            </tt>
           </p><p>
         where package_key is the key of the package that you want to
         test. If you don't provide the package_key argument then all
         packages with catalog files will be checked. 
         The script will run its checks primarily on en_US xml catalog files.
-      </p></li></ol></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id1073728"></a>Avoiding common i18n mistakes</h3></div></div></div><div class="itemizedlist"><ul type="disc"><li><p><b>Replace complicated keys with longer, simpler keys.�</b>When writing in one language, it is possible to create clever code to make correct text.  In English, for example, you can put an <code class="computeroutput">if</code> command at the end of a word which adds "s" if a count is anything but 1.  This pluralizes nouns correctly based on the data.  However, it is confusing to read and, when internationalized, may result in message keys that are both confusing and impossible to set correctly in some languages.  While internationalizing, watch out that the automate converter does not create such keys.  Also, refactor compound text as you encounter it.</p><p>The automated system can easily get confused by tags within message texts, so that it tries to create two or three message keys for one long string with a tag in the middle.  In these cases, uncheck those keys during the conversion and then edit the files directly.  For example, this code:</p><pre class="programlisting">  &lt;p class="form-help-text"&gt;&lt;b&gt;Invitations&lt;/b&gt; are sent,
-          when this wizard is completed and casting begins.&lt;/p&gt;</pre><p>has a bold tag which confuses the converter into thinking there are two message keys for the text beginning "Invitations ..." where there should be one:</p><div class="mediaobject" align="center"><img src="images/i18n-3.png" align="middle"></div><p>Instead, we cancel those keys, edit the file manually, and put in a single temporary message tag:</p><pre class="programlisting">  &lt;p class="form-help-text"&gt; &lt;#Invitations_are_sent &lt;b&gt;Invitations&lt;/b&gt; are sent, 
+      </p></li></ol></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id3057534"></a>Avoiding common i18n mistakes</h3></div></div><div></div></div><div class="itemizedlist"><ul type="disc"><li><p><b>Replace complicated keys with longer, simpler keys.�</b>When writing in one language, it is possible to create clever code to make correct text.  In English, for example, you can put an <tt class="computeroutput">if</tt> command at the end of a word which adds &quot;s&quot; if a count is anything but 1.  This pluralizes nouns correctly based on the data.  However, it is confusing to read and, when internationalized, may result in message keys that are both confusing and impossible to set correctly in some languages.  While internationalizing, watch out that the automate converter does not create such keys.  Also, refactor compound text as you encounter it.</p><p>The automated system can easily get confused by tags within message texts, so that it tries to create two or three message keys for one long string with a tag in the middle.  In these cases, uncheck those keys during the conversion and then edit the files directly.  For example, this code:</p><pre class="programlisting">  &lt;p class=&quot;form-help-text&quot;&gt;&lt;b&gt;Invitations&lt;/b&gt; are sent,
+          when this wizard is completed and casting begins.&lt;/p&gt;</pre><p>has a bold tag which confuses the converter into thinking there are two message keys for the text beginning &quot;Invitations ...&quot; where there should be one:</p><div class="mediaobject" align="center"><img src="../images/i18n-3.png" align="middle"></div><p>Instead, we cancel those keys, edit the file manually, and put in a single temporary message tag:</p><pre class="programlisting">  &lt;p class=&quot;form-help-text&quot;&gt; &lt;#Invitations_are_sent &lt;b&gt;Invitations&lt;/b&gt; are sent, 
 when this wizard is completed and casting begins.#&gt;
-  &lt;/p&gt;</pre><p>Complex if statements may produce convoluted message keys that are very hard to localize.  Rewrite these if statements.  For example:</p><pre class="programlisting">Select which case &lt;if @simulation.casting_type@ eq "open"&gt;and
+  &lt;/p&gt;</pre><p>Complex if statements may produce convoluted message keys that are very hard to localize.  Rewrite these if statements.  For example:</p><pre class="programlisting">Select which case &lt;if @simulation.casting_type@ eq &quot;open&quot;&gt;and
 role&lt;/if&gt; to join, or create a new case for yourself.  If you do not
-select a case &lt;if @simulation.casting_type@ eq "open"&gt;and role&lt;/if&gt;
+select a case &lt;if @simulation.casting_type@ eq &quot;open&quot;&gt;and role&lt;/if&gt;
 to join, you will be automatically assigned to a case &lt;if
-@simulation.casting_type@ eq "open"&gt;and role&lt;/if&gt; when the
-simulation begins.</pre><p>... can be rewritten:</p><pre class="programlisting">&lt;if @simulation.casting_type@ eq "open"&gt;
+@simulation.casting_type@ eq &quot;open&quot;&gt;and role&lt;/if&gt; when the
+simulation begins.</pre><p>... can be rewritten:</p><pre class="programlisting">&lt;if @simulation.casting_type@ eq &quot;open&quot;&gt;
 
 Select which case and role to join, or create a new case for
 yourself.  If you do not select a case and role to join, you will
@@ -95,7 +96,7 @@
 begins.
 
 &lt;/else&gt;</pre><p>Another example, where bugs are concatenated with a number:</p><pre class="programlisting">&lt;if @components.view_bugs_url@ not nil&gt;
-  &lt;a href="@components.view_bugs_url@" title="View the @pretty_names.bugs@ for this component"&gt;
+  &lt;a href=&quot;@components.view_bugs_url@&quot; title=&quot;View the @pretty_names.bugs@ for this component&quot;&gt;
   &lt;/if&gt;
   @components.num_bugs@ 
   &lt;if @components.num_bugs@ eq 1&gt;
@@ -109,7 +110,7 @@
   &lt;/if&gt;
 
 &lt;if @components.view_bugs_url@ not nil&gt;
-&lt;a href="@components.view_bugs_url@" title="#bug-tracker.View_the_bug_fo_component#"&gt;
+&lt;a href=&quot;@components.view_bugs_url@&quot; title=&quot;#bug-tracker.View_the_bug_fo_component#&quot;&gt;
 &lt;/if&gt;
 @components.num_bugs@ 
 &lt;if @components.num_bugs@ eq 1&gt;
@@ -123,39 +124,39 @@
 &lt;/if&gt;
 </pre><p>It would probably be better to do this as something like:</p><pre class="programlisting">&lt;if @components.view_bugs_url@ not nil&gt;
   &lt;if @components.num_bugs@ eq 1&gt;
-    &lt;a href="@components.view_bugs_url@" title="#bug-tracker.View_the_bug_fo_component#"&gt;#bug-tracker.one_bug#&lt;/a&gt;
+    &lt;a href=&quot;@components.view_bugs_url@&quot; title=&quot;#bug-tracker.View_the_bug_fo_component#&quot;&gt;#bug-tracker.one_bug#&lt;/a&gt;
   &lt;/if&gt;&lt;else&gt;
-    &lt;a href="@components.view_bugs_url@" title="#bug-tracker.View_the_bug_fo_component#"&gt;#bug-tracker.N_bugs#&lt;/a&gt;
+    &lt;a href=&quot;@components.view_bugs_url@&quot; title=&quot;#bug-tracker.View_the_bug_fo_component#&quot;&gt;#bug-tracker.N_bugs#&lt;/a&gt;
   &lt;/else&gt;
-&lt;/if&gt;</pre></li><li><p><b>Don't combine keys in  display text.�</b>Converting a phrase from one language to another is usually more complicated than simply replacing each word with an equivalent.  When several keys are concatenated, the resulting word order will not be correct for every language.  Different languages may use expressions or idioms that don't match the phrase key-for-key.  Create complete, distinct keys instead of building text from several keys.  For example:</p><p>Original code:</p><pre class="programlisting">multirow append links "New [bug_tracker::conn Bug]" </pre><p>Problematic conversion:</p><pre class="programlisting">multirow append links "[_ bug-tracker.New] [bug_tracker::conn Bug]"</pre><p>Better conversion:</p><pre class="programlisting">set bug_label [bug_tracker::conn Bug]
-multirow append links "[_ bug-tracker.New_Bug]" "${url_prefix}bug-add"</pre><p>... and include the variable in the key: <code class="computeroutput">"New %bug_label%"</code>.  This gives translators more control over the phrase.</p><p>In this example of bad i18n, full name is created by concatenating first and last name (admittedly this is pervasive in the toolkit):</p><pre class="programlisting">&lt;a href="@past_version.maintainer_url@" title="#bug-tracker.Email# @past_version.maintainer_email@"&gt;
+&lt;/if&gt;</pre></li><li><p><b>Don't combine keys in  display text.�</b>Converting a phrase from one language to another is usually more complicated than simply replacing each word with an equivalent.  When several keys are concatenated, the resulting word order will not be correct for every language.  Different languages may use expressions or idioms that don't match the phrase key-for-key.  Create complete, distinct keys instead of building text from several keys.  For example:</p><p>Original code:</p><pre class="programlisting">multirow append links &quot;New [bug_tracker::conn Bug]&quot; </pre><p>Problematic conversion:</p><pre class="programlisting">multirow append links &quot;[_ bug-tracker.New] [bug_tracker::conn Bug]&quot;</pre><p>Better conversion:</p><pre class="programlisting">set bug_label [bug_tracker::conn Bug]
+multirow append links &quot;[_ bug-tracker.New_Bug]&quot; &quot;${url_prefix}bug-add&quot;</pre><p>... and include the variable in the key: <tt class="computeroutput">&quot;New %bug_label%&quot;</tt>.  This gives translators more control over the phrase.</p><p>In this example of bad i18n, full name is created by concatenating first and last name (admittedly this is pervasive in the toolkit):</p><pre class="programlisting">&lt;a href=&quot;@past_version.maintainer_url@&quot; title=&quot;#bug-tracker.Email# @past_version.maintainer_email@&quot;&gt;
 @past_version.maintainer_first_names@ @past_version.maintainer_last_name@&lt;/a&gt;</pre></li><li><p><b>Avoid unnecessary duplicate keys.�</b>When phrases are exactly the same in several places, use a single key.</p><p>For common words such as
             Yes and No, you can use a library of keys at <a href="/acs-lang/admin/message-list?package%5fkey=acs%2dkernel&amp;locale=en%5fUS" target="_top">acs-kernel</a>.
             For example, instead of using
-            <code class="computeroutput">myfirstpackage.Yes</code>, you
-            can use <code class="computeroutput">acs-kernel.Yes</code>.
+            <tt class="computeroutput">myfirstpackage.Yes</tt>, you
+            can use <tt class="computeroutput">acs-kernel.Yes</tt>.
             You can also use the <a href="/acs-lang/admin/package-list?locale=en%5fUS" target="_top">Message Key Search</a> facility to find duplicates.
             Be careful, however, building up sentences from keys
             because grammar and other elements may not be consistent
             across different locales.</p><p>Additional discussion: <a href="http://openacs.org/forums/message-view?message_id=164973" target="_top">Re:
-            Bug 961 ("Control Panel" displayed instead of
-            "Administer")</a>, <a href="http://openacs.org/forums/message-view?message_id=125235" target="_top">Translation
-            server upgraded</a>, and <a href="http://openacs.org/forums/message-view?message_id=158580" target="_top">Localization questions</a>.</p></li><li><p><b>Don't internationalize internal code words.�</b>Many packages use code words or key words, such as "open" and "closed", which will never be shown to the user.  They may match key values in the database, or be used in a switch or if statement.  Don't change these.</p><p>For example, the original code is </p><pre class="programlisting">workflow::case::add_log_data \ 	    
+            Bug 961 (&quot;Control Panel&quot; displayed instead of
+            &quot;Administer&quot;)</a>, <a href="http://openacs.org/forums/message-view?message_id=125235" target="_top">Translation
+            server upgraded</a>, and <a href="http://openacs.org/forums/message-view?message_id=158580" target="_top">Localization questions</a>.</p></li><li><p><b>Don't internationalize internal code words.�</b>Many packages use code words or key words, such as &quot;open&quot; and &quot;closed&quot;, which will never be shown to the user.  They may match key values in the database, or be used in a switch or if statement.  Don't change these.</p><p>For example, the original code is </p><pre class="programlisting">workflow::case::add_log_data \ 	    
        -entry_id $entry_id \ 	    
-       -key "resolution" \ 	    
+       -key &quot;resolution&quot; \ 	    
        -value [db_string select_resolution_code {}]</pre><p>This is incorrectly internationalized to </p><pre class="programlisting">  workflow::case::add_log_data \ 	    
        -entry_id $entry_id \
-       -key "[_ bug-tracker.resolution]" \
-       -value [db_string select_resolution_code {}]</pre><p>But <code class="computeroutput">resolution</code> is a keyword in a table and in the code, so this breaks the code.  It should not have been internationalized at all.  Here's another example of text that should not have been internationalized:</p><pre class="programlisting">{show_patch_status "open"}</pre><p>It is broken if changed to</p><pre class="programlisting">{show_patch_status "[_ bug-tracker.open]"}</pre></li><li><p><b>Fix automatic truncated message keys.�</b>The automatic converter may create unique but crytic message keys.  Watch out for these and replace them with more descriptive keys.  For example:</p><pre class="programlisting">
-&lt;msg key="You"&gt;You can filter by this %component_name% by viisting %filter_url_string%&lt;/msg&gt;
-&lt;msg key="You_1"&gt;You do not have permission to map this patch to a bug. Only the submitter of the patch 
+       -key &quot;[_ bug-tracker.resolution]&quot; \
+       -value [db_string select_resolution_code {}]</pre><p>But <tt class="computeroutput">resolution</tt> is a keyword in a table and in the code, so this breaks the code.  It should not have been internationalized at all.  Here's another example of text that should not have been internationalized:</p><pre class="programlisting">{show_patch_status &quot;open&quot;}</pre><p>It is broken if changed to</p><pre class="programlisting">{show_patch_status &quot;[_ bug-tracker.open]&quot;}</pre></li><li><p><b>Fix automatic truncated message keys.�</b>The automatic converter may create unique but crytic message keys.  Watch out for these and replace them with more descriptive keys.  For example:</p><pre class="programlisting">
+&lt;msg key=&quot;You&quot;&gt;You can filter by this %component_name% by viisting %filter_url_string%&lt;/msg&gt;
+&lt;msg key=&quot;You_1&quot;&gt;You do not have permission to map this patch to a bug. Only the submitter of the patch 
 and users with write permission on this Bug Tracker project (package instance) may do so.&lt;/msg&gt;
-&lt;msg key="You_2"&gt;You do not have permission to edit this patch. Only the submitter of the patch 
-and users with write permission on the Bug Tracker project (package instance) may do so.&lt;/msg&gt;</pre><p>These would be more useful if they were, "you_can_filter", "you_do_not_have_permission_to_map_this_patch", and "you_do_not_have_permission_to_edit_this_patch".  Don't worry about exactly matching the english text, because that might change; instead try to capture the meaning of the phrase.  Ask yourself, if I was a translator and didn't know how this application worked, would this key and text make translation easy for me?
-</p><p>Sometimes the automatic converter creates keys that don't semantically match their text.  Fix these:</p><pre class="programlisting">&lt;msg key="Fix"&gt;for version&lt;/msg&gt;
-&lt;msg key="Fix_1"&gt;for&lt;/msg&gt;
-&lt;msg key="Fix_2"&gt;for Bugs&lt;/msg&gt;</pre><p>Another example: <code class="computeroutput">Bug-tracker component maintainer"</code> was converted to <code class="computeroutput">"[_ bug-tracker.Bug-tracker]"</code>.  Instead, it should be <code class="computeroutput">bug_tracker_component_maintainer</code>.</p></li><li><p><b>Translations in Avoid "clever" message reuse.�</b>Translations may need to differ depending on the context in which
+&lt;msg key=&quot;You_2&quot;&gt;You do not have permission to edit this patch. Only the submitter of the patch 
+and users with write permission on the Bug Tracker project (package instance) may do so.&lt;/msg&gt;</pre><p>These would be more useful if they were, &quot;you_can_filter&quot;, &quot;you_do_not_have_permission_to_map_this_patch&quot;, and &quot;you_do_not_have_permission_to_edit_this_patch&quot;.  Don't worry about exactly matching the english text, because that might change; instead try to capture the meaning of the phrase.  Ask yourself, if I was a translator and didn't know how this application worked, would this key and text make translation easy for me?
+</p><p>Sometimes the automatic converter creates keys that don't semantically match their text.  Fix these:</p><pre class="programlisting">&lt;msg key=&quot;Fix&quot;&gt;for version&lt;/msg&gt;
+&lt;msg key=&quot;Fix_1&quot;&gt;for&lt;/msg&gt;
+&lt;msg key=&quot;Fix_2&quot;&gt;for Bugs&lt;/msg&gt;</pre><p>Another example: <tt class="computeroutput">Bug-tracker component maintainer&quot;</tt> was converted to <tt class="computeroutput">&quot;[_ bug-tracker.Bug-tracker]&quot;</tt>.  Instead, it should be <tt class="computeroutput">bug_tracker_component_maintainer</tt>.</p></li><li><p><b>Translations in Avoid &quot;clever&quot; message reuse.�</b>Translations may need to differ depending on the context in which
 the message appears.
-</p></li><li><p><b>Avoid plurals.�</b>Different languages create plurals differently.  Try to avoid keys which will change based on the value of a number.  OpenACS does not currently support internationalization of plurals.  If you use two different keys, a plural and a singular form, your application will not localize properly for locales which use different rules or have more than two forms of plurals.</p></li><li><p><b>Quoting in the message catalog for tcl.�</b>Watch out for quoting and escaping when editing text that is also code.  For example, the original string </p><pre class="programlisting">set title "Patch \"$patch_summary\" is nice."</pre><p>breaks if the message text retains all of the escaping that was in the tcl command:</p><pre class="programlisting">&lt;msg&gt;Patch \"$patch_summary\" is nice.&lt;/msg&gt;</pre><p>When it becomes a key, it should be:</p><pre class="programlisting">&lt;msg&gt;Patch "$patch_summary" is nice.&lt;/msg&gt;</pre><p>Also, some keys had %var;noquote%, which is not needed since those
+</p></li><li><p><b>Avoid plurals.�</b>Different languages create plurals differently.  Try to avoid keys which will change based on the value of a number.  OpenACS does not currently support internationalization of plurals.  If you use two different keys, a plural and a singular form, your application will not localize properly for locales which use different rules or have more than two forms of plurals.</p></li><li><p><b>Quoting in the message catalog for tcl.�</b>Watch out for quoting and escaping when editing text that is also code.  For example, the original string </p><pre class="programlisting">set title &quot;Patch \&quot;$patch_summary\&quot; is nice.&quot;</pre><p>breaks if the message text retains all of the escaping that was in the tcl command:</p><pre class="programlisting">&lt;msg&gt;Patch \&quot;$patch_summary\&quot; is nice.&lt;/msg&gt;</pre><p>When it becomes a key, it should be:</p><pre class="programlisting">&lt;msg&gt;Patch &quot;$patch_summary&quot; is nice.&lt;/msg&gt;</pre><p>Also, some keys had %var;noquote%, which is not needed since those
           variables are not quoted (and in fact the variable won't even be
-          recognized so you get the literal %var;noquote% in the output).</p></li><li><p><b>Be careful with curly brackets.�</b>Code within curly brackets isn't evaluated.  TCL uses curly brackets as an alternative way to build lists.  But TCL also uses curly brackets as an alternative to quotation marks for quoting text.  So this original code</p><pre class="programlisting">array set names { key "Pretty" ...} </pre><p>... if converted to </p><pre class="programlisting">array set names { key "[_bug-tracker.Pretty]" ...} </pre><p>... won't work since the _ func will not be called.  Instead, it should be </p><pre class="programlisting">array set names [list key [_bug-tracker.Pretty] ...]</pre></li></ul></div></div></div><div class="navfooter"><hr><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="i18n-introduction.html">Prev</a> </td><td width="20%" align="center"><a accesskey="h" href="index.html">Home</a></td><td width="40%" align="right"> <a accesskey="n" href="i18n-design.html">Next</a></td></tr><tr><td width="40%" align="left">How Internationalization/Localization works in OpenACS </td><td width="20%" align="center"><a accesskey="u" href="i18n.html">Up</a></td><td width="40%" align="right"> Design Notes</td></tr></table><hr><address><a href="mailto:docs@openacs.org">docs@openacs.org</a></address></div><a name="comments"></a><center><a href="http://openacs.org/doc/current/i18n-convert.html#comments">View comments on this page at openacs.org</a></center></body></html>
+          recognized so you get the literal %var;noquote% in the output).</p></li><li><p><b>Be careful with curly brackets.�</b>Code within curly brackets isn't evaluated.  TCL uses curly brackets as an alternative way to build lists.  But TCL also uses curly brackets as an alternative to quotation marks for quoting text.  So this original code</p><pre class="programlisting">array set names { key &quot;Pretty&quot; ...} </pre><p>... if converted to </p><pre class="programlisting">array set names { key &quot;[_bug-tracker.Pretty]&quot; ...} </pre><p>... won't work since the _ func will not be called.  Instead, it should be </p><pre class="programlisting">array set names [list key [_bug-tracker.Pretty] ...]</pre></li></ul></div></div></div><div class="navfooter"><hr><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="i18n-introduction.html">Prev</a> </td><td width="20%" align="center"><a accesskey="h" href="index.html">Home</a></td><td width="40%" align="right"> <a accesskey="n" href="i18n-design.html">Next</a></td></tr><tr><td width="40%" align="left">How Internationalization/Localization works in OpenACS </td><td width="20%" align="center"><a accesskey="u" href="i18n.html">Up</a></td><td width="40%" align="right"> Design Notes</td></tr></table><hr><address><a href="mailto:docs@openacs.org">docs@openacs.org</a></address></div><a name="comments"></a><center><a href="http://openacs.org/doc/current/i18n-convert.html#comments">View comments on this page at openacs.org</a></center></body></html>
Index: openacs-4/packages/acs-core-docs/www/i18n-design.html
===================================================================
RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/i18n-design.html,v
diff -u -r1.9 -r1.9.4.1
--- openacs-4/packages/acs-core-docs/www/i18n-design.html	17 Jul 2006 05:38:31 -0000	1.9
+++ openacs-4/packages/acs-core-docs/www/i18n-design.html	3 Feb 2008 12:07:38 -0000	1.9.4.1
@@ -1,2 +1,3 @@
-<html><head><meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"><title>Design Notes</title><meta name="generator" content="DocBook XSL Stylesheets V1.70.1"><link rel="home" href="index.html" title="OpenACS Core Documentation"><link rel="up" href="i18n.html" title="Chapter�14.�Internationalization"><link rel="previous" href="i18n-convert.html" title="How to Internationalize a Package"><link rel="next" href="i18n-translators.html" title="Translator's Guide"><link rel="stylesheet" href="openacs.css" type="text/css"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><a href="http://openacs.org"><img src="/doc/images/alex.jpg" border="0" alt="Alex logo"></a><table width="100%" summary="Navigation header" border="0"><tr><td width="20%" align="left"><a accesskey="p" href="i18n-convert.html">Prev</a> </td><th width="60%" align="center">Chapter�14.�Internationalization</th><td width="20%" align="right"> <a accesskey="n" href="i18n-translators.html">Next</a></td></tr></table><hr></div><div class="sect1" lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="i18n-design"></a>Design Notes</h2></div></div></div><p>User locale is a property of ad_conn, <code class="computeroutput">ad_conn locale</code>.  The request processor sets this by calling <code class="computeroutput">lang::conn::locale</code>, which looks for the following in order of precedence:</p><div class="orderedlist"><ol type="1"><li><p>Use user preference for this package (stored in ad_locale_user_prefs)</p></li><li><p>Use system preference for the package (stored in apm_packages)</p></li><li><p>Use user's general preference (stored in user_preferences)</p></li><li><p>Use Browser header (<code class="computeroutput">Accept-Language</code> HTTP header)</p></li><li><p>Use system locale (an APM parameter for acs_lang)</p></li><li><p>default to en_US</p></li></ol></div><p>For ADP pages, message key lookup occurs in the templating engine.  For TCL pages, message key lookup happens with the <code class="computeroutput">_</code> function.  In both cases, if the requested locale is not found but a locale which is the default for the language which matches your locale's language is
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html><head><meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"><title>Design Notes</title><meta name="generator" content="DocBook XSL Stylesheets V1.60.1"><link rel="home" href="index.html" title="OpenACS Core Documentation"><link rel="up" href="i18n.html" title="Chapter�14.�Internationalization"><link rel="previous" href="i18n-convert.html" title="How to Internationalize a Package"><link rel="next" href="i18n-translators.html" title="Translator's Guide"><link rel="stylesheet" href="openacs.css" type="text/css"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><a href="http://openacs.org"><img src="/doc/images/alex.jpg" border="0" alt="Alex logo"></a><table width="100%" summary="Navigation header" border="0"><tr><td width="20%" align="left"><a accesskey="p" href="i18n-convert.html">Prev</a> </td><th width="60%" align="center">Chapter�14.�Internationalization</th><td width="20%" align="right"> <a accesskey="n" href="i18n-translators.html">Next</a></td></tr></table><hr></div><div class="sect1" lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="i18n-design"></a>Design Notes</h2></div></div><div></div></div><p>User locale is a property of ad_conn, <tt class="computeroutput">ad_conn locale</tt>.  The request processor sets this by calling <tt class="computeroutput">lang::conn::locale</tt>, which looks for the following in order of precedence:</p><div class="orderedlist"><ol type="1"><li><p>Use user preference for this package (stored in ad_locale_user_prefs)</p></li><li><p>Use system preference for the package (stored in apm_packages)</p></li><li><p>Use user's general preference (stored in user_preferences)</p></li><li><p>Use Browser header (<tt class="computeroutput">Accept-Language</tt> HTTP header)</p></li><li><p>Use system locale (an APM parameter for acs_lang)</p></li><li><p>default to en_US</p></li></ol></div><p>For ADP pages, message key lookup occurs in the templating engine.  For TCL pages, message key lookup happens with the <tt class="computeroutput">_</tt> function.  In both cases, if the requested locale is not found but a locale which is the default for the language which matches your locale's language is
 found, then that locale is offered instead.</p></div><div class="navfooter"><hr><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="i18n-convert.html">Prev</a> </td><td width="20%" align="center"><a accesskey="h" href="index.html">Home</a></td><td width="40%" align="right"> <a accesskey="n" href="i18n-translators.html">Next</a></td></tr><tr><td width="40%" align="left">How to Internationalize a Package </td><td width="20%" align="center"><a accesskey="u" href="i18n.html">Up</a></td><td width="40%" align="right"> Translator's Guide</td></tr></table><hr><address><a href="mailto:docs@openacs.org">docs@openacs.org</a></address></div><a name="comments"></a><center><a href="http://openacs.org/doc/current/i18n-design.html#comments">View comments on this page at openacs.org</a></center></body></html>
Index: openacs-4/packages/acs-core-docs/www/i18n-introduction.html
===================================================================
RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/i18n-introduction.html,v
diff -u -r1.11 -r1.11.4.1
--- openacs-4/packages/acs-core-docs/www/i18n-introduction.html	17 Jul 2006 05:38:31 -0000	1.11
+++ openacs-4/packages/acs-core-docs/www/i18n-introduction.html	3 Feb 2008 12:07:38 -0000	1.11.4.1
@@ -1,19 +1,20 @@
-<html><head><meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"><title>How Internationalization/Localization works in OpenACS</title><meta name="generator" content="DocBook XSL Stylesheets V1.70.1"><link rel="home" href="index.html" title="OpenACS Core Documentation"><link rel="up" href="i18n.html" title="Chapter�14.�Internationalization"><link rel="previous" href="i18n-overview.html" title="Internationalization and Localization Overview"><link rel="next" href="i18n-convert.html" title="How to Internationalize a Package"><link rel="stylesheet" href="openacs.css" type="text/css"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><a href="http://openacs.org"><img src="/doc/images/alex.jpg" border="0" alt="Alex logo"></a><table width="100%" summary="Navigation header" border="0"><tr><td width="20%" align="left"><a accesskey="p" href="i18n-overview.html">Prev</a> </td><th width="60%" align="center">Chapter�14.�Internationalization</th><td width="20%" align="right"> <a accesskey="n" href="i18n-convert.html">Next</a></td></tr></table><hr></div><div class="sect1" lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="i18n-introduction"></a>How Internationalization/Localization works in OpenACS</h2></div></div></div><p>
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html><head><meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"><title>How Internationalization/Localization works in OpenACS</title><meta name="generator" content="DocBook XSL Stylesheets V1.60.1"><link rel="home" href="index.html" title="OpenACS Core Documentation"><link rel="up" href="i18n.html" title="Chapter�14.�Internationalization"><link rel="previous" href="i18n-overview.html" title="Internationalization and Localization Overview"><link rel="next" href="i18n-convert.html" title="How to Internationalize a Package"><link rel="stylesheet" href="openacs.css" type="text/css"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><a href="http://openacs.org"><img src="/doc/images/alex.jpg" border="0" alt="Alex logo"></a><table width="100%" summary="Navigation header" border="0"><tr><td width="20%" align="left"><a accesskey="p" href="i18n-overview.html">Prev</a> </td><th width="60%" align="center">Chapter�14.�Internationalization</th><td width="20%" align="right"> <a accesskey="n" href="i18n-convert.html">Next</a></td></tr></table><hr></div><div class="sect1" lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="i18n-introduction"></a>How Internationalization/Localization works in OpenACS</h2></div></div><div></div></div><p>
       This document describes how to develop internationalized OpenACS
       packages, including writing new packages with
       internationalization and converting old packages.  Text that
-      users might see is "localizable text"; replacing monolingual text
+      users might see is &quot;localizable text&quot;; replacing monolingual text
       and single-locale date/time/money functions with generic
-      functions is "internationalization"; translating first
-      generation text into a specific language is "localization."  At
+      functions is &quot;internationalization&quot;; translating first
+      generation text into a specific language is &quot;localization.&quot;  At
       a minimum, all packages should be internationalized.  If you do
       not also localize your package for different locales, volunteers
-      may use a public "localization server" to submit suggested text.
+      may use a public &quot;localization server&quot; to submit suggested text.
       Otherwise, your package will not be usable for all locales.
     </p><p>
       The main difference between monolingual and internationalized
       packages is that all user-visible text in the code of an internationalized
-      package are coded as "message keys."  The message keys
+      package are coded as &quot;message keys.&quot;  The message keys
       correspond to a message catalog, which contains versions of the
       text for each available language.  Script files (.adp and .tcl and .vuh), database files (.sql), and APM parameters are affected.
 
@@ -32,33 +33,33 @@
       which are static and mostly text, it may be easier to create a
       new ADP page for each language.  In this case, the pages are
       distinguished by a file naming convention.
-    </p><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="i18n-content"></a>User Content</h3></div></div></div><p>OpenACS does not have a general system for supporting multiple, localized versions of user-input content.  This document currently refers only to internationalizing the text in the package user interface.</p></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="i18n-locale-templates"></a>Separate Templates for each Locale</h3></div></div></div><p>If the request processor finds a file named <code class="computeroutput">filename.locale.adp</code>, where locale matches the user's locale, it will process that file instead of <code class="computeroutput">filename.adp</code>.  For example, for a user with locale <code class="computeroutput">tl_PH</code>, the file <code class="computeroutput">index.tl_PH.adp</code>, if found, will be used instead of <code class="computeroutput">index.adp</code>.  The locale-specific file should thus contain text in the language appropriate for that locale.  The code in the page, however, should still be in English.  Message keys are processed normally.</p></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="i18n-message-catalog"></a>Message Catalogs</h3></div></div></div><div class="sect3" lang="en"><div class="titlepage"><div><div><h4 class="title"><a name="i18n-message-catalog-adps"></a>Message Keys in Template Files (ADP Files)</h4></div></div></div><p>
+    </p><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="i18n-content"></a>User Content</h3></div></div><div></div></div><p>OpenACS does not have a general system for supporting multiple, localized versions of user-input content.  This document currently refers only to internationalizing the text in the package user interface.</p></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="i18n-locale-templates"></a>Separate Templates for each Locale</h3></div></div><div></div></div><p>If the request processor finds a file named <tt class="computeroutput">filename.locale.adp</tt>, where locale matches the user's locale, it will process that file instead of <tt class="computeroutput">filename.adp</tt>.  For example, for a user with locale <tt class="computeroutput">tl_PH</tt>, the file <tt class="computeroutput">index.tl_PH.adp</tt>, if found, will be used instead of <tt class="computeroutput">index.adp</tt>.  The locale-specific file should thus contain text in the language appropriate for that locale.  The code in the page, however, should still be in English.  Message keys are processed normally.</p></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="i18n-message-catalog"></a>Message Catalogs</h3></div></div><div></div></div><div class="sect3" lang="en"><div class="titlepage"><div><div><h4 class="title"><a name="i18n-message-catalog-adps"></a>Message Keys in Template Files (ADP Files)</h4></div></div><div></div></div><p>
         Internationalizing templates is about replacing human readable
         text in a certain language with internal message keys, which
         can then be dynamically replaced with real human language in
         the desired locale.  Message keys themselves should be in
         ASCII English, as should all code.  Three different syntaxes
         are possible for message keys.
       </p><p>
-        "Short" syntax is the recommended syntax and should be used
+        &quot;Short&quot; syntax is the recommended syntax and should be used
         for new development.  When internationalizing an existing
-        package, you can use the "temporary" syntax, which the APM can
+        package, you can use the &quot;temporary&quot; syntax, which the APM can
         use to auto-generate missing keys and automatically translate
-        to the short syntax.  The "verbose" syntax is useful while
+        to the short syntax.  The &quot;verbose&quot; syntax is useful while
         developing, because it allows default text so that the page is
         usable before you have done
         localization.      </p><div class="itemizedlist"><ul type="disc"><li><p>
-            The <span class="strong"><strong>short</strong></span>:
-            <code class="computeroutput">#<span class="replaceable"><span class="replaceable">package_key.message_key</span></span>#</code>
+            The <span class="strong">short</span>:
+            <tt class="computeroutput">#<span class="replaceable"><span class="replaceable">package_key.message_key</span></span>#</tt>
           </p><p>
             The advantage of the short syntax is that it's short. It's
             as simple as inserting the value of a variable.  Example:
             <span class="replaceable"><span class="replaceable">#forum.title#</span></span>
           </p></li><li><p>
-            The <span class="strong"><strong>verbose</strong></span>: <code class="computeroutput">&lt;trn
-            key="<span class="replaceable"><span class="replaceable">package_key.message_key</span></span>"
-            locale="<span class="replaceable"><span class="replaceable">locale</span></span>"&gt;<span class="replaceable"><span class="replaceable">default
-            text</span></span>&lt;/trn&gt;</code>
+            The <span class="strong">verbose</span>: <tt class="computeroutput">&lt;trn
+            key=&quot;<span class="replaceable"><span class="replaceable">package_key.message_key</span></span>&quot;
+            locale=&quot;<span class="replaceable"><span class="replaceable">locale</span></span>&quot;&gt;<span class="replaceable"><span class="replaceable">default
+            text</span></span>&lt;/trn&gt;</tt>
           </p><p>
             The verbose syntax allows you to specify a default text in
             a certain language. This syntax is not recommended
@@ -67,11 +68,11 @@
             in the message catalog yet, because what it'll do is
             create the message key with the default text from the tag
             as the localized message.  Example: <span class="emphasis"><em>&lt;trn
-            key="forum.title" locale="en_US"&gt;Title&lt;/trn&gt;</em></span>
+            key=&quot;forum.title&quot; locale=&quot;en_US&quot;&gt;Title&lt;/trn&gt;</em></span>
           </p></li><li><p>
-            The <span class="strong"><strong>temporary</strong></span>:
-           <code class="computeroutput"> &lt;#<span class="replaceable"><span class="replaceable">message_key</span></span>
-           <span class="replaceable"><span class="replaceable">original text</span></span>#&gt;</code>
+            The <span class="strong">temporary</span>:
+           <tt class="computeroutput"> &lt;#<span class="replaceable"><span class="replaceable">message_key</span></span>
+           <span class="replaceable"><span class="replaceable">original text</span></span>#&gt;</tt>
           </p><p>
             This syntax has been designed to make it easy to
             internationalize existing pages. This is not a syntax that
@@ -82,21 +83,21 @@
             auto-generated by the APM.  Example: <span class="emphasis"><em>&lt;_ Title&gt;</em></span>
           </p></li></ul></div><p>
         We recommend the short notation for new package development.
-      </p></div><div class="sect3" lang="en"><div class="titlepage"><div><div><h4 class="title"><a name="i18n-message-catalog-tcl"></a>Message Keys in TCL Files</h4></div></div></div><p>
+      </p></div><div class="sect3" lang="en"><div class="titlepage"><div><div><h4 class="title"><a name="i18n-message-catalog-tcl"></a>Message Keys in TCL Files</h4></div></div><div></div></div><p>
         In adp files message lookups are typically done with the syntax 
-        <code class="computeroutput">\#package_key.message_key\#</code>. In Tcl
+        <tt class="computeroutput">\#package_key.message_key\#</tt>. In Tcl
         files all message lookups *must* be on either of the following formats:
       </p><p>
-        </p><div class="itemizedlist"><ul type="disc"><li><p>Typical static key lookup: <code class="computeroutput">[_ package_key.message_key]</code> - The message key and package key used here must be string literals, they can't result from variable evaluation.</p></li><li><p>
-            Static key lookup with non-default locale: <code class="computeroutput">[lang::message::lookup $locale package_key.message_key]</code> - The message key and package key used here must be string literals, they can't result from variable evaluation.</p></li><li><p>
-            Dynamic key lookup: <code class="computeroutput">[lang::util::localize $var_with_embedded_message_keys]</code> - In this case the message keys in the variable <code class="computeroutput">var_with_embedded_message_keys</code> must appear as string literals <code class="computeroutput">\#package_key.message_key\#</code> somewhere in the code. Here is an example of a dynamic lookup:
-            <code class="computeroutput">set message_key_array {
+        </p><div class="itemizedlist"><ul type="disc"><li><p>Typical static key lookup: <tt class="computeroutput">[_ package_key.message_key]</tt> - The message key and package key used here must be string literals, they can't result from variable evaluation.</p></li><li><p>
+            Static key lookup with non-default locale: <tt class="computeroutput">[lang::message::lookup $locale package_key.message_key]</tt> - The message key and package key used here must be string literals, they can't result from variable evaluation.</p></li><li><p>
+            Dynamic key lookup: <tt class="computeroutput">[lang::util::localize $var_with_embedded_message_keys]</tt> - In this case the message keys in the variable <tt class="computeroutput">var_with_embedded_message_keys</tt> must appear as string literals <tt class="computeroutput">\#package_key.message_key\#</tt> somewhere in the code. Here is an example of a dynamic lookup:
+            <tt class="computeroutput">set message_key_array {
     dynamic_key_1  \#package_key.message_key1\#
     dynamic_key_2  \#package_key.message_key2\#
 }
 
               set my_text [lang::util::localize $message_key_array([get_dynamic_key])]
-            </code>
+            </tt>
             </p></li></ul></div><p>  
       </p><p>
         Translatable texts in page TCL scripts are often found in page titles,
@@ -105,16 +106,16 @@
         that can be used on Linux to highlight translatable text in TCL files:
       </p><pre class="screen">
 # Find text in double quotes
-<strong class="userinput"><code>find -iname '*.tcl'|xargs egrep -i '"[a-z]'</code></strong>
+<b class="userinput"><tt>find -iname '*.tcl'|xargs egrep -i '&quot;[a-z]'</tt></b>
 
 # Find untranslated text in form labels, options and values
-<strong class="userinput"><code>find -iname '*.tcl'|xargs egrep -i '\-(options|label|value)'|egrep -v '&lt;#'|egrep -v '\-(value|label|options)[[:space:]]+\$[a-zA-Z_]+[[:space:]]*\\?[[:space:]]*$'</code></strong>
+<b class="userinput"><tt>find -iname '*.tcl'|xargs egrep -i '\-(options|label|value)'|egrep -v '&lt;#'|egrep -v '\-(value|label|options)[[:space:]]+\$[a-zA-Z_]+[[:space:]]*\\?[[:space:]]*$'</tt></b>
 
 # Find text in page titles and context bars
-<strong class="userinput"><code>find -iname '*.tcl'|xargs egrep -i 'set (title|page_title|context_bar) '|egrep -v '&lt;#'</code></strong>
+<b class="userinput"><tt>find -iname '*.tcl'|xargs egrep -i 'set (title|page_title|context_bar) '|egrep -v '&lt;#'</tt></b>
 
 # Find text in error messages
-<strong class="userinput"><code>find -iname '*.tcl'|xargs egrep -i '(ad_complain|ad_return_error)'|egrep -v '&lt;#'</code></strong>
+<b class="userinput"><tt>find -iname '*.tcl'|xargs egrep -i '(ad_complain|ad_return_error)'|egrep -v '&lt;#'</tt></b>
 
       </pre><p>
         You may mark up translatable text in TCL library files and TCL pages
@@ -131,74 +132,74 @@
             tempoarary message tag (&lt;#_ text_with_percentage_vars#&gt;) and run the action 
             replace tags with keys in the APM.</p></li></ul></div><p>
       The variable values in the message are usually fetched with upvar, here is an example from dotlrn:
-      <code class="computeroutput">
-      ad_return_complaint 1 "Error: A [parameter::get -parameter classes_pretty_name] 
-                   must have &lt;em&gt;no&lt;/em&gt;[parameter::get -parameter class_instances_pretty_plural] to be deleted"
-      </code>
+      <tt class="computeroutput">
+      ad_return_complaint 1 &quot;Error: A [parameter::get -parameter classes_pretty_name] 
+                   must have &lt;em&gt;no&lt;/em&gt;[parameter::get -parameter class_instances_pretty_plural] to be deleted&quot;
+      </tt>
         was replaced by:
-      <code class="computeroutput">
+      <tt class="computeroutput">
       set subject [parameter::get -localize -parameter classes_pretty_name] 
       set class_instances [parameter::get -localize -parameter class_instances_pretty_plural]
 
       ad_return_complaint 1 [_ dotlrn.class_may_not_be_deleted]
-      </code>
+      </tt>
       </p><p>
       This kind of interpolation also works in adp files where adp variable values will be inserted into the message.
       </p><p>
       Alternatively, you may pass in an array list of the variable values to be interpolated into the message so that
       our example becomes:
       </p><pre class="screen">
-<strong class="userinput"><code>set msg_subst_list [list subject [parameter::get -localize -parameter classes_pretty_name] class_instances [parameter::get -localize -parameter class_instances_pretty_plural]]
+<b class="userinput"><tt>set msg_subst_list [list subject [parameter::get -localize -parameter classes_pretty_name] class_instances [parameter::get -localize -parameter class_instances_pretty_plural]]
 
 ad_return_complaint 1 [_ dotlrn.class_may_not_be_deleted $msg_subst_list]
-</code></strong>
+</tt></b>
 </pre><p>
         When we were done going through the tcl files we ran the following
         commands to check for mistakes:
       </p><pre class="screen">
 # Message tags should usually not be in curly braces since then the message lookup may not be
 # executed then (you can usually replace curly braces with the list command). Find message tags 
 # in curly braces (should return nothing, or possibly a few lines for inspection)
-<strong class="userinput"><code>find -iname '*.tcl'|xargs egrep -i '\{.*&lt;#'</code></strong>
+<b class="userinput"><tt>find -iname '*.tcl'|xargs egrep -i '\{.*&lt;#'</tt></b>
 
 # Check if you've forgotten space between default key and text in message tags (should return nothing)
-<strong class="userinput"><code>find -iname '*.tcl'|xargs egrep -i '&lt;#_[^ ]'</code></strong>
+<b class="userinput"><tt>find -iname '*.tcl'|xargs egrep -i '&lt;#_[^ ]'</tt></b>
 
 # Review the list of tcl files with no message lookups
-<strong class="userinput"><code>for tcl_file in $(find -iname '*.tcl'); do egrep -L '(&lt;#|\[_)' $tcl_file; done</code></strong>
+<b class="userinput"><tt>for tcl_file in $(find -iname '*.tcl'); do egrep -L '(&lt;#|\[_)' $tcl_file; done</tt></b>
 </pre><p>
         When you feel ready you may vist your package in the
         <a href="/acs-admin/apm" target="_top">package manager</a>
-        and run the action "Replace tags with keys
-        and insert into catalog" on the TCL files that you've edited to
+        and run the action &quot;Replace tags with keys
+        and insert into catalog&quot; on the TCL files that you've edited to
         replace the temporary tags with calls to the message lookup
         procedure.
-      </p><div class="sect4" lang="en"><div class="titlepage"><div><div><h5 class="title"><a name="i18n-date-time-number"></a>Dates, Times, and Numbers in TCL files</h5></div></div></div><p>
+      </p><div class="sect4" lang="en"><div class="titlepage"><div><div><h5 class="title"><a name="i18n-date-time-number"></a>Dates, Times, and Numbers in TCL files</h5></div></div><div></div></div><p>
       Most date, time, and number variables are calculated in TCL files.  Dates and times must be converted when stored in the database,
       when retrieved from the database, and when displayed.  All dates
       are stored in the database in the server's timezone, which is an
       APM Parameter set at
-      <code class="computeroutput">/acs-lang/admin/set-system-timezone</code>
+      <tt class="computeroutput">/acs-lang/admin/set-system-timezone</tt>
       and readable at
-      <code class="computeroutput">lang::system::timezone.</code>.  When
+      <tt class="computeroutput">lang::system::timezone.</tt>.  When
       retrieved from the database and displayed, dates and times must
       be localized to the user's locale.
-    </p></div></div><div class="sect3" lang="en"><div class="titlepage"><div><div><h4 class="title"><a name="i18n-message-apm-params"></a>APM Parameters</h4></div></div></div><p>
+    </p></div></div><div class="sect3" lang="en"><div class="titlepage"><div><div><h4 class="title"><a name="i18n-message-apm-params"></a>APM Parameters</h4></div></div><div></div></div><p>
         Some parameters contain text that need to be localized. In
         this case, instead of storing the real text in the parameter,
         you should use message keys using the short notation above,
-        i.e.  <span class="strong"><strong>#<span class="emphasis"><em>package_key.message_key</em></span>#</strong></span>.
+        i.e.  <span class="strong">#<span class="emphasis"><em>package_key.message_key</em></span>#</span>.
       </p><p>
        In order to avoid clashes with other uses of the hash
          character, you need to tell the APM that the parameter value
          needs to be localized when retrieving it. You do that by saying:
-         <span class="strong"><strong>parameter::get -localize</strong></span>.
+         <span class="strong">parameter::get -localize</span>.
       </p><p>
         Here are a couple of examples. Say we have the following two
         parameters, taken directly from the dotlrn package.
       </p><div class="informaltable"><table cellspacing="0" border="1"><colgroup><col><col></colgroup><thead><tr><th>Parameter Name</th><th>Parameter Value</th></tr></thead><tbody><tr><td>class_instance_pages_csv</td><td>#dotlrn.class_page_home_title#,Simple 2-Column;#dotlrn.class_page_calendar_title#,Simple 1-Column;#dotlrn.class_page_file_storage_title#,Simple 1-Column</td></tr><tr><td>departments_pretty_name</td><td>#departments_pretty_name#</td></tr></tbody></table></div><p>
         Then, depending on how we retrieve the value, here's what we get:
-      </p><div class="informaltable"><table cellspacing="0" border="1"><colgroup><col><col></colgroup><thead><tr><th>Command used to retrieve Value</th><th>Retrieved Value</th></tr></thead><tbody><tr><td>parameter::get <span class="strong"><strong>-localize</strong></span> -parameter class_instances_pages_csv</td><td>Kurs Startseite,Simple 2-Column;Kalender,Simple 1-Column;Dateien,Simple 1-Column</td></tr><tr><td>parameter::get <span class="strong"><strong>-localize</strong></span> -parameter departments_pretty_name</td><td>Abteilung</td></tr><tr><td>parameter::get -parameter departments_pretty_name</td><td>#departments_pretty_name#</td></tr></tbody></table></div><p>
+      </p><div class="informaltable"><table cellspacing="0" border="1"><colgroup><col><col></colgroup><thead><tr><th>Command used to retrieve Value</th><th>Retrieved Value</th></tr></thead><tbody><tr><td>parameter::get <span class="strong">-localize</span> -parameter class_instances_pages_csv</td><td>Kurs Startseite,Simple 2-Column;Kalender,Simple 1-Column;Dateien,Simple 1-Column</td></tr><tr><td>parameter::get <span class="strong">-localize</span> -parameter departments_pretty_name</td><td>Abteilung</td></tr><tr><td>parameter::get -parameter departments_pretty_name</td><td>#departments_pretty_name#</td></tr></tbody></table></div><p>
         The value in the rightmost column in the table above is the
         value returned by an invocation of parameter::get. Note that
         for localization to happen you must use the -localize flag.
@@ -208,5 +209,5 @@
         locale.
       </p><p>
         Developers are responsible for creating the keys in the message
-        catalog, which is available at <code class="computeroutput">/acs-lang/admin/</code>
+        catalog, which is available at <tt class="computeroutput">/acs-lang/admin/</tt>
       </p></div></div></div><div class="navfooter"><hr><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="i18n-overview.html">Prev</a> </td><td width="20%" align="center"><a accesskey="h" href="index.html">Home</a></td><td width="40%" align="right"> <a accesskey="n" href="i18n-convert.html">Next</a></td></tr><tr><td width="40%" align="left">Internationalization and Localization Overview </td><td width="20%" align="center"><a accesskey="u" href="i18n.html">Up</a></td><td width="40%" align="right"> How to Internationalize a Package</td></tr></table><hr><address><a href="mailto:docs@openacs.org">docs@openacs.org</a></address></div><a name="comments"></a><center><a href="http://openacs.org/doc/current/i18n-introduction.html#comments">View comments on this page at openacs.org</a></center></body></html>
Index: openacs-4/packages/acs-core-docs/www/i18n-overview.html
===================================================================
RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/i18n-overview.html,v
diff -u -r1.9 -r1.9.4.1
--- openacs-4/packages/acs-core-docs/www/i18n-overview.html	17 Jul 2006 05:38:31 -0000	1.9
+++ openacs-4/packages/acs-core-docs/www/i18n-overview.html	3 Feb 2008 12:07:38 -0000	1.9.4.1
@@ -1 +1,2 @@
-<html><head><meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"><title>Internationalization and Localization Overview</title><meta name="generator" content="DocBook XSL Stylesheets V1.70.1"><link rel="home" href="index.html" title="OpenACS Core Documentation"><link rel="up" href="i18n.html" title="Chapter�14.�Internationalization"><link rel="previous" href="i18n.html" title="Chapter�14.�Internationalization"><link rel="next" href="i18n-introduction.html" title="How Internationalization/Localization works in OpenACS"><link rel="stylesheet" href="openacs.css" type="text/css"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><a href="http://openacs.org"><img src="/doc/images/alex.jpg" border="0" alt="Alex logo"></a><table width="100%" summary="Navigation header" border="0"><tr><td width="20%" align="left"><a accesskey="p" href="i18n.html">Prev</a> </td><th width="60%" align="center">Chapter�14.�Internationalization</th><td width="20%" align="right"> <a accesskey="n" href="i18n-introduction.html">Next</a></td></tr></table><hr></div><div class="sect1" lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="i18n-overview"></a>Internationalization and Localization Overview</h2></div></div></div><div class="table"><a name="i18n-l10n-process"></a><p class="title"><b>Table�14.1.�Internationalization and Localization Overview</b></p><div class="table-contents"><table summary="Internationalization and Localization Overview" cellspacing="0" border="1"><colgroup><col><col><col></colgroup><thead><tr><th>Stage</th><th>Task</th><th>Who</th></tr></thead><tbody><tr><td>Internationalization</td><td>Package Developer uses the acs-lang tools to replace all visible text in a package with <span class="emphasis"><em>message keys</em></span>.  (<a href="i18n-introduction.html" title="How Internationalization/Localization works in OpenACS">More information</a>)</td><td>Package Developer</td></tr><tr><td rowspan="2">Release Management</td><td>The newly internationalized package is released.</td><td>Package Developer</td></tr><tr><td>The translation server is updated with the new package.</td><td>Translation server maintainers</td></tr><tr><td>Localization</td><td>Translators work in their respective locales to write text for each message key.  (<a href="i18n-translators.html" title="Translator's Guide">More information</a>)</td><td>Translators</td></tr><tr><td rowspan="3">Release Management</td><td>The translated text in the database of the translation server is compared to the current translations in the OpenACS code base, conflicts are resolved, and the new text is written to catalog files on the translation server.</td><td>Translation server maintainers</td></tr><tr><td>The catalog files are committed to the OpenACS code base.</td><td>Translation server maintainers</td></tr><tr><td>A new version of OpenACS core and/or affected packages is released and published in the OpenACS.org repository.</td><td>Release Manager</td></tr><tr><td rowspan="2">Upgrading</td><td>Site Administrators upgrade their OpenACS sites, either via the automatic upgrade from the Repository or via tarball or CVS </td><td>Site Administrators</td></tr><tr><td>Site Administrators import the new translations.  Existing local translations, if they exist, are not overwritten.</td><td>Site Administrators</td></tr></tbody></table></div></div><br class="table-break"></div><div class="navfooter"><hr><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="i18n.html">Prev</a> </td><td width="20%" align="center"><a accesskey="h" href="index.html">Home</a></td><td width="40%" align="right"> <a accesskey="n" href="i18n-introduction.html">Next</a></td></tr><tr><td width="40%" align="left">Chapter�14.�Internationalization </td><td width="20%" align="center"><a accesskey="u" href="i18n.html">Up</a></td><td width="40%" align="right"> How Internationalization/Localization works in OpenACS</td></tr></table><hr><address><a href="mailto:docs@openacs.org">docs@openacs.org</a></address></div><a name="comments"></a><center><a href="http://openacs.org/doc/current/i18n-overview.html#comments">View comments on this page at openacs.org</a></center></body></html>
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html><head><meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"><title>Internationalization and Localization Overview</title><meta name="generator" content="DocBook XSL Stylesheets V1.60.1"><link rel="home" href="index.html" title="OpenACS Core Documentation"><link rel="up" href="i18n.html" title="Chapter�14.�Internationalization"><link rel="previous" href="i18n.html" title="Chapter�14.�Internationalization"><link rel="next" href="i18n-introduction.html" title="How Internationalization/Localization works in OpenACS"><link rel="stylesheet" href="openacs.css" type="text/css"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><a href="http://openacs.org"><img src="/doc/images/alex.jpg" border="0" alt="Alex logo"></a><table width="100%" summary="Navigation header" border="0"><tr><td width="20%" align="left"><a accesskey="p" href="i18n.html">Prev</a> </td><th width="60%" align="center">Chapter�14.�Internationalization</th><td width="20%" align="right"> <a accesskey="n" href="i18n-introduction.html">Next</a></td></tr></table><hr></div><div class="sect1" lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="i18n-overview"></a>Internationalization and Localization Overview</h2></div></div><div></div></div><div class="table"><a name="i18n-l10n-process"></a><p class="title"><b>Table�14.1.�Internationalization and Localization Overview</b></p><table summary="Internationalization and Localization Overview" cellspacing="0" border="1"><colgroup><col><col><col></colgroup><thead><tr><th>Stage</th><th>Task</th><th>Who</th></tr></thead><tbody><tr><td>Internationalization</td><td>Package Developer uses the acs-lang tools to replace all visible text in a package with <span class="emphasis"><em>message keys</em></span>.  (<a href="i18n-introduction.html" title="How Internationalization/Localization works in OpenACS">More information</a>)</td><td>Package Developer</td></tr><tr><td rowspan="2">Release Management</td><td>The newly internationalized package is released.</td><td>Package Developer</td></tr><tr><td>The translation server is updated with the new package.</td><td>Translation server maintainers</td></tr><tr><td>Localization</td><td>Translators work in their respective locales to write text for each message key.  (<a href="i18n-translators.html" title="Translator's Guide">More information</a>)</td><td>Translators</td></tr><tr><td rowspan="3">Release Management</td><td>The translated text in the database of the translation server is compared to the current translations in the OpenACS code base, conflicts are resolved, and the new text is written to catalog files on the translation server.</td><td>Translation server maintainers</td></tr><tr><td>The catalog files are committed to the OpenACS code base.</td><td>Translation server maintainers</td></tr><tr><td>A new version of OpenACS core and/or affected packages is released and published in the OpenACS.org repository.</td><td>Release Manager</td></tr><tr><td rowspan="2">Upgrading</td><td>Site Administrators upgrade their OpenACS sites, either via the automatic upgrade from the Repository or via tarball or CVS </td><td>Site Administrators</td></tr><tr><td>Site Administrators import the new translations.  Existing local translations, if they exist, are not overwritten.</td><td>Site Administrators</td></tr></tbody></table></div></div><div class="navfooter"><hr><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="i18n.html">Prev</a> </td><td width="20%" align="center"><a accesskey="h" href="index.html">Home</a></td><td width="40%" align="right"> <a accesskey="n" href="i18n-introduction.html">Next</a></td></tr><tr><td width="40%" align="left">Chapter�14.�Internationalization </td><td width="20%" align="center"><a accesskey="u" href="i18n.html">Up</a></td><td width="40%" align="right"> How Internationalization/Localization works in OpenACS</td></tr></table><hr><address><a href="mailto:docs@openacs.org">docs@openacs.org</a></address></div><a name="comments"></a><center><a href="http://openacs.org/doc/current/i18n-overview.html#comments">View comments on this page at openacs.org</a></center></body></html>
Index: openacs-4/packages/acs-core-docs/www/i18n-requirements.html
===================================================================
RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/i18n-requirements.html,v
diff -u -r1.19 -r1.19.4.1
--- openacs-4/packages/acs-core-docs/www/i18n-requirements.html	17 Jul 2006 05:38:31 -0000	1.19
+++ openacs-4/packages/acs-core-docs/www/i18n-requirements.html	3 Feb 2008 12:07:38 -0000	1.19.4.1
@@ -1,18 +1,19 @@
-<html><head><meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"><title>OpenACS Internationalization Requirements</title><meta name="generator" content="DocBook XSL Stylesheets V1.70.1"><link rel="home" href="index.html" title="OpenACS Core Documentation"><link rel="up" href="kernel-doc.html" title="Chapter�15.�Kernel Documentation"><link rel="previous" href="db-api-detailed.html" title="Database Access API"><link rel="next" href="security-requirements.html" title="Security Requirements"><link rel="stylesheet" href="openacs.css" type="text/css"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><a href="http://openacs.org"><img src="/doc/images/alex.jpg" border="0" alt="Alex logo"></a><table width="100%" summary="Navigation header" border="0"><tr><td width="20%" align="left"><a accesskey="p" href="db-api-detailed.html">Prev</a> </td><th width="60%" align="center">Chapter�15.�Kernel Documentation</th><td width="20%" align="right"> <a accesskey="n" href="security-requirements.html">Next</a></td></tr></table><hr></div><div class="sect1" lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="i18n-requirements"></a>OpenACS Internationalization Requirements</h2></div></div></div><div class="authorblurb"><p>by Henry Minsky, 
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html><head><meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"><title>OpenACS Internationalization Requirements</title><meta name="generator" content="DocBook XSL Stylesheets V1.60.1"><link rel="home" href="index.html" title="OpenACS Core Documentation"><link rel="up" href="kernel-doc.html" title="Chapter�15.�Kernel Documentation"><link rel="previous" href="db-api-detailed.html" title="Database Access API"><link rel="next" href="security-requirements.html" title="Security Requirements"><link rel="stylesheet" href="openacs.css" type="text/css"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><a href="http://openacs.org"><img src="/doc/images/alex.jpg" border="0" alt="Alex logo"></a><table width="100%" summary="Navigation header" border="0"><tr><td width="20%" align="left"><a accesskey="p" href="db-api-detailed.html">Prev</a> </td><th width="60%" align="center">Chapter�15.�Kernel Documentation</th><td width="20%" align="right"> <a accesskey="n" href="security-requirements.html">Next</a></td></tr></table><hr></div><div class="sect1" lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="i18n-requirements"></a>OpenACS Internationalization Requirements</h2></div></div><div></div></div><div class="authorblurb"><p>by Henry Minsky, 
        <a href="mailto:yon@openforce.net" target="_top">Yon Feldman</a>, 
        <a href="mailto:lars@collaboraid.biz" target="_top">Lars Pind</a>,
        <a href="mailto:peter@collaboraid.biz" target="_top">Peter Marklund</a>, 
        <a href="mailto:christian@collaboraid.biz" target="_top">Christian Hvid</a>,
        and others.</p>
           OpenACS docs are written by the named authors, and may be edited
           by OpenACS documentation staff.
-        </div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="i18n-requirements-introduction"></a>Introduction</h3></div></div></div><p>
+        </div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="i18n-requirements-introduction"></a>Introduction</h3></div></div><div></div></div><p>
       This document describes the requirements for functionality in
       the OpenACS platform to support globalization of the core and optional
       modules. The goal is to make it possible to support delivery of
       applications which work properly in multiple locales with the
       lowest development and maintenance cost.
-    </p></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="i18n-requirements-definitions"></a>Definitions</h3></div></div></div><div class="variablelist"><dl><dt><span class="term">internationalization (i18n)</span></dt><dd><p>
+    </p></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="i18n-requirements-definitions"></a>Definitions</h3></div></div><div></div></div><div class="variablelist"><dl><dt><span class="term">internationalization (i18n)</span></dt><dd><p>
               The provision within a computer program of the
               capability of making itself adaptable to the requirements of different
               native languages, local customs and coded character sets.
@@ -27,7 +28,7 @@
             A product development approach which ensures that software products
             are usable in the worldwide markets through a combination of
             internationalization and localization.
-          </p></dd></dl></div></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="II._Vision_Statement"></a>Vision Statement</h3></div></div></div><p>The Mozilla project suggests keeping two catchy phrases in
+          </p></dd></dl></div></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="II._Vision_Statement"></a>Vision Statement</h3></div></div><div></div></div><p>The Mozilla project suggests keeping two catchy phrases in
 mind when thinking about globalization:</p><div class="itemizedlist"><ul type="disc"><li><p>One code base for the world</p></li><li><p>English is just another language</p></li></ul></div><p>Building an application often involves making a number of
 assumptions on the part of the developers which depend on their own
 culture. These include constant strings in the user interface and
@@ -43,7 +44,7 @@
 kind of globalization support would be large and ongoing, since
 without a mechanism to incorporate the locale-specific changes
 cleanly back into the code base, it would require making a new fork
-of the source code for each locale.</p></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="system-application-overview"></a>System/Application Overview</h3></div></div></div><p>A globalized application will perform some or all of the
+of the source code for each locale.</p></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="system-application-overview"></a>System/Application Overview</h3></div></div><div></div></div><p>A globalized application will perform some or all of the
 following steps to handle a page request for a specific
 locale:</p><div class="orderedlist"><ol type="1"><li><p>Decide what the target locale is for an incoming page
 request</p></li><li><p>Decide which character set encoding the output should be
@@ -68,7 +69,7 @@
 Java which we will want to move to. So the design to meet the
 requirements will tend to rely on these capabilities, or close
 approximations to them where possible, in order to make it easier
-to maintain Tcl and Java OpenACS versions.</p></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="IV._Use-cases_and_User-scenarios"></a>Use-cases and User-scenarios</h3></div></div></div><p>Here are the cases that we need to be able to handle
+to maintain Tcl and Java OpenACS versions.</p></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="IV._Use-cases_and_User-scenarios"></a>Use-cases and User-scenarios</h3></div></div><div></div></div><p>Here are the cases that we need to be able to handle
 efficiently:</p><div class="orderedlist"><ol type="1"><li><p>A developer needs to author a web site/application in a
 language besides English, and possibly a character set besides
 ISO-8859-1. This includes the operation of the OpenACS itself, i.e.,
@@ -90,9 +91,9 @@
 resources such as message catalogs, non-text assets such as
 graphics, and use of templates which help to separate application
 logic from presentation.</p></li></ol></div></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="Competitive_Analysis"></a>Competitive
-Analysis</h3></div></div></div><p>Other application servers: ATG Dyanmo, Broadvision, Vignette,
+Analysis</h3></div></div><div></div></div><p>Other application servers: ATG Dyanmo, Broadvision, Vignette,
 ... ? Anyone know how they deal with i18n ?</p></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="V._Related_Links"></a>Related
-Links</h3></div></div></div><div class="itemizedlist"><ul type="disc"><li><p><span class="emphasis"><em>System/Package "coversheet" - where all
+Links</h3></div></div><div></div></div><div class="itemizedlist"><ul type="disc"><li><p><span class="emphasis"><em>System/Package &quot;coversheet&quot; - where all
 documentation for this software is linked off of</em></span></p></li><li><p><span class="emphasis"><em><a href="i18n-design.html" title="Design Notes">Design document</a></em></span></p></li><li><p><span class="emphasis"><em><a href="i18n.html" title="Chapter�14.�Internationalization">Developer's guide</a></em></span></p></li><li><p><span class="emphasis"><em>User's guide</em></span></p></li><li><p><span class="emphasis"><em>Other-cool-system-related-to-this-one
 document</em></span></p><p><a href="http://www.li18nux.net/" target="_top">LI18NUX
 2000 Globalization Specification:
@@ -104,10 +105,10 @@
 Codes for the representation of names of countries and their
 subdivisions Part 1: Country codes
 http://www.niso.org/3166.html</a></p><p><a href="http://www.isi.edu/in-notes/iana/assignments/character-sets" target="_top">IANA
-Registry of Character Sets</a></p></li><li><p><span class="emphasis"><em>Test plan</em></span></p></li><li><p><span class="emphasis"><em>Competitive system(s)</em></span></p></li></ul></div></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="VI_Requirements"></a>Requirements</h3></div></div></div><p>Because the requirements for globalization affect many areas
+Registry of Character Sets</a></p></li><li><p><span class="emphasis"><em>Test plan</em></span></p></li><li><p><span class="emphasis"><em>Competitive system(s)</em></span></p></li></ul></div></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="VI_Requirements"></a>Requirements</h3></div></div><div></div></div><p>Because the requirements for globalization affect many areas
 of the system, we will break up the requirements into phases, with
 a base required set of features, and then stages of increasing
-functionality.</p></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="VI.A_Locales"></a>Locales</h3></div></div></div><p><span class="emphasis"><em>10.0</em></span></p><p>A standard representation of locale will be used throughout
+functionality.</p></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="VI.A_Locales"></a>Locales</h3></div></div><div></div></div><p><span class="emphasis"><em>10.0</em></span></p><p>A standard representation of locale will be used throughout
 the system. A locale refers to a language and territory, and is
 uniquely identified by a combination of ISO language and ISO
 country abbreviations.</p><div class="blockquote"><blockquote class="blockquote"><p>See
@@ -117,19 +118,19 @@
 locale-aware formatting and parsing functions for numbers, dates
 and times. <span class="emphasis"><em>Note that Java has builtin support for these
 already</em></span>.</p><p><span class="emphasis"><em>10.30</em></span> For each locale there will be
-default date, number and currency formats. <em><span class="remark">Currency i18n is
-NOT IMPLEMENTED for 5.0.0.</span></em></p><p><span class="emphasis"><em>10.40</em></span>Administrators can upgrade their
-servers to use new locales via the APM. <em><span class="remark">NOT IMPLEMENTED in
+default date, number and currency formats. <i><span class="remark">Currency i18n is
+NOT IMPLEMENTED for 5.0.0.</span></i></p><p><span class="emphasis"><em>10.40</em></span>Administrators can upgrade their
+servers to use new locales via the APM. <i><span class="remark">NOT IMPLEMENTED in
 5.0.0; current workaround is to get an xml file and load it
-manually.</span></em></p></blockquote></div></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="VI.B_Associating_a_Locale_with_a_Request"></a>Associating a Locale with a Request</h3></div></div></div><p><span class="emphasis"><em>20.0</em></span></p><p>The request processor must have a mechanism for associating a
+manually.</span></i></p></blockquote></div></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="VI.B_Associating_a_Locale_with_a_Request"></a>Associating a Locale with a Request</h3></div></div><div></div></div><p><span class="emphasis"><em>20.0</em></span></p><p>The request processor must have a mechanism for associating a
 locale with each request. This locale is then used to select the
 appropriate template for a request, and will also be passed as the
 locale argument to the message catalog or locale-specific
 formatting functions.</p><div class="blockquote"><blockquote class="blockquote"><p><span class="emphasis"><em>20.10</em></span> The locale for a request should be
 computed by the following method, in descending order of
 priority:</p><div class="itemizedlist"><ul type="disc"><li><p>get locale associated with subsite or package id</p></li><li><p>get locale from user preference</p></li><li><p>get locale from site wide default</p><p><span class="emphasis"><em>20.20</em></span> An API will be provided for
 getting the current request locale from the
-<code class="literal">ad_conn</code> structure.</p></li></ul></div></blockquote></div></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="resource-bundles"></a>Resource Bundles / Content Repository</h3></div></div></div><p><span class="emphasis"><em>30.0</em></span></p><p>A mechanism must be provided for a developer to group a set
+<tt class="literal">ad_conn</tt> structure.</p></li></ul></div></blockquote></div></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="resource-bundles"></a>Resource Bundles / Content Repository</h3></div></div><div></div></div><p><span class="emphasis"><em>30.0</em></span></p><p>A mechanism must be provided for a developer to group a set
 of arbitrary content resources together, keyed by a unique
 identifier and a locale.</p><p>For example, what approaches could be used to implement a
 localizable nav-bar mechanism for a site? A navigation bar might be
@@ -141,7 +142,7 @@
 functionality might include using templates, Java ResourceBundles,
 content-item containers in the Content Repository, or some
 convention assigning a common prefix to key strings in the message
-catalog.</p></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="VI.D_Message_Catalog_for_String_Translation"></a>Message Catalog for String Translation</h3></div></div></div><p><span class="emphasis"><em>40.0</em></span></p><p>A message catalog facility will provide a database of
+catalog.</p></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="VI.D_Message_Catalog_for_String_Translation"></a>Message Catalog for String Translation</h3></div></div><div></div></div><p><span class="emphasis"><em>40.0</em></span></p><p>A message catalog facility will provide a database of
 translations for constant strings for multilingual applications. It
 must support the following:</p><div class="blockquote"><blockquote class="blockquote"><p><span class="emphasis"><em>40.10</em></span> Each message will referenced via
 unique a key.</p><p><span class="emphasis"><em>40.20</em></span> The key for a message will have
@@ -166,7 +167,7 @@
 is modified, the other translations of that string can be flagged
 as needing update.</p><p><span class="emphasis"><em>40.90</em></span> The message lookup must be as
 efficient as possible so as not to slow down the delivery of
-pages.</p></blockquote></div></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="VI.E_Character_Set_Encoding"></a>Character Set Encoding</h3></div></div></div><p><span class="emphasis"><em>Character Sets</em></span></p><p><span class="emphasis"><em>50.0</em></span> A locale will have a primary
+pages.</p></blockquote></div></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="VI.E_Character_Set_Encoding"></a>Character Set Encoding</h3></div></div><div></div></div><p><span class="emphasis"><em>Character Sets</em></span></p><p><span class="emphasis"><em>50.0</em></span> A locale will have a primary
 associated character set which is used to encode text in the
 language. When given a locale, we can query the system for the
 associated character set to use.</p><p>The assumption is that we are going to use Unicode in our
@@ -181,7 +182,7 @@
 Writing Files</p></li><li><p>When the acs-templating package writes an an ADP or
           TCL file, it assumes the file is iso-8859-1.  If the output
           charset (OutputCharset) in the AOLserver config file is set,
-          then acs-templating assumes it's that charset.  </p></li></ul></div><div class="sect3" lang="en"><div class="titlepage"><div><div><h4 class="title"><a name="Tcl_Source_File_Character_Set"></a>Tcl Source File Character Set</h4></div></div></div><div class="blockquote"><blockquote class="blockquote"><p>There are two classes of Tcl files loaded by the system;
+          then acs-templating assumes it's that charset.  </p></li></ul></div><div class="sect3" lang="en"><div class="titlepage"><div><div><h4 class="title"><a name="Tcl_Source_File_Character_Set"></a>Tcl Source File Character Set</h4></div></div><div></div></div><div class="blockquote"><blockquote class="blockquote"><p>There are two classes of Tcl files loaded by the system;
       library files loaded at server startup, and page script files,
       which are run on each page request.</p><p><span class="emphasis"><em>Should we require all Tcl files be stored as UTF8?
       That seems too much of a burden on developers.</em></span></p><p><span class="emphasis"><em>50.10</em></span> Tcl library files can be authored
@@ -190,31 +191,31 @@
       filename.</p><p><span class="emphasis"><em>50.20</em></span> Tcl page script files can be
       authored in any character set. The system must have a way to
       determine the character set before loading the files, probably from
-      the filename.</p></blockquote></div></div><div class="sect3" lang="en"><div class="titlepage"><div><div><h4 class="title"><a name="Submitted_Form_Data_Character_Set"></a>Submitted Form Data Character Set</h4></div></div></div><p><span class="emphasis"><em>50.30</em></span> Data which is submitted with a
+      the filename.</p></blockquote></div></div><div class="sect3" lang="en"><div class="titlepage"><div><div><h4 class="title"><a name="Submitted_Form_Data_Character_Set"></a>Submitted Form Data Character Set</h4></div></div><div></div></div><p><span class="emphasis"><em>50.30</em></span> Data which is submitted with a
          HTTP request using a GET or POST method may be in any character
          set. The system must be able to determine the encoding of the form
          data and convert it to Unicode on demand.  </p><p><span class="emphasis"><em>50.35</em></span> The developer must be able to
           override the default system choice of character set when parsing
-          and validating user form data. <em><span class="remark">INCOMPLETE - form
+          and validating user form data. <i><span class="remark">INCOMPLETE - form
           widgets in acs-templating/tcl/date-procs.tcl are not
           internationalized.  Also, acs-templating's UI needs to be
           internationalized by replacing all user-visible strings with
-          message keys.</span></em></p><p><span class="emphasis"><em>50.30.10</em></span>In Japan and some
+          message keys.</span></i></p><p><span class="emphasis"><em>50.30.10</em></span>In Japan and some
            other Asian languages where there are multiple character set
            encodings in common use, the server may need to attempt to do an 
            auto-detection of the character set, because buggy browsers may
-           submit form data in an unexpected alternate encoding.</p></div><div class="sect3" lang="en"><div class="titlepage"><div><div><h4 class="title"><a name="Output_Character_Set"></a>Output Character Set</h4></div></div></div><div class="blockquote"><blockquote class="blockquote"><p><span class="emphasis"><em>50.40</em></span> The output character set for a
+           submit form data in an unexpected alternate encoding.</p></div><div class="sect3" lang="en"><div class="titlepage"><div><div><h4 class="title"><a name="Output_Character_Set"></a>Output Character Set</h4></div></div><div></div></div><div class="blockquote"><blockquote class="blockquote"><p><span class="emphasis"><em>50.40</em></span> The output character set for a
             page request will be determined by default by the locale associated
             with the request (see requirement 20.0).</p><p><span class="emphasis"><em>50.50</em></span> It must be possible for a
             developer to manually override the output character set encoding
             for a request using an API function.
-      </p></blockquote></div></div></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="VI.F_ACS_Kernel_Issues"></a>ACS Kernel Issues</h3></div></div></div><div class="blockquote"><blockquote class="blockquote"><p><span class="emphasis"><em>60.10</em></span> All OpenACS error messages must use
+      </p></blockquote></div></div></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="VI.F_ACS_Kernel_Issues"></a>ACS Kernel Issues</h3></div></div><div></div></div><div class="blockquote"><blockquote class="blockquote"><p><span class="emphasis"><em>60.10</em></span> All OpenACS error messages must use
 the message catalog and the request locale to generate error
-message for the appropriate locale.<em><span class="remark">NOT IMPLEMENTED for 5.0.0.</span></em></p><p><span class="emphasis"><em>60.20</em></span> Web server error messages such as
+message for the appropriate locale.<i><span class="remark">NOT IMPLEMENTED for 5.0.0.</span></i></p><p><span class="emphasis"><em>60.20</em></span> Web server error messages such as
 404, 500, etc must also be delivered in the appropriate
 locale.</p><p><span class="emphasis"><em>60.30</em></span> Where files are written or read
 from disk, their filenames must use a character set and character
-values which are safe for the underlying operating system.</p></blockquote></div></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="VI.G_Templates"></a>Templates</h3></div></div></div><div class="blockquote"><blockquote class="blockquote"><p><span class="emphasis"><em>70.0</em></span> For a given abstract URL, the
+values which are safe for the underlying operating system.</p></blockquote></div></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="VI.G_Templates"></a>Templates</h3></div></div><div></div></div><div class="blockquote"><blockquote class="blockquote"><p><span class="emphasis"><em>70.0</em></span> For a given abstract URL, the
 designer may create multiple locale-specific template files may be
 created (one per locale or language)</p><p><span class="emphasis"><em>70.10</em></span> For a given page request, the
 system must be able to select an approprate locale-specific
@@ -226,27 +227,27 @@
 any character set. The system must have a way to know which
 character set a template file contains, so it can properly process
 it.</p></blockquote></div><div class="sect3" lang="en"><div class="titlepage"><div><div><h4 class="title"><a name="Formatting_Datasource_Output_in_Templates"></a>Formatting
-Datasource Output in Templates</h4></div></div></div><p><span class="emphasis"><em>70.50</em></span> The properties of a datasource
+Datasource Output in Templates</h4></div></div><div></div></div><p><span class="emphasis"><em>70.50</em></span> The properties of a datasource
 column may include a datatype so that the templating system can
 format the output for the current locale. The datatype is defined
 by a standard OpenACS datatype plus a format token or format string,
 for example: a date column might be specified as
 'current_date:date LONG,' or 'current_date:date
-"YYYY-Mon-DD"'</p></div><div class="sect3" lang="en"><div class="titlepage"><div><div><h4 class="title"><a name="Forms"></a>Forms</h4></div></div></div><div class="blockquote"><blockquote class="blockquote"><p><span class="emphasis"><em>70.60</em></span> The forms API must support
+&quot;YYYY-Mon-DD&quot;'</p></div><div class="sect3" lang="en"><div class="titlepage"><div><div><h4 class="title"><a name="Forms"></a>Forms</h4></div></div><div></div></div><div class="blockquote"><blockquote class="blockquote"><p><span class="emphasis"><em>70.60</em></span> The forms API must support
 construction of locale-specific HTML form widgets, such as date
 entry widgets, and form validation of user input data for
 locale-specific data, such as dates or numbers.  <span class="emphasis"><em>NOT
 IMPLEMENTED in 5.0.0.</em></span></p><p><span class="emphasis"><em>70.70</em></span> For forms which allow users to
 upload files, a standard method for a user to indicate the charset
 of a text file being uploaded must be provided.</p><p><span class="emphasis"><em>Design note: this presumably applies to uploading
-data to the content repository as well</em></span></p></blockquote></div></div></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="VI.H_Sorting_and_Searching"></a>Sorting and Searching</h3></div></div></div><div class="blockquote"><blockquote class="blockquote"><p><span class="emphasis"><em>80.10</em></span> Support API for correct collation
+data to the content repository as well</em></span></p></blockquote></div></div></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="VI.H_Sorting_and_Searching"></a>Sorting and Searching</h3></div></div><div></div></div><div class="blockquote"><blockquote class="blockquote"><p><span class="emphasis"><em>80.10</em></span> Support API for correct collation
 (sorting order) on lists of strings in locale-dependent way.</p><p><span class="emphasis"><em>80.20</em></span> For the Tcl API, we will say that
 locale-dependent sorting will use Oracle SQL operations (i.e., we
 won't provide a Tcl API for this). We require a Tcl API
 function to return the correct incantation of NLS_SORT to use for a
-given locale with <code class="literal">ORDER BY</code> clauses in
+given locale with <tt class="literal">ORDER BY</tt> clauses in
 queries.</p><p><span class="emphasis"><em>80.40</em></span> The system must handle full-text
-search in any supported language.</p></blockquote></div></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="VI.G_Time_Zones"></a>Time Zones</h3></div></div></div><div class="blockquote"><blockquote class="blockquote"><p><span class="emphasis"><em>90.10</em></span> Provide API support for specifying
+search in any supported language.</p></blockquote></div></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="VI.G_Time_Zones"></a>Time Zones</h3></div></div><div></div></div><div class="blockquote"><blockquote class="blockquote"><p><span class="emphasis"><em>90.10</em></span> Provide API support for specifying
 a time zone</p><p><span class="emphasis"><em>90.20</em></span> Provide an API for computing time
 and date operations which are aware of timezones. So for example a
 calendar module can properly synchronize items inserted into a
@@ -257,13 +258,13 @@
 zone preference should be attached via a session or else UTC should
 be used to display every date and time.</p><p><span class="emphasis"><em>90.60</em></span> The default if we can't
 determine a time zone is to display all dates and times in some
-universal time zone such as GMT.</p></blockquote></div></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="VI.H_Database"></a>Database</h3></div></div></div><div class="blockquote"><blockquote class="blockquote"><p><span class="emphasis"><em>100.10</em></span> Since UTF8 strings can use up to
+universal time zone such as GMT.</p></blockquote></div></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="VI.H_Database"></a>Database</h3></div></div><div></div></div><div class="blockquote"><blockquote class="blockquote"><p><span class="emphasis"><em>100.10</em></span> Since UTF8 strings can use up to
 three (UCS2) or six (UCS4) bytes per character, make sure that
 column size declarations in the schema are large enough to
 accomodate required data (such as email addresses in
-Japanese).  <em><span class="remark">Since 5.0.0, this is covered in the database
-install instructions for both PostgreSQL and Oracle.</span></em></p></blockquote></div></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="VI.I_Email_and_Messaging"></a>Email and
-Messaging</h3></div></div></div><p>When sending an email message, just as when delivering the
+Japanese).  <i><span class="remark">Since 5.0.0, this is covered in the database
+install instructions for both PostgreSQL and Oracle.</span></i></p></blockquote></div></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="VI.I_Email_and_Messaging"></a>Email and
+Messaging</h3></div></div><div></div></div><p>When sending an email message, just as when delivering the
 content in web page over an HTTP connection, it is necessary to be
 able to specify what character set encoding to use.
 </p><div class="blockquote"><blockquote class="blockquote"><p><span class="emphasis"><em>110.10</em></span> The email message sending API
@@ -286,10 +287,10 @@
         (http://www.ietf.org/rfc/rfc3282.txt) and other RFCs.
 </p></li><li><p>Extreme Use case: Web site has a default language of Danish.  A forum is set up for Swedes, so the forum has a package_id and a language setting of Swedish.  A poster posts to the forum in Russian (is this possible?).  A user is subscribed to the forum and has a language preference of Chinese.  What should be in the message body and message subject?
 INCOMPLETE - The mail functions in acs_mail and acs_mail_lite
-are not internationalized.</p></li><li><p>Incoming mail should be localized.</p></li></ul></div></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="i18n-requirements-implementation-notes"></a>Implementation Notes</h3></div></div></div><p>
+are not internationalized.</p></li><li><p>Incoming mail should be localized.</p></li></ul></div></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="i18n-requirements-implementation-notes"></a>Implementation Notes</h3></div></div><div></div></div><p>
     Because globalization touches many different parts of the system,
     we want to reduce the implementation risk by breaking the
     implementation into phases. 
-  </p></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="i18n-requirements-revision-history"></a>Revision History</h3></div></div></div><div class="informaltable"><table cellspacing="0" border="1"><colgroup><col><col><col><col></colgroup><tbody><tr><td><span class="strong"><strong>Document Revision #</strong></span></td><td><span class="strong"><strong>Action Taken, Notes</strong></span></td><td><span class="strong"><strong>When?</strong></span></td><td><span class="strong"><strong>By Whom?</strong></span></td></tr><tr><td>1</td><td>Updated with results of MIT-sponsored i18n work at Collaboraid.</td><td>14 Aug 2003</td><td>Joel Aufrecht</td></tr><tr><td>0.4</td><td>converting from HTML to DocBook and importing the document to the OpenACS
+  </p></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="i18n-requirements-revision-history"></a>Revision History</h3></div></div><div></div></div><div class="informaltable"><table cellspacing="0" border="1"><colgroup><col><col><col><col></colgroup><tbody><tr><td><span class="strong">Document Revision #</span></td><td><span class="strong">Action Taken, Notes</span></td><td><span class="strong">When?</span></td><td><span class="strong">By Whom?</span></td></tr><tr><td>1</td><td>Updated with results of MIT-sponsored i18n work at Collaboraid.</td><td>14 Aug 2003</td><td>Joel Aufrecht</td></tr><tr><td>0.4</td><td>converting from HTML to DocBook and importing the document to the OpenACS
                kernel documents. This was done as a part of the internationalization of
                OpenACS and .LRN for the Heidelberg University in Germany</td><td>12 September 2002</td><td>Peter Marklund</td></tr><tr><td>0.3</td><td>comments from Christian</td><td>1/14/2000</td><td>Henry Minsky</td></tr><tr><td>0.2</td><td>Minor typos fixed, clarifications to wording</td><td>11/14/2000</td><td>Henry Minsky</td></tr><tr><td>0.1</td><td>Creation</td><td>11/08/2000</td><td>Henry Minsky</td></tr></tbody></table></div></div></div><div class="navfooter"><hr><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="db-api-detailed.html">Prev</a> </td><td width="20%" align="center"><a accesskey="h" href="index.html">Home</a></td><td width="40%" align="right"> <a accesskey="n" href="security-requirements.html">Next</a></td></tr><tr><td width="40%" align="left">Database Access API </td><td width="20%" align="center"><a accesskey="u" href="kernel-doc.html">Up</a></td><td width="40%" align="right"> Security Requirements</td></tr></table><hr><address><a href="mailto:docs@openacs.org">docs@openacs.org</a></address></div><a name="comments"></a><center><a href="http://openacs.org/doc/current/i18n-requirements.html#comments">View comments on this page at openacs.org</a></center></body></html>
Index: openacs-4/packages/acs-core-docs/www/i18n-translators.html
===================================================================
RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/i18n-translators.html,v
diff -u -r1.9 -r1.9.4.1
--- openacs-4/packages/acs-core-docs/www/i18n-translators.html	17 Jul 2006 05:38:31 -0000	1.9
+++ openacs-4/packages/acs-core-docs/www/i18n-translators.html	3 Feb 2008 12:07:39 -0000	1.9.4.1
@@ -1 +1,2 @@
-<html><head><meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"><title>Translator's Guide</title><meta name="generator" content="DocBook XSL Stylesheets V1.70.1"><link rel="home" href="index.html" title="OpenACS Core Documentation"><link rel="up" href="i18n.html" title="Chapter�14.�Internationalization"><link rel="previous" href="i18n-design.html" title="Design Notes"><link rel="next" href="cvs-tips.html" title="Appendix�D.�Using CVS with an OpenACS Site"><link rel="stylesheet" href="openacs.css" type="text/css"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><a href="http://openacs.org"><img src="/doc/images/alex.jpg" border="0" alt="Alex logo"></a><table width="100%" summary="Navigation header" border="0"><tr><td width="20%" align="left"><a accesskey="p" href="i18n-design.html">Prev</a> </td><th width="60%" align="center">Chapter�14.�Internationalization</th><td width="20%" align="right"> <a accesskey="n" href="cvs-tips.html">Next</a></td></tr></table><hr></div><div class="sect1" lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="i18n-translators"></a>Translator's Guide</h2></div></div></div><p>Most translators use the <a href="http://translate.openacs.org" target="_top">OpenACS Public Translation Server</a>, because the process of getting new message keys onto the server and getting new translations back into the distribution are handled by the maintainers of that machine.  You can also do translation work on your own OpenACS site; this makes your own translations more readily available to you but also means that your work will not be shared with other users unless you take extra steps (contacting an OpenACS core developer or submitting a patch) to get your work back to the OpenACS core.</p><p>The basic steps for translators:</p><div class="itemizedlist"><ul type="disc"><li><p>Go to the <a href="/acs-lang" target="_top">Localization</a> page and choose the locale that you are translating to. If the locale is not present you need to visit <a href="/acs-lang/admin" target="_top">Administration of Localization</a> and create the locale.</p></li><li><p><b>Translating with Translator Mode.�</b>To translate messages in the pages they appear, <a href="http://localhost:8008/acs-lang/admin/translator-mode-toggle" target="_top">Toggle Translator Mode</a> and then browse to the page you want to translate.  Untranslated messages will have a yellow background and a red star that you click to translate the message. Translated messages have a green star next to them that is a hyperlink to editing your translation. There is a history mechanism that allows you to see previous translations in case you would want to revert a translation.</p><div class="mediaobject" align="center"><img src="images/translator-mode.png" align="middle"></div><p>While in Translator mode, a list of all message keys appears at the bottom of each page.</p><div class="mediaobject" align="center"><img src="images/translations.png" align="middle"></div></li><li><p><b>Batch translation.�</b>To translate many messages at once, go to <a href="/acs-lang/admin" target="_top">Administration of Localization</a>, click on the locale to translate, then click on a package, and then click <code class="computeroutput">Batch edit these messages</code>.</p><div class="mediaobject" align="center"><img src="images/translation-batch-edit.png" align="middle"></div></li></ul></div><p>When creating a new locale based on an existing one, such as creating the Guatamalan version of Spanish, you can copy the existing locale's catalog files using the script <code class="computeroutput">/packages/acs-core-docs/www/files/create-new-catalog.sh</code>.</p></div><div class="navfooter"><hr><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="i18n-design.html">Prev</a> </td><td width="20%" align="center"><a accesskey="h" href="index.html">Home</a></td><td width="40%" align="right"> <a accesskey="n" href="cvs-tips.html">Next</a></td></tr><tr><td width="40%" align="left">Design Notes </td><td width="20%" align="center"><a accesskey="u" href="i18n.html">Up</a></td><td width="40%" align="right"> Appendix�D.�Using CVS with an OpenACS Site</td></tr></table><hr><address><a href="mailto:docs@openacs.org">docs@openacs.org</a></address></div><a name="comments"></a><center><a href="http://openacs.org/doc/current/i18n-translators.html#comments">View comments on this page at openacs.org</a></center></body></html>
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html><head><meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"><title>Translator's Guide</title><meta name="generator" content="DocBook XSL Stylesheets V1.60.1"><link rel="home" href="index.html" title="OpenACS Core Documentation"><link rel="up" href="i18n.html" title="Chapter�14.�Internationalization"><link rel="previous" href="i18n-design.html" title="Design Notes"><link rel="next" href="acs-plat-dev.html" title="Part�IV.�For OpenACS Platform Developers"><link rel="stylesheet" href="openacs.css" type="text/css"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><a href="http://openacs.org"><img src="/doc/images/alex.jpg" border="0" alt="Alex logo"></a><table width="100%" summary="Navigation header" border="0"><tr><td width="20%" align="left"><a accesskey="p" href="i18n-design.html">Prev</a> </td><th width="60%" align="center">Chapter�14.�Internationalization</th><td width="20%" align="right"> <a accesskey="n" href="acs-plat-dev.html">Next</a></td></tr></table><hr></div><div class="sect1" lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="i18n-translators"></a>Translator's Guide</h2></div></div><div></div></div><p>Most translators use the <a href="http://translate.openacs.org" target="_top">OpenACS Public Translation Server</a>, because the process of getting new message keys onto the server and getting new translations back into the distribution are handled by the maintainers of that machine.  You can also do translation work on your own OpenACS site; this makes your own translations more readily available to you but also means that your work will not be shared with other users unless you take extra steps (contacting an OpenACS core developer or submitting a patch) to get your work back to the OpenACS core.</p><p>The basic steps for translators:</p><div class="itemizedlist"><ul type="disc"><li><p>Go to the <a href="/acs-lang" target="_top">Localization</a> page and choose the locale that you are translating to. If the locale is not present you need to visit <a href="/acs-lang/admin" target="_top">Administration of Localization</a> and create the locale.</p></li><li><p><b>Translating with Translator Mode.�</b>To translate messages in the pages they appear, <a href="http://localhost:8008/acs-lang/admin/translator-mode-toggle" target="_top">Toggle Translator Mode</a> and then browse to the page you want to translate.  Untranslated messages will have a yellow background and a red star that you click to translate the message. Translated messages have a green star next to them that is a hyperlink to editing your translation. There is a history mechanism that allows you to see previous translations in case you would want to revert a translation.</p><div class="mediaobject" align="center"><img src="../images/translator-mode.png" align="middle"></div><p>While in Translator mode, a list of all message keys appears at the bottom of each page.</p><div class="mediaobject" align="center"><img src="../images/translations.png" align="middle"></div></li><li><p><b>Batch translation.�</b>To translate many messages at once, go to <a href="/acs-lang/admin" target="_top">Administration of Localization</a>, click on the locale to translate, then click on a package, and then click <tt class="computeroutput">Batch edit these messages</tt>.</p><div class="mediaobject" align="center"><img src="../images/translation-batch-edit.png" align="middle"></div></li></ul></div><p>When creating a new locale based on an existing one, such as creating the Guatamalan version of Spanish, you can copy the existing locale's catalog files using the script <tt class="computeroutput">/packages/acs-core-docs/www/files/create-new-catalog.sh</tt>.</p></div><div class="navfooter"><hr><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="i18n-design.html">Prev</a> </td><td width="20%" align="center"><a accesskey="h" href="index.html">Home</a></td><td width="40%" align="right"> <a accesskey="n" href="acs-plat-dev.html">Next</a></td></tr><tr><td width="40%" align="left">Design Notes </td><td width="20%" align="center"><a accesskey="u" href="i18n.html">Up</a></td><td width="40%" align="right"> Part�IV.�For OpenACS Platform Developers</td></tr></table><hr><address><a href="mailto:docs@openacs.org">docs@openacs.org</a></address></div><a name="comments"></a><center><a href="http://openacs.org/doc/current/i18n-translators.html#comments">View comments on this page at openacs.org</a></center></body></html>
Index: openacs-4/packages/acs-core-docs/www/i18n.html
===================================================================
RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/i18n.html,v
diff -u -r1.27 -r1.27.4.1
--- openacs-4/packages/acs-core-docs/www/i18n.html	17 Jul 2006 05:38:31 -0000	1.27
+++ openacs-4/packages/acs-core-docs/www/i18n.html	3 Feb 2008 12:07:39 -0000	1.27.4.1
@@ -1,4 +1,5 @@
-<html><head><meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"><title>Chapter�14.�Internationalization</title><meta name="generator" content="DocBook XSL Stylesheets V1.70.1"><link rel="home" href="index.html" title="OpenACS Core Documentation"><link rel="up" href="acs-package-dev.html" title="Part�III.�For OpenACS Package Developers"><link rel="previous" href="requirements-template.html" title="System/Application Requirements Template"><link rel="next" href="i18n-overview.html" title="Internationalization and Localization Overview"><link rel="stylesheet" href="openacs.css" type="text/css"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><a href="http://openacs.org"><img src="/doc/images/alex.jpg" border="0" alt="Alex logo"></a><table width="100%" summary="Navigation header" border="0"><tr><td width="20%" align="left"><a accesskey="p" href="requirements-template.html">Prev</a> </td><th width="60%" align="center">Part�III.�For OpenACS Package Developers</th><td width="20%" align="right"> <a accesskey="n" href="i18n-overview.html">Next</a></td></tr></table><hr></div><div class="chapter" lang="en"><div class="titlepage"><div><div><h2 class="title"><a name="i18n"></a>Chapter�14.�Internationalization</h2></div></div></div><div class="toc"><p><b>Table of Contents</b></p><dl><dt><span class="sect1"><a href="i18n-overview.html">Internationalization and Localization Overview</a></span></dt><dt><span class="sect1"><a href="i18n-introduction.html">How Internationalization/Localization works in OpenACS</a></span></dt><dt><span class="sect1"><a href="i18n-convert.html">How to Internationalize a Package</a></span></dt><dt><span class="sect1"><a href="i18n-design.html">Design Notes</a></span></dt><dt><span class="sect1"><a href="i18n-translators.html">Translator's Guide</a></span></dt></dl></div><div class="authorblurb"><p>
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html><head><meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"><title>Chapter�14.�Internationalization</title><meta name="generator" content="DocBook XSL Stylesheets V1.60.1"><link rel="home" href="index.html" title="OpenACS Core Documentation"><link rel="up" href="acs-package-dev.html" title="Part�III.�For OpenACS Package Developers"><link rel="previous" href="requirements-template.html" title="System/Application Requirements Template"><link rel="next" href="i18n-overview.html" title="Internationalization and Localization Overview"><link rel="stylesheet" href="openacs.css" type="text/css"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><a href="http://openacs.org"><img src="/doc/images/alex.jpg" border="0" alt="Alex logo"></a><table width="100%" summary="Navigation header" border="0"><tr><td width="20%" align="left"><a accesskey="p" href="requirements-template.html">Prev</a> </td><th width="60%" align="center">Part�III.�For OpenACS Package Developers</th><td width="20%" align="right"> <a accesskey="n" href="i18n-overview.html">Next</a></td></tr></table><hr></div><div class="chapter" lang="en"><div class="titlepage"><div><div><h2 class="title"><a name="i18n"></a>Chapter�14.�Internationalization</h2></div></div><div></div></div><div class="toc"><p><b>Table of Contents</b></p><dl><dt><a href="i18n-overview.html">Internationalization and Localization Overview</a></dt><dt><a href="i18n-introduction.html">How Internationalization/Localization works in OpenACS</a></dt><dt><a href="i18n-convert.html">How to Internationalize a Package</a></dt><dt><a href="i18n-design.html">Design Notes</a></dt><dt><a href="i18n-translators.html">Translator's Guide</a></dt></dl></div><div class="authorblurb"><p>
       By <a href="http://www.petermarklund.com/" target="_top">Peter Marklund</a>
       and <a href="http://www.pinds.com/" target="_top">Lars Pind</a>
     </p>
Index: openacs-4/packages/acs-core-docs/www/index.html
===================================================================
RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/index.html,v
diff -u -r1.46 -r1.46.4.1
--- openacs-4/packages/acs-core-docs/www/index.html	17 Jul 2006 05:38:31 -0000	1.46
+++ openacs-4/packages/acs-core-docs/www/index.html	3 Feb 2008 12:07:39 -0000	1.46.4.1
@@ -1,3 +1,4 @@
-<html><head><meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"><title>OpenACS Core Documentation</title><meta name="generator" content="DocBook XSL Stylesheets V1.70.1"><link rel="home" href="index.html" title="OpenACS Core Documentation"><link rel="next" href="for-everyone.html" title="Part�I.�OpenACS For Everyone"><link rel="stylesheet" href="openacs.css" type="text/css"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><a href="http://openacs.org"><img src="/doc/images/alex.jpg" border="0" alt="Alex logo"></a><table width="100%" summary="Navigation header" border="0"><tr><td width="20%" align="left"> </td><th width="60%" align="center"></th><td width="20%" align="right"> <a accesskey="n" href="for-everyone.html">Next</a></td></tr></table><hr></div><div class="book" lang="en"><div class="titlepage"><div><div><h1 class="title"><a name="id838192"></a>OpenACS Core Documentation</h1></div></div><hr></div><div class="toc"><p><b>Table of Contents</b></p><dl><dt><span class="part"><a href="for-everyone.html">I. OpenACS For Everyone</a></span></dt><dd><dl><dt><span class="chapter"><a href="general-documents.html">1. High level information: What is OpenACS?</a></span></dt><dd><dl><dt><span class="sect1"><a href="openacs-overview.html">Overview</a></span></dt><dt><span class="sect1"><a href="release-notes.html">OpenACS Release Notes</a></span></dt></dl></dd></dl></dd><dt><span class="part"><a href="acs-admin.html">II. Administrator's Guide</a></span></dt><dd><dl><dt><span class="chapter"><a href="install-overview.html">2. Installation Overview</a></span></dt><dd><dl><dt><span class="sect1"><a href="install-steps.html">Basic Steps</a></span></dt><dt><span class="sect1"><a href="individual-programs.html">Prerequisite Software</a></span></dt></dl></dd><dt><span class="chapter"><a href="complete-install.html">3. Complete Installation</a></span></dt><dd><dl><dt><span class="sect1"><a href="unix-installation.html">Install a Unix-like system and supporting software</a></span></dt><dt><span class="sect1"><a href="oracle.html">Install Oracle 8.1.7</a></span></dt><dt><span class="sect1"><a href="postgres.html">Install PostgreSQL</a></span></dt><dt><span class="sect1"><a href="aolserver4.html">Install AOLserver 4</a></span></dt><dt><span class="sect1"><a href="openacs.html">Install OpenACS 5.2.3rc1</a></span></dt><dt><span class="sect1"><a href="win2k-installation.html">OpenACS Installation Guide for Windows2000</a></span></dt><dt><span class="sect1"><a href="mac-installation.html">OpenACS Installation Guide for Mac OS X</a></span></dt></dl></dd><dt><span class="chapter"><a href="configuring-new-site.html">4. Configuring a new OpenACS Site</a></span></dt><dd><dl><dt><span class="sect1"><a href="configuring-install-packages.html">Installing OpenACS packages</a></span></dt><dt><span class="sect1"><a href="configuring-mounting-packages.html">Mounting OpenACS packages</a></span></dt><dt><span class="sect1"><a href="configuring-configuring-packages.html">Configuring an OpenACS package</a></span></dt><dt><span class="sect1"><a href="configuring-configuring-permissions.html">Setting Permissions on an OpenACS package</a></span></dt><dt><span class="sect1"><a href="how-do-I.html">How Do I?</a></span></dt></dl></dd><dt><span class="chapter"><a href="upgrade.html">5. Upgrading</a></span></dt><dd><dl><dt><span class="sect1"><a href="upgrade-overview.html">Overview</a></span></dt><dt><span class="sect1"><a href="upgrade-4.5-to-4.6.html">Upgrading 4.5 or higher to 4.6.3</a></span></dt><dt><span class="sect1"><a href="upgrade-4.6.3-to-5.html">Upgrading OpenACS 4.6.3 to 5.0</a></span></dt><dt><span class="sect1"><a href="upgrade-5-0-dot.html">Upgrading an OpenACS 5.0.0 or greater installation</a></span></dt><dt><span class="sect1"><a href="upgrade-openacs-files.html">Upgrading the OpenACS files</a></span></dt><dt><span class="sect1"><a href="upgrade-supporting.html">Upgrading Platform components</a></span></dt></dl></dd><dt><span class="chapter"><a href="maintenance-web.html">6. Production Environments</a></span></dt><dd><dl><dt><span class="sect1"><a href="install-openacs-keepalive.html">Starting and Stopping an OpenACS instance.</a></span></dt><dt><span class="sect1"><a href="install-openacs-inittab.html">AOLserver keepalive with inittab</a></span></dt><dt><span class="sect1"><a href="install-next-add-server.html">Running multiple services on one machine</a></span></dt><dt><span class="sect1"><a href="high-avail.html">High Availability/High Performance Configurations</a></span></dt><dt><span class="sect1"><a href="maintenance-deploy.html">Staged Deployment for Production Networks</a></span></dt><dt><span class="sect1"><a href="install-ssl.html">Installing SSL Support for an OpenACS service</a></span></dt><dt><span class="sect1"><a href="analog-setup.html">Set up Log Analysis Reports</a></span></dt><dt><span class="sect1"><a href="uptime.html">External uptime validation</a></span></dt><dt><span class="sect1"><a href="maint-performance.html">Diagnosing Performance Problems</a></span></dt></dl></dd><dt><span class="chapter"><a href="database-management.html">7. Database Management</a></span></dt><dd><dl><dt><span class="sect1"><a href="remote-postgres.html">Running a PostgreSQL database on another server</a></span></dt><dt><span class="sect1"><a href="install-openacs-delete-tablespace.html">Deleting a tablespace</a></span></dt><dt><span class="sect1"><a href="install-next-nightly-vacuum.html">Vacuum Postgres nightly</a></span></dt></dl></dd><dt><span class="chapter"><a href="backup-recovery.html">8. Backup and Recovery</a></span></dt><dd><dl><dt><span class="sect1"><a href="install-next-backups.html">Backup Strategy</a></span></dt><dt><span class="sect1"><a href="snapshot-backup.html">Manual backup and recovery</a></span></dt><dt><span class="sect1"><a href="automated-backup.html">Automated Backup</a></span></dt><dt><span class="sect1"><a href="backups-with-cvs.html">Using CVS for backup-recovery</a></span></dt></dl></dd><dt><span class="appendix"><a href="install-redhat.html">A. Install Red Hat 8/9</a></span></dt><dt><span class="appendix"><a href="install-more-software.html">B. Install additional supporting software</a></span></dt><dd><dl><dt><span class="sect1"><a href="openacs-unpack.html">Unpack the OpenACS tarball</a></span></dt><dt><span class="sect1"><a href="install-cvs.html">Initialize CVS (OPTIONAL)</a></span></dt><dt><span class="sect1"><a href="psgml-for-emacs.html">Add PSGML commands to emacs init file (OPTIONAL)</a></span></dt><dt><span class="sect1"><a href="install-daemontools.html">Install Daemontools (OPTIONAL)</a></span></dt><dt><span class="sect1"><a href="install-qmail.html">Install qmail (OPTIONAL)</a></span></dt><dt><span class="sect1"><a href="analog-install.html">Install Analog web file analyzer</a></span></dt><dt><span class="sect1"><a href="install-nspam.html">Install nspam</a></span></dt><dt><span class="sect1"><a href="install-full-text-search-tsearch2.html">Install Full Text Search using Tsearch2</a></span></dt><dt><span class="sect1"><a href="install-full-text-search-openfts.html">Install Full Text Search using OpenFTS (deprecated see tsearch2)</a></span></dt><dt><span class="sect1"><a href="install-nsopenssl.html">Install nsopenssl</a></span></dt><dt><span class="sect1"><a href="install-tclwebtest.html">Install tclwebtest.</a></span></dt><dt><span class="sect1"><a href="install-php.html">Install PHP for use in AOLserver</a></span></dt><dt><span class="sect1"><a href="install-squirrelmail.html">Install Squirrelmail for use as a webmail system for OpenACS</a></span></dt><dt><span class="sect1"><a href="install-pam-radius.html">Install PAM Radius for use as external authentication</a></span></dt><dt><span class="sect1"><a href="install-ldap-radius.html">Install LDAP for use as external authentication</a></span></dt><dt><span class="sect1"><a href="aolserver.html">Install AOLserver 3.3oacs1</a></span></dt></dl></dd><dt><span class="appendix"><a href="credits.html">C. Credits</a></span></dt><dd><dl><dt><span class="section"><a href="install-origins.html">Where did this document come from?</a></span></dt><dt><span class="section"><a href="os-install.html">Linux Install Guides</a></span></dt><dt><span class="section"><a href="os-security.html">Security Information</a></span></dt><dt><span class="section"><a href="install-resources.html">Resources</a></span></dt></dl></dd></dl></dd><dt><span class="part"><a href="acs-package-dev.html">III. For OpenACS Package Developers</a></span></dt><dd><dl><dt><span class="chapter"><a href="tutorial.html">9. Development Tutorial</a></span></dt><dd><dl><dt><span class="sect1"><a href="tutorial-newpackage.html">Creating an Application Package</a></span></dt><dt><span class="sect1"><a href="tutorial-database.html">Setting Up Database Objects</a></span></dt><dt><span class="sect1"><a href="tutorial-pages.html">Creating Web Pages</a></span></dt><dt><span class="sect1"><a href="tutorial-debug.html">Debugging and Automated Testing</a></span></dt></dl></dd><dt><span class="chapter"><a href="tutorial-advanced.html">10. Advanced Topics</a></span></dt><dd><dl><dt><span class="sect1"><a href="tutorial-specs.html">Write the Requirements and Design Specs</a></span></dt><dt><span class="sect1"><a href="tutorial-cvs.html">Add the new package to CVS</a></span></dt><dt><span class="sect1"><a href="tutorial-etp-templates.html">OpenACS Edit This Page Templates</a></span></dt><dt><span class="sect1"><a href="tutorial-comments.html">Adding Comments</a></span></dt><dt><span class="sect1"><a href="tutorial-admin-pages.html">Admin Pages</a></span></dt><dt><span class="sect1"><a href="tutorial-categories.html">Categories</a></span></dt><dt><span class="sect1"><a href="profile-code.html">Profile your code</a></span></dt><dt><span class="sect1"><a href="tutorial-distribute.html">Prepare the package for distribution.</a></span></dt><dt><span class="sect1"><a href="tutorial-upgrades.html">Distributing upgrades of your package</a></span></dt><dt><span class="sect1"><a href="tutorial-notifications.html">Notifications</a></span></dt><dt><span class="sect1"><a href="tutorial-hierarchical.html">Hierarchical data</a></span></dt><dt><span class="sect1"><a href="tutorial-vuh.html">Using .vuh files for pretty urls</a></span></dt><dt><span class="sect1"><a href="tutorial-css-layout.html">Laying out a page with CSS instead of tables</a></span></dt><dt><span class="sect1"><a href="tutorial-html-email.html">Sending HTML email from your application</a></span></dt><dt><span class="sect1"><a href="tutorial-caching.html">Basic Caching</a></span></dt><dt><span class="sect1"><a href="tutorial-schedule-procs.html">Scheduled Procedures</a></span></dt><dt><span class="sect1"><a href="tutorial-wysiwyg-editor.html">Enabling WYSIWYG</a></span></dt><dt><span class="sect1"><a href="tutorial-parameters.html">Adding in parameters for your package</a></span></dt><dt><span class="sect1"><a href="tutorial-upgrade-scripts.html">Writing upgrade scripts</a></span></dt><dt><span class="sect1"><a href="tutorial-second-database.html">Connect to a second database</a></span></dt><dt><span class="sect1"><a href="tutorial-future-topics.html">Future Topics</a></span></dt></dl></dd><dt><span class="chapter"><a href="dev-guide.html">11. Development Reference</a></span></dt><dd><dl><dt><span class="sect1"><a href="packages.html">OpenACS Packages</a></span></dt><dt><span class="sect1"><a href="objects.html">OpenACS Data Models and the Object System</a></span></dt><dt><span class="sect1"><a href="request-processor.html">The Request Processor</a></span></dt><dt><span class="sect1"><a href="db-api.html">The OpenACS Database Access API</a></span></dt><dt><span class="sect1"><a href="templates.html">Using Templates in OpenACS</a></span></dt><dt><span class="sect1"><a href="permissions.html">Groups, Context, Permissions</a></span></dt><dt><span class="sect1"><a href="subsites.html">Writing OpenACS Application Pages</a></span></dt><dt><span class="sect1"><a href="parties.html">Parties in OpenACS</a></span></dt><dt><span class="sect1"><a href="permissions-tediously-explained.html">OpenACS Permissions Tediously Explained</a></span></dt><dt><span class="sect1"><a href="object-identity.html">Object Identity</a></span></dt><dt><span class="sect1"><a href="programming-with-aolserver.html">Programming with AOLserver</a></span></dt><dt><span class="sect1"><a href="form-builder.html">Using Form Builder: building html forms dynamically</a></span></dt></dl></dd><dt><span class="chapter"><a href="eng-standards.html">12. Engineering Standards</a></span></dt><dd><dl><dt><span class="sect1"><a href="style-guide.html">OpenACS Style Guide</a></span></dt><dt><span class="sect1"><a href="cvs-guidelines.html">
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html><head><meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"><title>OpenACS Core Documentation</title><meta name="generator" content="DocBook XSL Stylesheets V1.60.1"><link rel="home" href="index.html" title="OpenACS Core Documentation"><link rel="next" href="for-everyone.html" title="Part�I.�OpenACS For Everyone"><link rel="stylesheet" href="openacs.css" type="text/css"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><a href="http://openacs.org"><img src="/doc/images/alex.jpg" border="0" alt="Alex logo"></a><table width="100%" summary="Navigation header" border="0"><tr><td width="20%" align="left"> </td><th width="60%" align="center"></th><td width="20%" align="right"> <a accesskey="n" href="for-everyone.html">Next</a></td></tr></table><hr></div><div class="book" lang="en"><div class="titlepage"><div><div><h1 class="title"><a name="id2846580"></a>OpenACS Core Documentation</h1></div></div><div></div><hr></div><div class="toc"><p><b>Table of Contents</b></p><dl><dt>I. <a href="for-everyone.html">OpenACS For Everyone</a></dt><dd><dl><dt>1. <a href="general-documents.html">High level information: What is OpenACS?</a></dt><dd><dl><dt><a href="openacs-overview.html">Overview</a></dt><dt><a href="release-notes.html">OpenACS Release Notes</a></dt></dl></dd></dl></dd><dt>II. <a href="acs-admin.html">Administrator's Guide</a></dt><dd><dl><dt>2. <a href="install-overview.html">Installation Overview</a></dt><dd><dl><dt><a href="install-steps.html">Basic Steps</a></dt><dt><a href="individual-programs.html">Prerequisite Software</a></dt></dl></dd><dt>3. <a href="complete-install.html">Complete Installation</a></dt><dd><dl><dt><a href="unix-installation.html">Install a Unix-like system and supporting software</a></dt><dt><a href="oracle.html">Install Oracle 8.1.7</a></dt><dt><a href="postgres.html">Install PostgreSQL</a></dt><dt><a href="aolserver4.html">Install AOLserver 4</a></dt><dt><a href="openacs.html">Install OpenACS 5.4.0</a></dt><dt><a href="win2k-installation.html">OpenACS Installation Guide for Windows2000</a></dt><dt><a href="mac-installation.html">OpenACS Installation Guide for Mac OS X</a></dt></dl></dd><dt>4. <a href="configuring-new-site.html">Configuring a new OpenACS Site</a></dt><dd><dl><dt><a href="configuring-install-packages.html">Installing OpenACS packages</a></dt><dt><a href="configuring-mounting-packages.html">Mounting OpenACS packages</a></dt><dt><a href="configuring-configuring-packages.html">Configuring an OpenACS package</a></dt><dt><a href="configuring-configuring-permissions.html">Setting Permissions on an OpenACS package</a></dt><dt><a href="how-do-I.html">How Do I?</a></dt></dl></dd><dt>5. <a href="upgrade.html">Upgrading</a></dt><dd><dl><dt><a href="upgrade-overview.html">Overview</a></dt><dt><a href="upgrade-4.5-to-4.6.html">Upgrading 4.5 or higher to 4.6.3</a></dt><dt><a href="upgrade-4.6.3-to-5.html">Upgrading OpenACS 4.6.3 to 5.0</a></dt><dt><a href="upgrade-5-0-dot.html">Upgrading an OpenACS 5.0.0 or greater installation</a></dt><dt><a href="upgrade-openacs-files.html">Upgrading the OpenACS files</a></dt><dt><a href="upgrade-supporting.html">Upgrading Platform components</a></dt></dl></dd><dt>6. <a href="maintenance-web.html">Production Environments</a></dt><dd><dl><dt><a href="install-openacs-keepalive.html">Starting and Stopping an OpenACS instance.</a></dt><dt><a href="install-openacs-inittab.html">AOLserver keepalive with inittab</a></dt><dt><a href="install-next-add-server.html">Running multiple services on one machine</a></dt><dt><a href="high-avail.html">High Availability/High Performance Configurations</a></dt><dt><a href="maintenance-deploy.html">Staged Deployment for Production Networks</a></dt><dt><a href="install-ssl.html">Installing SSL Support for an OpenACS service</a></dt><dt><a href="analog-setup.html">Set up Log Analysis Reports</a></dt><dt><a href="uptime.html">External uptime validation</a></dt><dt><a href="maint-performance.html">Diagnosing Performance Problems</a></dt></dl></dd><dt>7. <a href="database-management.html">Database Management</a></dt><dd><dl><dt><a href="remote-postgres.html">Running a PostgreSQL database on another server</a></dt><dt><a href="install-openacs-delete-tablespace.html">Deleting a tablespace</a></dt><dt><a href="install-next-nightly-vacuum.html">Vacuum Postgres nightly</a></dt></dl></dd><dt>8. <a href="backup-recovery.html">Backup and Recovery</a></dt><dd><dl><dt><a href="install-next-backups.html">Backup Strategy</a></dt><dt><a href="snapshot-backup.html">Manual backup and recovery</a></dt><dt><a href="automated-backup.html">Automated Backup</a></dt><dt><a href="backups-with-cvs.html">Using CVS for backup-recovery</a></dt></dl></dd><dt>A. <a href="install-redhat.html">Install Red Hat 8/9</a></dt><dt>B. <a href="install-more-software.html">Install additional supporting software</a></dt><dd><dl><dt><a href="openacs-unpack.html">Unpack the OpenACS tarball</a></dt><dt><a href="install-cvs.html">Initialize CVS (OPTIONAL)</a></dt><dt><a href="psgml-for-emacs.html">Add PSGML commands to emacs init file (OPTIONAL)</a></dt><dt><a href="install-daemontools.html">Install Daemontools (OPTIONAL)</a></dt><dt><a href="install-qmail.html">Install qmail (OPTIONAL)</a></dt><dt><a href="analog-install.html">Install Analog web file analyzer</a></dt><dt><a href="install-nspam.html">Install nspam</a></dt><dt><a href="install-full-text-search-tsearch2.html">Install Full Text Search using Tsearch2</a></dt><dt><a href="install-full-text-search-openfts.html">Install Full Text Search using OpenFTS (deprecated see tsearch2)</a></dt><dt><a href="install-nsopenssl.html">Install nsopenssl</a></dt><dt><a href="install-tclwebtest.html">Install tclwebtest.</a></dt><dt><a href="install-php.html">Install PHP for use in AOLserver</a></dt><dt><a href="install-squirrelmail.html">Install Squirrelmail for use as a webmail system for OpenACS</a></dt><dt><a href="install-pam-radius.html">Install PAM Radius for use as external authentication</a></dt><dt><a href="install-ldap-radius.html">Install LDAP for use as external authentication</a></dt><dt><a href="aolserver.html">Install AOLserver 3.3oacs1</a></dt></dl></dd><dt>C. <a href="credits.html">Credits</a></dt><dd><dl><dt><a href="install-origins.html">Where did this document come from?</a></dt><dt><a href="os-install.html">Linux Install Guides</a></dt><dt><a href="os-security.html">Security Information</a></dt><dt><a href="install-resources.html">Resources</a></dt></dl></dd></dl></dd><dt>III. <a href="acs-package-dev.html">For OpenACS Package Developers</a></dt><dd><dl><dt>9. <a href="tutorial.html">Development Tutorial</a></dt><dd><dl><dt><a href="tutorial-newpackage.html">Creating an Application Package</a></dt><dt><a href="tutorial-database.html">Setting Up Database Objects</a></dt><dt><a href="tutorial-pages.html">Creating Web Pages</a></dt><dt><a href="tutorial-debug.html">Debugging and Automated Testing</a></dt></dl></dd><dt>10. <a href="tutorial-advanced.html">Advanced Topics</a></dt><dd><dl><dt><a href="tutorial-specs.html">Write the Requirements and Design Specs</a></dt><dt><a href="tutorial-cvs.html">Add the new package to CVS</a></dt><dt><a href="tutorial-etp-templates.html">OpenACS Edit This Page Templates</a></dt><dt><a href="tutorial-comments.html">Adding Comments</a></dt><dt><a href="tutorial-admin-pages.html">Admin Pages</a></dt><dt><a href="tutorial-categories.html">Categories</a></dt><dt><a href="profile-code.html">Profile your code</a></dt><dt><a href="tutorial-distribute.html">Prepare the package for distribution.</a></dt><dt><a href="tutorial-upgrades.html">Distributing upgrades of your package</a></dt><dt><a href="tutorial-notifications.html">Notifications</a></dt><dt><a href="tutorial-hierarchical.html">Hierarchical data</a></dt><dt><a href="tutorial-vuh.html">Using .vuh files for pretty urls</a></dt><dt><a href="tutorial-css-layout.html">Laying out a page with CSS instead of tables</a></dt><dt><a href="tutorial-html-email.html">Sending HTML email from your application</a></dt><dt><a href="tutorial-caching.html">Basic Caching</a></dt><dt><a href="tutorial-schedule-procs.html">Scheduled Procedures</a></dt><dt><a href="tutorial-wysiwyg-editor.html">Enabling WYSIWYG</a></dt><dt><a href="tutorial-parameters.html">Adding in parameters for your package</a></dt><dt><a href="tutorial-upgrade-scripts.html">Writing upgrade scripts</a></dt><dt><a href="tutorial-second-database.html">Connect to a second database</a></dt><dt><a href="tutorial-future-topics.html">Future Topics</a></dt></dl></dd><dt>11. <a href="dev-guide.html">Development Reference</a></dt><dd><dl><dt><a href="packages.html">OpenACS Packages</a></dt><dt><a href="objects.html">OpenACS Data Models and the Object System</a></dt><dt><a href="request-processor.html">The Request Processor</a></dt><dt><a href="db-api.html">The OpenACS Database Access API</a></dt><dt><a href="templates.html">Using Templates in OpenACS</a></dt><dt><a href="permissions.html">Groups, Context, Permissions</a></dt><dt><a href="subsites.html">Writing OpenACS Application Pages</a></dt><dt><a href="parties.html">Parties in OpenACS</a></dt><dt><a href="permissions-tediously-explained.html">OpenACS Permissions Tediously Explained</a></dt><dt><a href="object-identity.html">Object Identity</a></dt><dt><a href="programming-with-aolserver.html">Programming with AOLserver</a></dt><dt><a href="form-builder.html">Using Form Builder: building html forms dynamically</a></dt></dl></dd><dt>12. <a href="eng-standards.html">Engineering Standards</a></dt><dd><dl><dt><a href="style-guide.html">OpenACS Style Guide</a></dt><dt><a href="cvs-guidelines.html">
     CVS Guidelines
-  </a></span></dt><dt><span class="sect1"><a href="eng-standards-versioning.html">Release Version Numbering</a></span></dt><dt><span class="sect1"><a href="eng-standards-constraint-naming.html">Constraint naming standard</a></span></dt><dt><span class="sect1"><a href="eng-standards-filenaming.html">ACS File Naming and Formatting Standards</a></span></dt><dt><span class="sect1"><a href="eng-standards-plsql.html">PL/SQL Standards</a></span></dt><dt><span class="sect1"><a href="variables.html">Variables</a></span></dt><dt><span class="sect1"><a href="automated-testing-best-practices.html">Automated Testing</a></span></dt></dl></dd><dt><span class="chapter"><a href="doc-standards.html">13. Documentation Standards</a></span></dt><dd><dl><dt><span class="sect1"><a href="docbook-primer.html">OpenACS Documentation Guide</a></span></dt><dt><span class="sect1"><a href="psgml-mode.html">Using PSGML mode in Emacs</a></span></dt><dt><span class="sect1"><a href="nxml-mode.html">Using nXML mode in Emacs</a></span></dt><dt><span class="sect1"><a href="filename.html">Detailed Design Documentation Template</a></span></dt><dt><span class="sect1"><a href="requirements-template.html">System/Application Requirements Template</a></span></dt></dl></dd><dt><span class="chapter"><a href="i18n.html">14. Internationalization</a></span></dt><dd><dl><dt><span class="sect1"><a href="i18n-overview.html">Internationalization and Localization Overview</a></span></dt><dt><span class="sect1"><a href="i18n-introduction.html">How Internationalization/Localization works in OpenACS</a></span></dt><dt><span class="sect1"><a href="i18n-convert.html">How to Internationalize a Package</a></span></dt><dt><span class="sect1"><a href="i18n-design.html">Design Notes</a></span></dt><dt><span class="sect1"><a href="i18n-translators.html">Translator's Guide</a></span></dt></dl></dd><dt><span class="appendix"><a href="cvs-tips.html">D. Using CVS with an OpenACS Site</a></span></dt></dl></dd><dt><span class="part"><a href="acs-plat-dev.html">IV. For OpenACS Platform Developers</a></span></dt><dd><dl><dt><span class="chapter"><a href="kernel-doc.html">15. Kernel Documentation</a></span></dt><dd><dl><dt><span class="sect1"><a href="kernel-overview.html">Overview</a></span></dt><dt><span class="sect1"><a href="object-system-requirements.html">Object Model Requirements</a></span></dt><dt><span class="sect1"><a href="object-system-design.html">Object Model Design</a></span></dt><dt><span class="sect1"><a href="permissions-requirements.html">Permissions Requirements</a></span></dt><dt><span class="sect1"><a href="permissions-design.html">Permissions Design</a></span></dt><dt><span class="sect1"><a href="groups-requirements.html">Groups Requirements</a></span></dt><dt><span class="sect1"><a href="groups-design.html">Groups Design</a></span></dt><dt><span class="sect1"><a href="subsites-requirements.html">Subsites Requirements</a></span></dt><dt><span class="sect1"><a href="subsites-design.html">Subsites Design Document</a></span></dt><dt><span class="sect1"><a href="apm-requirements.html">Package Manager Requirements</a></span></dt><dt><span class="sect1"><a href="apm-design.html">Package Manager Design</a></span></dt><dt><span class="sect1"><a href="db-api-detailed.html">Database Access API</a></span></dt><dt><span class="sect1"><a href="i18n-requirements.html">OpenACS Internationalization Requirements</a></span></dt><dt><span class="sect1"><a href="security-requirements.html">Security Requirements</a></span></dt><dt><span class="sect1"><a href="security-design.html">Security Design</a></span></dt><dt><span class="sect1"><a href="security-notes.html">Security Notes</a></span></dt><dt><span class="sect1"><a href="rp-requirements.html">Request Processor Requirements</a></span></dt><dt><span class="sect1"><a href="rp-design.html">Request Processor Design</a></span></dt><dt><span class="sect1"><a href="tcl-doc.html">Documenting Tcl Files: Page Contracts and Libraries</a></span></dt><dt><span class="sect1"><a href="bootstrap-acs.html">Bootstrapping OpenACS</a></span></dt><dt><span class="sect1"><a href="ext-auth-requirements.html">External Authentication Requirements</a></span></dt></dl></dd><dt><span class="chapter"><a href="releasing-openacs.html">16. Releasing OpenACS</a></span></dt><dd><dl><dt><span class="section"><a href="releasing-openacs-core.html">OpenACS Core and .LRN</a></span></dt><dt><span class="section"><a href="update-repository.html">How to Update the OpenACS.org repository</a></span></dt><dt><span class="section"><a href="releasing-package.html">How to package and release an OpenACS Package</a></span></dt><dt><span class="section"><a href="update-translations.html">How to Update the translations</a></span></dt></dl></dd></dl></dd><dt><span class="index"><a href="ix01.html">Index</a></span></dt></dl></div><div class="list-of-figures"><p><b>List of Figures</b></p><dl><dt>4.1. <a href="how-do-I.html#id1039051">Site Templates</a></dt><dt>4.2. <a href="how-do-I.html#id1067290">Granting Permissions</a></dt><dt>4.3. <a href="how-do-I.html#id1067322">Granting Permissions in 5.0</a></dt><dt>5.1. <a href="upgrade-overview.html#id1036695">Upgrading with the APM</a></dt><dt>5.2. <a href="upgrade-openacs-files.html#id1070125">Upgrading a local CVS repository</a></dt><dt>6.1. <a href="high-avail.html#id1072517">Multiple-server configuration</a></dt><dt>6.2. <a href="maintenance-deploy.html#id1072710">Simple A/B Deployment - Step 1</a></dt><dt>6.3. <a href="maintenance-deploy.html#id1072732">Simple A/B Deployment - Step 2</a></dt><dt>6.4. <a href="maintenance-deploy.html#id1072754">Simple A/B Deployment - Step 3</a></dt><dt>6.5. <a href="maintenance-deploy.html#id1072784">Complex A/B Deployment - Step 1</a></dt><dt>6.6. <a href="maintenance-deploy.html#id1072806">Complex A/B Deployment - Step 2</a></dt><dt>6.7. <a href="maintenance-deploy.html#id1072829">Complex A/B Deployment - Step 3</a></dt><dt>6.8. <a href="maint-performance.html#id1073458">Query Analysis example</a></dt><dt>8.1. <a href="backup-recovery.html#id968822">Backup and Recovery Strategy</a></dt><dt>9.1. <a href="tutorial-newpackage.html#id1117602">Assumptions in this section</a></dt><dt>9.2. <a href="tutorial-database.html#id998095">Tutorial Data Model</a></dt><dt>9.3. <a href="tutorial-database.html#id999345">The Database Creation Script</a></dt><dt>9.4. <a href="tutorial-database.html#id940775">Database Deletion Script</a></dt><dt>9.5. <a href="tutorial-pages.html#id1010121">Page Map</a></dt><dt>10.1. <a href="tutorial-cvs.html#id1035609">Upgrading a local CVS repository</a></dt><dt>11.1. <a href="packages.html#id1040741">Server file layout diagram</a></dt><dt>11.2. <a href="packages.html#id1032284">Package file layout diagram</a></dt></dl></div><div class="list-of-tables"><p><b>List of Tables</b></p><dl><dt>2.1. <a href="install-steps.html#id973625">Default directories for a standard install</a></dt><dt>2.2. <a href="individual-programs.html#compatibility-matrix">Version Compatibility Matrix</a></dt><dt>5.1. <a href="upgrade-overview.html#id939224">Assumptions in this section</a></dt><dt>6.1. <a href="install-openacs-keepalive.html#id973398">How it Works</a></dt><dt>10.1. <a href="tutorial-etp-templates.html#id967507">table showing ETP layout</a></dt><dt>11.1. <a href="packages.html#id1071514">Package files</a></dt><dt>11.2. <a href="permissions-tediously-explained.html#id1112861">Context Hierarchy Example</a></dt><dt>11.3. <a href="permissions-tediously-explained.html#id1101298">acs_objects example data</a></dt><dt>14.1. <a href="i18n-overview.html#i18n-l10n-process">Internationalization and Localization Overview</a></dt></dl></div><div class="list-of-examples"><p><b>List of Examples</b></p><dl><dt>12.1. <a href="variables.html#id1114009">Getting datetime from the database ANSI-style</a></dt></dl></div></div><div class="navfooter"><hr><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"> </td><td width="20%" align="center"></td><td width="40%" align="right"> <a accesskey="n" href="for-everyone.html">Next</a></td></tr><tr><td width="40%" align="left"> </td><td width="20%" align="center"></td><td width="40%" align="right"> Part�I.�OpenACS For Everyone</td></tr></table><hr><address><a href="mailto:docs@openacs.org">docs@openacs.org</a></address></div><a name="comments"></a><center><a href="http://openacs.org/doc/current/index.html#comments">View comments on this page at openacs.org</a></center></body></html>
+  </a></dt><dt><a href="eng-standards-versioning.html">Release Version Numbering</a></dt><dt><a href="eng-standards-constraint-naming.html">Constraint naming standard</a></dt><dt><a href="eng-standards-filenaming.html">ACS File Naming and Formatting Standards</a></dt><dt><a href="eng-standards-plsql.html">PL/SQL Standards</a></dt><dt><a href="variables.html">Variables</a></dt><dt><a href="automated-testing-best-practices.html">Automated Testing</a></dt></dl></dd><dt>13. <a href="doc-standards.html">Documentation Standards</a></dt><dd><dl><dt><a href="docbook-primer.html">OpenACS Documentation Guide</a></dt><dt><a href="psgml-mode.html">Using PSGML mode in Emacs</a></dt><dt><a href="nxml-mode.html">Using nXML mode in Emacs</a></dt><dt><a href="filename.html">Detailed Design Documentation Template</a></dt><dt><a href="requirements-template.html">System/Application Requirements Template</a></dt></dl></dd><dt>14. <a href="i18n.html">Internationalization</a></dt><dd><dl><dt><a href="i18n-overview.html">Internationalization and Localization Overview</a></dt><dt><a href="i18n-introduction.html">How Internationalization/Localization works in OpenACS</a></dt><dt><a href="i18n-convert.html">How to Internationalize a Package</a></dt><dt><a href="i18n-design.html">Design Notes</a></dt><dt><a href="i18n-translators.html">Translator's Guide</a></dt></dl></dd></dl></dd><dt>IV. <a href="acs-plat-dev.html">For OpenACS Platform Developers</a></dt><dd><dl><dt>15. <a href="kernel-doc.html">Kernel Documentation</a></dt><dd><dl><dt><a href="kernel-overview.html">Overview</a></dt><dt><a href="object-system-requirements.html">Object Model Requirements</a></dt><dt><a href="object-system-design.html">Object Model Design</a></dt><dt><a href="permissions-requirements.html">Permissions Requirements</a></dt><dt><a href="permissions-design.html">Permissions Design</a></dt><dt><a href="groups-requirements.html">Groups Requirements</a></dt><dt><a href="groups-design.html">Groups Design</a></dt><dt><a href="subsites-requirements.html">Subsites Requirements</a></dt><dt><a href="subsites-design.html">Subsites Design Document</a></dt><dt><a href="apm-requirements.html">Package Manager Requirements</a></dt><dt><a href="apm-design.html">Package Manager Design</a></dt><dt><a href="db-api-detailed.html">Database Access API</a></dt><dt><a href="i18n-requirements.html">OpenACS Internationalization Requirements</a></dt><dt><a href="security-requirements.html">Security Requirements</a></dt><dt><a href="security-design.html">Security Design</a></dt><dt><a href="security-notes.html">Security Notes</a></dt><dt><a href="rp-requirements.html">Request Processor Requirements</a></dt><dt><a href="rp-design.html">Request Processor Design</a></dt><dt><a href="tcl-doc.html">Documenting Tcl Files: Page Contracts and Libraries</a></dt><dt><a href="bootstrap-acs.html">Bootstrapping OpenACS</a></dt><dt><a href="ext-auth-requirements.html">External Authentication Requirements</a></dt></dl></dd><dt>16. <a href="releasing-openacs.html">Releasing OpenACS</a></dt><dd><dl><dt><a href="releasing-openacs-core.html">OpenACS Core and .LRN</a></dt><dt><a href="update-repository.html">How to Update the OpenACS.org repository</a></dt><dt><a href="releasing-package.html">How to package and release an OpenACS Package</a></dt><dt><a href="update-translations.html">How to Update the translations</a></dt></dl></dd></dl></dd><dt><a href="ix01.html">Index</a></dt></dl></div><div class="list-of-figures"><p><b>List of Figures</b></p><dl><dt>4.1. <a href="how-do-I.html#id2817365">Site Templates</a></dt><dt>4.2. <a href="how-do-I.html#id2979592">Granting Permissions</a></dt><dt>4.3. <a href="how-do-I.html#id2979634">Granting Permissions in 5.0</a></dt><dt>5.1. <a href="upgrade-overview.html#id2922430">Upgrading with the APM</a></dt><dt>5.2. <a href="upgrade-openacs-files.html#id2980291">Upgrading a local CVS repository</a></dt><dt>6.1. <a href="high-avail.html#id2983661">Multiple-server configuration</a></dt><dt>6.2. <a href="maintenance-deploy.html#id2986610">Simple A/B Deployment - Step 1</a></dt><dt>6.3. <a href="maintenance-deploy.html#id2986641">Simple A/B Deployment - Step 2</a></dt><dt>6.4. <a href="maintenance-deploy.html#id2986672">Simple A/B Deployment - Step 3</a></dt><dt>6.5. <a href="maintenance-deploy.html#id2986711">Complex A/B Deployment - Step 1</a></dt><dt>6.6. <a href="maintenance-deploy.html#id2986742">Complex A/B Deployment - Step 2</a></dt><dt>6.7. <a href="maintenance-deploy.html#id2986773">Complex A/B Deployment - Step 3</a></dt><dt>6.8. <a href="maint-performance.html#id2987604">Query Analysis example</a></dt><dt>8.1. <a href="backup-recovery.html#id2961286">Backup and Recovery Strategy</a></dt><dt>9.1. <a href="tutorial-newpackage.html#id2819182">Assumptions in this section</a></dt><dt>9.2. <a href="tutorial-database.html#id3044015">Tutorial Data Model</a></dt><dt>9.3. <a href="tutorial-database.html#id2923434">The Database Creation Script</a></dt><dt>9.4. <a href="tutorial-database.html#id2958368">Database Deletion Script</a></dt><dt>9.5. <a href="tutorial-pages.html#id2950734">Page Map</a></dt><dt>10.1. <a href="tutorial-cvs.html#id3043160">Upgrading a local CVS repository</a></dt><dt>11.1. <a href="packages.html#id3016637">Server file layout diagram</a></dt><dt>11.2. <a href="packages.html#id3016732">Package file layout diagram</a></dt></dl></div><div class="list-of-tables"><p><b>List of Tables</b></p><dl><dt>2.1. <a href="install-steps.html#id2960601">Default directories for a standard install</a></dt><dt>2.2. <a href="individual-programs.html#compatibility-matrix">Version Compatibility Matrix</a></dt><dt>5.1. <a href="upgrade-overview.html#id2922471">Assumptions in this section</a></dt><dt>6.1. <a href="install-openacs-keepalive.html#id2981713">How it Works</a></dt><dt>10.1. <a href="tutorial-etp-templates.html#id3031334">table showing ETP layout</a></dt><dt>11.1. <a href="packages.html#id2929000">Package files</a></dt><dt>11.2. <a href="permissions-tediously-explained.html#id3038081">Context Hierarchy Example</a></dt><dt>11.3. <a href="permissions-tediously-explained.html#id3039226">acs_objects example data</a></dt><dt>14.1. <a href="i18n-overview.html#i18n-l10n-process">Internationalization and Localization Overview</a></dt></dl></div><div class="list-of-examples"><p><b>List of Examples</b></p><dl><dt>12.1. <a href="variables.html#id3039356">Getting datetime from the database ANSI-style</a></dt></dl></div></div><div class="navfooter"><hr><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"> </td><td width="20%" align="center"></td><td width="40%" align="right"> <a accesskey="n" href="for-everyone.html">Next</a></td></tr><tr><td width="40%" align="left"> </td><td width="20%" align="center"></td><td width="40%" align="right"> Part�I.�OpenACS For Everyone</td></tr></table><hr><address><a href="mailto:docs@openacs.org">docs@openacs.org</a></address></div><a name="comments"></a><center><a href="http://openacs.org/doc/current/index.html#comments">View comments on this page at openacs.org</a></center></body></html>
Index: openacs-4/packages/acs-core-docs/www/individual-programs.html
===================================================================
RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/individual-programs.html,v
diff -u -r1.26 -r1.26.4.1
--- openacs-4/packages/acs-core-docs/www/individual-programs.html	17 Jul 2006 05:38:31 -0000	1.26
+++ openacs-4/packages/acs-core-docs/www/individual-programs.html	3 Feb 2008 12:07:39 -0000	1.26.4.1
@@ -1,15 +1,16 @@
-<html><head><meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"><title>Prerequisite Software</title><meta name="generator" content="DocBook XSL Stylesheets V1.70.1"><link rel="home" href="index.html" title="OpenACS Core Documentation"><link rel="up" href="install-overview.html" title="Chapter�2.�Installation Overview"><link rel="previous" href="install-steps.html" title="Basic Steps"><link rel="next" href="complete-install.html" title="Chapter�3.�Complete Installation"><link rel="stylesheet" href="openacs.css" type="text/css"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><a href="http://openacs.org"><img src="/doc/images/alex.jpg" border="0" alt="Alex logo"></a><table width="100%" summary="Navigation header" border="0"><tr><td width="20%" align="left"><a accesskey="p" href="install-steps.html">Prev</a> </td><th width="60%" align="center">Chapter�2.�Installation Overview</th><td width="20%" align="right"> <a accesskey="n" href="complete-install.html">Next</a></td></tr></table><hr></div><div class="sect1" lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="individual-programs"></a>Prerequisite Software</h2></div></div></div><div class="authorblurb"><p>by <a href="mailto:joel@aufrecht.org" target="_top">Joel Aufrecht</a></p>
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html><head><meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"><title>Prerequisite Software</title><meta name="generator" content="DocBook XSL Stylesheets V1.60.1"><link rel="home" href="index.html" title="OpenACS Core Documentation"><link rel="up" href="install-overview.html" title="Chapter�2.�Installation Overview"><link rel="previous" href="install-steps.html" title="Basic Steps"><link rel="next" href="complete-install.html" title="Chapter�3.�Complete Installation"><link rel="stylesheet" href="openacs.css" type="text/css"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><a href="http://openacs.org"><img src="/doc/images/alex.jpg" border="0" alt="Alex logo"></a><table width="100%" summary="Navigation header" border="0"><tr><td width="20%" align="left"><a accesskey="p" href="install-steps.html">Prev</a> </td><th width="60%" align="center">Chapter�2.�Installation Overview</th><td width="20%" align="right"> <a accesskey="n" href="complete-install.html">Next</a></td></tr></table><hr></div><div class="sect1" lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="individual-programs"></a>Prerequisite Software</h2></div></div><div></div></div><div class="authorblurb"><p>by <a href="mailto:joel@aufrecht.org" target="_top">Joel Aufrecht</a></p>
           OpenACS docs are written by the named authors, and may be edited
           by OpenACS documentation staff.
         </div><p>
     OpenACS requires, at a minimum, an operating system, database,
     and webserver to work.  Many additional programs, such as a build environment, Mail
     Transport Agent, and source control system, are also needed for
     a fully effective installation.
-  </p><div class="table"><a name="compatibility-matrix"></a><p class="title"><b>Table�2.2.�Version Compatibility Matrix</b></p><div class="table-contents"><table summary="Version Compatibility Matrix" cellspacing="0" border="1"><colgroup><col><col><col><col><col><col><col><col><col><col></colgroup><thead><tr><th colspan="2" align="center">OpenACS Version</th><th>3.2.5</th><th> 4.5 </th><th> 4.6 </th><th>4.6.1</th><th>4.6.2</th><th>4.6.3</th><th>5.0</th><th>5.1</th><th>5.2</th></tr></thead><tbody><tr><td rowspan="7">AOLserver</td><td>3</td><td bgcolor="lightgreen" align="center">Yes</td><td bgcolor="red" colspan="8" align="center">No</td></tr><tr><td>3.3+ad13</td><td bgcolor="yellow" align="center">Maybe</td><td bgcolor="lightgreen" colspan="7" align="center">Yes</td><td bgcolor="red" align="center">No</td></tr><tr><td>3.3oacs1</td><td bgcolor="yellow" align="center">Maybe</td><td bgcolor="lightgreen" colspan="7" align="center">Yes</td><td bgcolor="red" align="center">No</td></tr><tr><td>3.4.4</td><td bgcolor="red" colspan="9" align="center">No</td></tr><tr><td>3.4.4oacs1</td><td bgcolor="yellow" colspan="4" align="center">Maybe</td><td bgcolor="lightgreen" colspan="2" align="center">Yes</td><td bgcolor="red" colspan="3" align="center">No</td></tr><tr><td>3.5.5</td><td bgcolor="yellow" colspan="4" align="center">Maybe</td><td bgcolor="lightgreen" colspan="2" align="center">Yes</td><td bgcolor="red" colspan="3" align="center">No</td></tr><tr><td>4.0</td><td bgcolor="yellow" colspan="4" align="center">Maybe</td><td bgcolor="lightgreen" colspan="5" align="center">Yes</td></tr><tr><td rowspan="5">PostgreSQL</td><td>7.0</td><td bgcolor="lightgreen" align="center">Yes</td><td bgcolor="red" colspan="8" align="center">No</td></tr><tr><td>7.2</td><td bgcolor="yellow" align="center">Maybe</td><td bgcolor="lightgreen" colspan="5" align="center">Yes</td><td bgcolor="red" colspan="3" align="center">No</td></tr><tr><td>7.3.2 - 7.3.x</td><td bgcolor="red" colspan="5" align="center">No</td><td bgcolor="lightgreen" colspan="4" align="center">Yes</td></tr><tr><td>7.4</td><td bgcolor="red" colspan="6" align="center">No</td><td bgcolor="lightgreen" colspan="3" align="center">Yes</td></tr><tr><td>8.0</td><td bgcolor="red" colspan="7" align="center">No</td><td bgcolor="yellow" align="center">Maybe</td><td bgcolor="lightgreen" align="center">Yes</td></tr><tr><td rowspan="3">Oracle</td><td>8.1.6</td><td bgcolor="yellow" align="center">Maybe</td><td bgcolor="lightgreen" colspan="8" align="center">Yes</td></tr><tr><td>8.1.7</td><td bgcolor="yellow" align="center">Maybe</td><td bgcolor="lightgreen" colspan="8" align="center">Yes</td></tr><tr><td>9i</td><td bgcolor="red" colspan="6" align="center">No</td><td bgcolor="lightgreen" colspan="3" align="center">Yes</td></tr><tr><td>10g</td><td class="auto-generated">�</td><td bgcolor="red" colspan="8" align="center">No</td><td bgcolor="yellow" align="center">Maybe</td></tr></tbody></table></div></div><br class="table-break"><p>The OpenACS installation instructions assume the operating system and build environment are installed.
+  </p><div class="table"><a name="compatibility-matrix"></a><p class="title"><b>Table�2.2.�Version Compatibility Matrix</b></p><table summary="Version Compatibility Matrix" cellspacing="0" border="1"><colgroup><col><col><col><col><col><col><col><col><col><col></colgroup><thead><tr><th colspan="2" align="center">OpenACS Version</th><th>3.2.5</th><th> 4.5 </th><th> 4.6 </th><th>4.6.1</th><th>4.6.2</th><th>4.6.3</th><th>5.0</th><th>5.1</th><th>5.2</th></tr></thead><tbody><tr><td rowspan="7">AOLserver</td><td>3</td><td align="center">Yes</td><td colspan="8" align="center">No</td></tr><tr><td>3.3+ad13</td><td align="center">Maybe</td><td colspan="7" align="center">Yes</td><td align="center">No</td></tr><tr><td>3.3oacs1</td><td align="center">Maybe</td><td colspan="7" align="center">Yes</td><td align="center">No</td></tr><tr><td>3.4.4</td><td colspan="9" align="center">No</td></tr><tr><td>3.4.4oacs1</td><td colspan="4" align="center">Maybe</td><td colspan="2" align="center">Yes</td><td colspan="3" align="center">No</td></tr><tr><td>3.5.5</td><td colspan="4" align="center">Maybe</td><td colspan="2" align="center">Yes</td><td colspan="3" align="center">No</td></tr><tr><td>4.0</td><td colspan="4" align="center">Maybe</td><td colspan="5" align="center">Yes</td></tr><tr><td rowspan="5">PostgreSQL</td><td>7.0</td><td align="center">Yes</td><td colspan="8" align="center">No</td></tr><tr><td>7.2</td><td align="center">Maybe</td><td colspan="5" align="center">Yes</td><td colspan="3" align="center">No</td></tr><tr><td>7.3.2 - 7.3.x</td><td colspan="5" align="center">No</td><td colspan="4" align="center">Yes</td></tr><tr><td>7.4</td><td colspan="6" align="center">No</td><td colspan="3" align="center">Yes</td></tr><tr><td>8.0</td><td colspan="7" align="center">No</td><td align="center">Maybe</td><td align="center">Yes</td></tr><tr><td rowspan="3">Oracle</td><td>8.1.6</td><td align="center">Maybe</td><td colspan="8" align="center">Yes</td></tr><tr><td>8.1.7</td><td align="center">Maybe</td><td colspan="8" align="center">Yes</td></tr><tr><td>9i</td><td colspan="6" align="center">No</td><td colspan="3" align="center">Yes</td></tr><tr><td>10g</td><td class="auto-generated">�</td><td colspan="8" align="center">No</td><td align="center">Maybe</td></tr></tbody></table></div><p>The OpenACS installation instructions assume the operating system and build environment are installed.
     The instructions explain installation of TCL, tDOM, tclwebtest, a Web Server, a Database, a Process Controller, and 
     Source Control software. The following external links are for reference only.  
-  </p><div class="itemizedlist"><ul type="disc"><li><a name="openacs-download"></a><p><b><a href="http://openacs.org/projects/openacs/download/" target="_top">OpenACS 5.2.3rc1</a>.�</b>The OpenACS tarball comprises the core packages and
+  </p><div class="itemizedlist"><ul type="disc"><li><a name="openacs-download"></a><p><b><a href="http://openacs.org/projects/openacs/download/" target="_top">OpenACS 5.4.0</a>.�</b>The OpenACS tarball comprises the core packages and
           many useful additional packages.  This includes a full set
           of documentation.  The tarball works with both PostgreSQL
           and Oracle. Some scripts require bash shell.</p></li><li><p><b>Operating System.�</b>OpenACS is designed for a Unix-like system.  It is
@@ -18,8 +19,8 @@
               standard Linux shell.  If you are using a different
               shell, you will need to substitute your shell's
               conventions for setting environment variables when
-              appropriate, and install bash to work with the scripts. Substitute <strong class="userinput"><code>fetch</code></strong> when the instructions suggest you use 
-              <strong class="userinput"><code>wget</code></strong> to download software.</p></li><li><p><b>Mac OS X.�</b><a href="mac-installation.html" title="OpenACS Installation Guide for Mac OS X">the section called &#8220;OpenACS Installation Guide for Mac OS X&#8221;</a></p></li><li><p><b>Windows/VMWare.�</b><a href="win2k-installation.html" title="OpenACS Installation Guide for Windows2000">the section called &#8220;OpenACS Installation Guide for Windows2000&#8221;</a>  The only
+              appropriate, and install bash to work with the scripts. Substitute <b class="userinput"><tt>fetch</tt></b> when the instructions suggest you use 
+              <b class="userinput"><tt>wget</tt></b> to download software.</p></li><li><p><b>Mac OS X.�</b><a href="mac-installation.html" title="OpenACS Installation Guide for Mac OS X">Section�, &#8220;OpenACS Installation Guide for Mac OS X&#8221;</a></p></li><li><p><b>Windows/VMWare.�</b><a href="win2k-installation.html" title="OpenACS Installation Guide for Windows2000">Section�, &#8220;OpenACS Installation Guide for Windows2000&#8221;</a>  The only
               way to run OpenACS on Windows is through the VMWare
               emulator.  (Please let me know if you have OpenACS
               running directly in Windows.)</p></li></ul></div></li><li><p><b>Build Environment.�</b>The Reference Platform installation compiles most programs from
@@ -29,19 +30,19 @@
               operating system distribution.</p></li><li><p><b><a href="http://www.gnu.org/software/make/" target="_top">GNU Make</a> 3.76.1 or newer, REQUIRED.�</b>PostgreSQL and AOLserver require gmake to
               compile. Note that on most linux
               distributions, GNU Make is simply named
-              <code class="computeroutput">make</code> and
+              <tt class="computeroutput">make</tt> and
               there is no
-              <code class="computeroutput">gmake</code>,
+              <tt class="computeroutput">gmake</tt>,
               whereas on BSD distributions,
-              <code class="computeroutput">make</code> and
-              <code class="computeroutput">gmake</code> are
+              <tt class="computeroutput">make</tt> and
+              <tt class="computeroutput">gmake</tt> are
               different --use gmake.</p></li></ul></div></li><li><p><b><a href="http://www.tcl.tk/" target="_top">TCL</a> 8.4.x.�</b></p><div class="itemizedlist"><ul type="circle"><li><p><b><a href="http://www.tcl.tk/" target="_top">TCL</a> 8.4.x, REQUIRED.�</b>OpenACS is written in TCL, an interpreted
               language.  A threaded version of the TCL interpreter must be installed for
               OpenACS to work.  The TCL interpreter that is included in most standard
               distributions may not be thread safe.  </p></li><li><p><b><a href="http://www.tcl.tk/" target="_top">TCL</a> 8.4.x development headers and libraries, OPTIONAL.�</b>  The site-wide-search service, OpenFTS, requires these to
-              compile. (Debian users: <code class="computeroutput">apt-get install
-                tcl8.4-dev</code>).  You need this
-              to install OpenFTS.</p></li></ul></div></li><li><a name="source-tdom"></a><p><b><a href="http://www.tdom.org/" target="_top">tDOM</a>, REQUIRED.�</b>OpenACS 5.2.3rc1 stores
+              compile. (Debian users: <tt class="computeroutput">apt-get install
+                tcl8.4-dev</tt>).  You need this
+              to install OpenFTS.</p></li></ul></div></li><li><a name="source-tdom"></a><p><b><a href="http://www.tdom.org/" target="_top">tDOM</a>, REQUIRED.�</b>OpenACS 5.4.0 stores
           queries in XML files, so we use an AOLserver module called
           tDOM to parse these files.  (This replaces libxml2, which
           was used prior to 4.6.4.)</p></li><li><a name="source-tclwebtest"></a><p><b><a href="http://sourceforge.net/project/showfiles.php?group_id=31075" target="_top">tclwebtest</a>, OPTIONAL.�</b>tclwebtest is a tool for testing web interfaces via tcl scripts.</p></li><li><p><b>Web Server.�</b>The web server handles incoming HTTP requests, provides
@@ -50,7 +51,7 @@
           errors.  OpenACS uses AOLserver;
           <a href="http://openacs.org/forums/message-view?message_id=21461" target="_top">some people have had success running Apache with mod_nsd</a>.</p><div class="itemizedlist"><ul type="circle"><li><a name="source-aolserver"></a><p><b><a href="http://aolserver.com/" target="_top">AOLserver</a> 4.x, REQUIRED.�</b>Provides the base HTTP server</p></li></ul></div><p>
         Mat Kovach is graciously maintaining an AOLserver distribution that
-        includes all the patches and modules needed to run OpenACS 5.2.3rc1. These
+        includes all the patches and modules needed to run OpenACS 5.4.0. These
         instructions will describe how to install using his source
         distribution. He also has binaries for SuSE 7.3 and OpenBSD 2.8 (and
         perhaps more to come), currently located at <a href="http://uptime.openacs.org/aolserver-openacs/" target="_top">uptime.openacs.org</a>.
@@ -67,14 +68,14 @@
               (i.e. postgres.so)
 
           </p></li><li><p>
-            The patch that makes <code class="computeroutput">exec</code> work
+            The patch that makes <tt class="computeroutput">exec</tt> work
             on BSD is available at <a href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=415475&amp;group_id=3152&amp;atid=303152" target="_top">sourceforge.net</a>
           </p></li><li><p>
-            The patch for aolserver 3.x that makes <code class="computeroutput">ns_uuencode</code>
+            The patch for aolserver 3.x that makes <tt class="computeroutput">ns_uuencode</tt>
             work for binary files is available at <a href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=474259&amp;group_id=3152&amp;atid=303152" target="_top">sourceforge.net</a>
           </p></li><li><p>
             The patch that makes AOLserver 3.x respect the
-            <code class="computeroutput">-g</code> flag is available at
+            <tt class="computeroutput">-g</tt> flag is available at
             <a href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=509413&amp;group_id=3152&amp;atid=303152" target="_top">sourceforge.net</a>
           </p></li></ul></div></li><li><a name="nsopenssl-download"></a><p><b>nsopenssl, OPTIONAL.�</b>Provides SSL capabilities for AOLserver.  It requires
           OpenSSL.  You need this if you want users to make
@@ -93,7 +94,7 @@
             higher, full text search is also available via tsearch2.
         </p></li><li><p><a name="analog-download"></a><b><a href="http://www.analog.cx/" target="_top">Analog</a> 5.32 or newer, OPTIONAL.�</b>This program examines web server request logs, looks up
           DNS values, and produces a report.  You need this if you
-          want to see how much traffic your site is getting.</p></li><li><p><a name="balance-download"></a><b><a href="http://sourceforge.net/projects/balance/" target="_top">Balance</a> 3.11 or newer, OPTIONAL.�</b>"Balance is a simple but powerful generic tcp proxy with round robin load balancing and failover mechanisms."  You need this or something equivalent if you are running a high-availability production site and do not have an external load balancing system.</p></li><li><p><b>Database.�</b>The data on your site (for example, user names and passwords,
+          want to see how much traffic your site is getting.</p></li><li><p><a name="balance-download"></a><b><a href="http://sourceforge.net/projects/balance/" target="_top">Balance</a> 3.11 or newer, OPTIONAL.�</b>&quot;Balance is a simple but powerful generic tcp proxy with round robin load balancing and failover mechanisms.&quot;  You need this or something equivalent if you are running a high-availability production site and do not have an external load balancing system.</p></li><li><p><b>Database.�</b>The data on your site (for example, user names and passwords,
           calender entries, and notes) is stored in the database.
           OpenACS separates the database with an abstraction layer,
           which means that several different databases all function
@@ -105,7 +106,7 @@
           restarts that software if it fails.  On Linux, we recommend
           using Daemontools to control AOLserver and qmail.</p><div class="itemizedlist"><ul type="circle"><li><a name="daemontools-download"></a><p><b><a href="http://cr.yp.to/daemontools/daemontools-0.76.tar.gz" target="_top">Daemontools
                 0.76</a>, OPTIONAL.�</b>You need this if
-                you want AOLserver and qmail to run "supervised,"
+                you want AOLserver and qmail to run &quot;supervised,&quot;
                 meaning that they are monitored and automatically
                 restarted if they fail.  An alternative would be to
                 run the services from inittab.</p></li></ul></div></li><li><p><b>Mail Transport Agent.�</b>A Mail Transport Agent is a program that handles all
Index: openacs-4/packages/acs-core-docs/www/install-cvs.html
===================================================================
RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/install-cvs.html,v
diff -u -r1.33 -r1.33.4.1
--- openacs-4/packages/acs-core-docs/www/install-cvs.html	17 Jul 2006 05:38:31 -0000	1.33
+++ openacs-4/packages/acs-core-docs/www/install-cvs.html	3 Feb 2008 12:07:39 -0000	1.33.4.1
@@ -1,6 +1,7 @@
-<html><head><meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"><title>Initialize CVS (OPTIONAL)</title><meta name="generator" content="DocBook XSL Stylesheets V1.70.1"><link rel="home" href="index.html" title="OpenACS Core Documentation"><link rel="up" href="install-more-software.html" title="Appendix�B.�Install additional supporting software"><link rel="previous" href="openacs-unpack.html" title="Unpack the OpenACS tarball"><link rel="next" href="psgml-for-emacs.html" title="Add PSGML commands to emacs init file (OPTIONAL)"><link rel="stylesheet" href="openacs.css" type="text/css"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><a href="http://openacs.org"><img src="/doc/images/alex.jpg" border="0" alt="Alex logo"></a><table width="100%" summary="Navigation header" border="0"><tr><td width="20%" align="left"><a accesskey="p" href="openacs-unpack.html">Prev</a> </td><th width="60%" align="center">Appendix�B.�Install additional supporting software</th><td width="20%" align="right"> <a accesskey="n" href="psgml-for-emacs.html">Next</a></td></tr></table><hr></div><div class="sect1" lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="install-cvs"></a>Initialize CVS (OPTIONAL)</h2></div></div></div><a class="indexterm" name="id1003977"></a><p>CVS is a source control system.  Create and initialize a
-      directory for a local cvs repository.</p><pre class="screen">[root tmp]# <strong class="userinput"><code>mkdir /cvsroot</code></strong>
-[root tmp]#<strong class="userinput"><code> cvs -d /cvsroot init</code></strong>
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html><head><meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"><title>Initialize CVS (OPTIONAL)</title><meta name="generator" content="DocBook XSL Stylesheets V1.60.1"><link rel="home" href="index.html" title="OpenACS Core Documentation"><link rel="up" href="install-more-software.html" title="Appendix�B.�Install additional supporting software"><link rel="previous" href="openacs-unpack.html" title="Unpack the OpenACS tarball"><link rel="next" href="psgml-for-emacs.html" title="Add PSGML commands to emacs init file (OPTIONAL)"><link rel="stylesheet" href="openacs.css" type="text/css"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><a href="http://openacs.org"><img src="/doc/images/alex.jpg" border="0" alt="Alex logo"></a><table width="100%" summary="Navigation header" border="0"><tr><td width="20%" align="left"><a accesskey="p" href="openacs-unpack.html">Prev</a> </td><th width="60%" align="center">Appendix�B.�Install additional supporting software</th><td width="20%" align="right"> <a accesskey="n" href="psgml-for-emacs.html">Next</a></td></tr></table><hr></div><div class="sect1" lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="install-cvs"></a>Initialize CVS (OPTIONAL)</h2></div></div><div></div></div><a class="indexterm" name="id3015962"></a><p>CVS is a source control system.  Create and initialize a
+      directory for a local cvs repository.</p><pre class="screen">[root tmp]# <b class="userinput"><tt>mkdir /cvsroot</tt></b>
+[root tmp]#<b class="userinput"><tt> cvs -d /cvsroot init</tt></b>
 [root tmp]#
 <span class="action"><span class="action">mkdir /cvsroot
 cvs -d /cvsroot init</span></span></pre></div><div class="navfooter"><hr><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="openacs-unpack.html">Prev</a> </td><td width="20%" align="center"><a accesskey="h" href="index.html">Home</a></td><td width="40%" align="right"> <a accesskey="n" href="psgml-for-emacs.html">Next</a></td></tr><tr><td width="40%" align="left">Unpack the OpenACS tarball </td><td width="20%" align="center"><a accesskey="u" href="install-more-software.html">Up</a></td><td width="40%" align="right"> Add PSGML commands to emacs init file (OPTIONAL)</td></tr></table><hr><address><a href="mailto:docs@openacs.org">docs@openacs.org</a></address></div><a name="comments"></a><center><a href="http://openacs.org/doc/current/install-cvs.html#comments">View comments on this page at openacs.org</a></center></body></html>
Index: openacs-4/packages/acs-core-docs/www/install-daemontools.html
===================================================================
RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/install-daemontools.html,v
diff -u -r1.34 -r1.34.4.1
--- openacs-4/packages/acs-core-docs/www/install-daemontools.html	17 Jul 2006 05:38:31 -0000	1.34
+++ openacs-4/packages/acs-core-docs/www/install-daemontools.html	3 Feb 2008 12:07:39 -0000	1.34.4.1
@@ -1,14 +1,15 @@
-<html><head><meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"><title>Install Daemontools (OPTIONAL)</title><meta name="generator" content="DocBook XSL Stylesheets V1.70.1"><link rel="home" href="index.html" title="OpenACS Core Documentation"><link rel="up" href="install-more-software.html" title="Appendix�B.�Install additional supporting software"><link rel="previous" href="psgml-for-emacs.html" title="Add PSGML commands to emacs init file (OPTIONAL)"><link rel="next" href="install-qmail.html" title="Install qmail (OPTIONAL)"><link rel="stylesheet" href="openacs.css" type="text/css"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><a href="http://openacs.org"><img src="/doc/images/alex.jpg" border="0" alt="Alex logo"></a><table width="100%" summary="Navigation header" border="0"><tr><td width="20%" align="left"><a accesskey="p" href="psgml-for-emacs.html">Prev</a> </td><th width="60%" align="center">Appendix�B.�Install additional supporting software</th><td width="20%" align="right"> <a accesskey="n" href="install-qmail.html">Next</a></td></tr></table><hr></div><div class="sect1" lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="install-daemontools"></a>Install Daemontools (OPTIONAL)</h2></div></div></div><p>Daemontools is a collection of programs for controlling
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html><head><meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"><title>Install Daemontools (OPTIONAL)</title><meta name="generator" content="DocBook XSL Stylesheets V1.60.1"><link rel="home" href="index.html" title="OpenACS Core Documentation"><link rel="up" href="install-more-software.html" title="Appendix�B.�Install additional supporting software"><link rel="previous" href="psgml-for-emacs.html" title="Add PSGML commands to emacs init file (OPTIONAL)"><link rel="next" href="install-qmail.html" title="Install qmail (OPTIONAL)"><link rel="stylesheet" href="openacs.css" type="text/css"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><a href="http://openacs.org"><img src="/doc/images/alex.jpg" border="0" alt="Alex logo"></a><table width="100%" summary="Navigation header" border="0"><tr><td width="20%" align="left"><a accesskey="p" href="psgml-for-emacs.html">Prev</a> </td><th width="60%" align="center">Appendix�B.�Install additional supporting software</th><td width="20%" align="right"> <a accesskey="n" href="install-qmail.html">Next</a></td></tr></table><hr></div><div class="sect1" lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="install-daemontools"></a>Install Daemontools (OPTIONAL)</h2></div></div><div></div></div><p>Daemontools is a collection of programs for controlling
       other processes.  We use daemontools to run and monitor AOLserver.  It is
       installed in /package.  These commands install daemontools and
       svgroup.  svgroup is a script for granting permissions, to allow
       users other than root to use daemontools for specific
-      services.</p><div class="orderedlist"><ol type="1"><li><p>Install Daemontools</p><a class="indexterm" name="id1008114"></a><p><a href="individual-programs.html#daemontools-download">download daemontools</a> and install it.</p><div class="itemizedlist"><ul type="disc"><li><p>Red Hat 8</p><pre class="screen">[root root]# <strong class="userinput"><code>mkdir -p /package</code></strong>
-[root root]# <strong class="userinput"><code>chmod 1755 /package/</code></strong>
-[root root]# <strong class="userinput"><code>cd /package/</code></strong>
-[root package]# <strong class="userinput"><code>tar xzf /tmp/daemontools-0.76.tar.gz</code></strong>
-[root package]# <strong class="userinput"><code>cd admin/daemontools-0.76/</code></strong>
-[root daemontools-0.76]# <strong class="userinput"><code>package/install</code></strong>
+      services.</p><div class="orderedlist"><ol type="1"><li><p>Install Daemontools</p><a class="indexterm" name="id3015731"></a><p><a href="individual-programs.html#daemontools-download">download daemontools</a> and install it.</p><div class="itemizedlist"><ul type="disc"><li><p>Red Hat 8</p><pre class="screen">[root root]# <b class="userinput"><tt>mkdir -p /package</tt></b>
+[root root]# <b class="userinput"><tt>chmod 1755 /package/</tt></b>
+[root root]# <b class="userinput"><tt>cd /package/</tt></b>
+[root package]# <b class="userinput"><tt>tar xzf /tmp/daemontools-0.76.tar.gz</tt></b>
+[root package]# <b class="userinput"><tt>cd admin/daemontools-0.76/</tt></b>
+[root daemontools-0.76]# <b class="userinput"><tt>package/install</tt></b>
 Linking ./src/* into ./compile...
 
 Creating /service...
@@ -21,13 +22,13 @@
 tar xzf /tmp/daemontools-0.76.tar.gz 
 cd admin/daemontools-0.76 
 package/install</span></span></pre></li><li><p>Red Hat 9, Fedora Core 1-4</p><p>Make sure you have the source tarball in
-          <code class="computeroutput">/tmp</code>, or <a href="individual-programs.html#daemontools-download">download it</a>.
-</p><pre class="screen">[root root]# <strong class="userinput"><code>mkdir -p /package</code></strong>
-[root root]# <strong class="userinput"><code>chmod 1755 /package/</code></strong>
-[root root]# <strong class="userinput"><code>cd /package/</code></strong>
-[root package]# <strong class="userinput"><code>tar xzf /tmp/daemontools-0.76.tar.gz</code></strong>
-[root package]# <strong class="userinput"><code>cd admin</code></strong>
-[root admin]# <strong class="userinput"><code>wget http://www.qmail.org/moni.csi.hu/pub/glibc-2.3.1/daemontools-0.76.errno.patch</code></strong>
+          <tt class="computeroutput">/tmp</tt>, or <a href="individual-programs.html#daemontools-download">download it</a>.
+</p><pre class="screen">[root root]# <b class="userinput"><tt>mkdir -p /package</tt></b>
+[root root]# <b class="userinput"><tt>chmod 1755 /package/</tt></b>
+[root root]# <b class="userinput"><tt>cd /package/</tt></b>
+[root package]# <b class="userinput"><tt>tar xzf /tmp/daemontools-0.76.tar.gz</tt></b>
+[root package]# <b class="userinput"><tt>cd admin</tt></b>
+[root admin]# <b class="userinput"><tt>wget http://www.qmail.org/moni.csi.hu/pub/glibc-2.3.1/daemontools-0.76.errno.patch</tt></b>
 --14:19:24--  http://moni.csi.hu/pub/glibc-2.3.1/daemontools-0.76.errno.patch
            =&gt; `daemontools-0.76.errno.patch'
 Resolving moni.csi.hu... done.
@@ -39,9 +40,9 @@
 
 14:19:24 (346.68 KB/s) - `daemontools-0.76.errno.patch' saved [355/355]
 
-[root admin]# <strong class="userinput"><code>cd daemontools-0.76</code></strong>
-[root daemontools-0.76]# <strong class="userinput"><code>patch -p1 &lt; ../daemontools-0.76.errno.patch</code></strong>
-[root daemontools-0.76]# <strong class="userinput"><code>package/install</code></strong>
+[root admin]# <b class="userinput"><tt>cd daemontools-0.76</tt></b>
+[root daemontools-0.76]# <b class="userinput"><tt>patch -p1 &lt; ../daemontools-0.76.errno.patch</tt></b>
+[root daemontools-0.76]# <b class="userinput"><tt>package/install</tt></b>
 Linking ./src/* into ./compile...<span class="emphasis"><em>(many lines omitted)</em></span>
 Creating /service...
 Adding svscanboot to inittab...
@@ -56,13 +57,13 @@
 cd daemontools-0.76
 patch -p1 &lt; ../daemontools-0.76.errno.patch
 package/install</span></span></pre></li><li><p>FreeBSD (follow standard install)</p><p>Make sure you have the source tarball in
-          <code class="computeroutput">/tmp</code>, or <a href="individual-programs.html#daemontools-download">download it</a>.
-</p><pre class="screen">[root root]# <strong class="userinput"><code>mkdir -p /package</code></strong>
-[root root]# <strong class="userinput"><code>chmod 1755 /package/</code></strong>
-[root root]# <strong class="userinput"><code>cd /package/</code></strong>
-[root package]# <strong class="userinput"><code>tar xzf /tmp/daemontools-0.76.tar.gz</code></strong>
-[root package]# <strong class="userinput"><code>cd admin/daemontools-0.76</code></strong>
-[root daemontools-0.76]# <strong class="userinput"><code>package/install</code></strong>
+          <tt class="computeroutput">/tmp</tt>, or <a href="individual-programs.html#daemontools-download">download it</a>.
+</p><pre class="screen">[root root]# <b class="userinput"><tt>mkdir -p /package</tt></b>
+[root root]# <b class="userinput"><tt>chmod 1755 /package/</tt></b>
+[root root]# <b class="userinput"><tt>cd /package/</tt></b>
+[root package]# <b class="userinput"><tt>tar xzf /tmp/daemontools-0.76.tar.gz</tt></b>
+[root package]# <b class="userinput"><tt>cd admin/daemontools-0.76</tt></b>
+[root daemontools-0.76]# <b class="userinput"><tt>package/install</tt></b>
 Linking ./src/* into ./compile...<span class="emphasis"><em>(many lines omitted)</em></span>
 Creating /service...
 Adding svscanboot to inittab...
@@ -73,13 +74,13 @@
 cd /package 
 tar xzf /tmp/daemontools-0.76.tar.gz 
 cd admin/daemontools-0.76
-package/install</span></span></pre></li><li><p>Debian</p><pre class="screen">[root ~]# <strong class="userinput"><code>apt-get install daemontools-installer</code></strong>
-[root ~]# <strong class="userinput"><code>build-daemontools</code></strong></pre></li></ul></div></li><li><p>Verify that svscan is running.  If it is, you should see
-      these two processes running:</p><pre class="screen">[root root]# <strong class="userinput"><code>ps -auxw | grep service</code></strong>
+package/install</span></span></pre></li><li><p>Debian</p><pre class="screen">[root ~]# <b class="userinput"><tt>apt-get install daemontools-installer</tt></b>
+[root ~]# <b class="userinput"><tt>build-daemontools</tt></b></pre></li></ul></div></li><li><p>Verify that svscan is running.  If it is, you should see
+      these two processes running:</p><pre class="screen">[root root]# <b class="userinput"><tt>ps -auxw | grep service</tt></b>
 root     13294  0.0  0.1  1352  272 ?        S    09:51   0:00 svscan /service
 root     13295  0.0  0.0  1304  208 ?        S    09:51   0:00 readproctitle service errors: .......................................
 [root root]#</pre></li><li><p>Install a script to grant non-root users permission to
-        control daemontools services.</p><pre class="screen">[root root]# <strong class="userinput"><code>cp /tmp/openacs-5.2.3rc1/packages/acs-core-docs/www/files/svgroup.txt /usr/local/bin/svgroup</code></strong>
-[root root]# <strong class="userinput"><code>chmod 755 /usr/local/bin/svgroup</code></strong>
-<span class="action"><span class="action">cp /tmp/openacs-5.2.3rc1/packages/acs-core-docs/www/files/svgroup.txt /usr/local/bin/svgroup 
+        control daemontools services.</p><pre class="screen">[root root]# <b class="userinput"><tt>cp /tmp/openacs-5.4.0/packages/acs-core-docs/www/files/svgroup.txt /usr/local/bin/svgroup</tt></b>
+[root root]# <b class="userinput"><tt>chmod 755 /usr/local/bin/svgroup</tt></b>
+<span class="action"><span class="action">cp /tmp/openacs-5.4.0/packages/acs-core-docs/www/files/svgroup.txt /usr/local/bin/svgroup 
 chmod 755 /usr/local/bin/svgroup</span></span></pre></li></ol></div></div><div class="navfooter"><hr><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="psgml-for-emacs.html">Prev</a> </td><td width="20%" align="center"><a accesskey="h" href="index.html">Home</a></td><td width="40%" align="right"> <a accesskey="n" href="install-qmail.html">Next</a></td></tr><tr><td width="40%" align="left">Add PSGML commands to emacs init file (OPTIONAL) </td><td width="20%" align="center"><a accesskey="u" href="install-more-software.html">Up</a></td><td width="40%" align="right"> Install qmail (OPTIONAL)</td></tr></table><hr><address><a href="mailto:docs@openacs.org">docs@openacs.org</a></address></div><a name="comments"></a><center><a href="http://openacs.org/doc/current/install-daemontools.html#comments">View comments on this page at openacs.org</a></center></body></html>
Index: openacs-4/packages/acs-core-docs/www/install-full-text-search-openfts.html
===================================================================
RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/install-full-text-search-openfts.html,v
diff -u -r1.4 -r1.4.4.1
--- openacs-4/packages/acs-core-docs/www/install-full-text-search-openfts.html	17 Jul 2006 05:38:31 -0000	1.4
+++ openacs-4/packages/acs-core-docs/www/install-full-text-search-openfts.html	3 Feb 2008 12:07:39 -0000	1.4.4.1
@@ -1,26 +1,27 @@
-<html><head><meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"><title>Install Full Text Search using OpenFTS (deprecated see tsearch2)</title><meta name="generator" content="DocBook XSL Stylesheets V1.70.1"><link rel="home" href="index.html" title="OpenACS Core Documentation"><link rel="up" href="install-more-software.html" title="Appendix�B.�Install additional supporting software"><link rel="previous" href="install-full-text-search-tsearch2.html" title="Install Full Text Search using Tsearch2"><link rel="next" href="install-nsopenssl.html" title="Install nsopenssl"><link rel="stylesheet" href="openacs.css" type="text/css"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><a href="http://openacs.org"><img src="/doc/images/alex.jpg" border="0" alt="Alex logo"></a><table width="100%" summary="Navigation header" border="0"><tr><td width="20%" align="left"><a accesskey="p" href="install-full-text-search-tsearch2.html">Prev</a> </td><th width="60%" align="center">Appendix�B.�Install additional supporting software</th><td width="20%" align="right"> <a accesskey="n" href="install-nsopenssl.html">Next</a></td></tr></table><hr></div><div class="sect1" lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="install-full-text-search-openfts"></a>Install Full Text Search using OpenFTS (deprecated see tsearch2)</h2></div></div></div><div class="authorblurb"><p>By <a href="mailto:joel@aufrecht.org" target="_top">Joel Aufrecht</a> and <a href="mailto:openacs@sussdorff.de" target="_top">Malte Sussdorff</a></p>
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html><head><meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"><title>Install Full Text Search using OpenFTS (deprecated see tsearch2)</title><meta name="generator" content="DocBook XSL Stylesheets V1.60.1"><link rel="home" href="index.html" title="OpenACS Core Documentation"><link rel="up" href="install-more-software.html" title="Appendix�B.�Install additional supporting software"><link rel="previous" href="install-full-text-search-tsearch2.html" title="Install Full Text Search using Tsearch2"><link rel="next" href="install-nsopenssl.html" title="Install nsopenssl"><link rel="stylesheet" href="openacs.css" type="text/css"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><a href="http://openacs.org"><img src="/doc/images/alex.jpg" border="0" alt="Alex logo"></a><table width="100%" summary="Navigation header" border="0"><tr><td width="20%" align="left"><a accesskey="p" href="install-full-text-search-tsearch2.html">Prev</a> </td><th width="60%" align="center">Appendix�B.�Install additional supporting software</th><td width="20%" align="right"> <a accesskey="n" href="install-nsopenssl.html">Next</a></td></tr></table><hr></div><div class="sect1" lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="install-full-text-search-openfts"></a>Install Full Text Search using OpenFTS (deprecated see tsearch2)</h2></div></div><div></div></div><div class="authorblurb"><p>By <a href="mailto:joel@aufrecht.org" target="_top">Joel Aufrecht</a> and <a href="mailto:openacs@sussdorff.de" target="_top">Malte Sussdorff</a></p>
           OpenACS docs are written by the named authors, and may be edited
           by OpenACS documentation staff.
         </div><p>OpenFTS and tsearch1 use is deprecated in favor of
       Tsearch2. See 
       <a href="install-full-text-search-tsearch2.html">Install       Full Text Search using Tsearch2</a>. Tsearch2 is much easier to install, requiring only
       compilation of one module from PostgreSQL contrib, with an
-      automated install process using the tsearch2-driver package.</p><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="install-openfts"></a>Install OpenFTS module</h3></div></div></div><a class="indexterm" name="id1177190"></a><p>If you want full text search, and you are running PostgreSQL, install this module to support FTS.  Do this step after you have installed both PostgreSQL and
+      automated install process using the tsearch2-driver package.</p><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="install-openfts"></a>Install OpenFTS module</h3></div></div><div></div></div><a class="indexterm" name="id3025477"></a><p>If you want full text search, and you are running PostgreSQL, install this module to support FTS.  Do this step after you have installed both PostgreSQL and
       AOLserver.  You will need the <a href="individual-programs.html#openfts-download">openfts
-      tarball</a> in <code class="computeroutput">/tmp</code>.</p><div class="orderedlist"><ol type="1"><li><p>Install Tsearch.  This is a PostgreSQL module that
-	  OpenFTS requires.</p><pre class="screen">[root root]# <strong class="userinput"><code>su - postgres</code></strong>
-[postgres pgsql]$ <strong class="userinput"><code>cd /usr/local/src/postgresql-7.3.4/contrib/tsearch/</code></strong>
-[postgres tsearch]$ <strong class="userinput"><code>make</code></strong>
+      tarball</a> in <tt class="computeroutput">/tmp</tt>.</p><div class="orderedlist"><ol type="1"><li><p>Install Tsearch.  This is a PostgreSQL module that
+	  OpenFTS requires.</p><pre class="screen">[root root]# <b class="userinput"><tt>su - postgres</tt></b>
+[postgres pgsql]$ <b class="userinput"><tt>cd /usr/local/src/postgresql-7.3.4/contrib/tsearch/</tt></b>
+[postgres tsearch]$ <b class="userinput"><tt>make</tt></b>
 sed 's,MODULE_PATHNAME,$libdir/tsearch,g' tsearch.sql.in &gt;tsearch.sql
 /usr/bin/flex  -8 -Ptsearch_yy -o'parser.c' parser.l<span class="emphasis"><em>(many lines omitted)</em></span>
 rm -f libtsearch.so
 ln -s libtsearch.so.0.0 libtsearch.so
-[postgres tsearch]$ <strong class="userinput"><code>make install</code></strong>
+[postgres tsearch]$ <b class="userinput"><tt>make install</tt></b>
 mkdir /usr/local/pgsql/share/contrib
 mkdir /usr/local/pgsql/doc/contrib
 (2 lines omitted)
 /bin/sh ../../config/install-sh -c -m 755 libtsearch.so.0.0 /usr/local/pgsql/lib/tsearch.so
-[postgres tsearch]$ <strong class="userinput"><code>exit</code></strong>
+[postgres tsearch]$ <b class="userinput"><tt>exit</tt></b>
 logout
 
 [root root]#
@@ -29,27 +30,27 @@
 make
 make install
 exit</span></span></pre></li><li><p>Unpack the OpenFTS tarball and compile and install
-              the driver.</p><pre class="screen">[root root]# <strong class="userinput"><code>cd /usr/local/src</code></strong>
-[root src]# <strong class="userinput"><code>tar xzf /tmp/Search-OpenFTS-tcl-0.3.2.tar.gz</code></strong>
-[root src]# <strong class="userinput"><code>cd /usr/local/src/Search-OpenFTS-tcl-0.3.2/</code></strong>
-[root Search-OpenFTS-tcl-0.3.2]# <strong class="userinput"><code>./configure --with-aolserver-src=/usr/local/src/aolserver/aolserver --with-tcl=/usr/lib/</code></strong>
+              the driver.</p><pre class="screen">[root root]# <b class="userinput"><tt>cd /usr/local/src</tt></b>
+[root src]# <b class="userinput"><tt>tar xzf /tmp/Search-OpenFTS-tcl-0.3.2.tar.gz</tt></b>
+[root src]# <b class="userinput"><tt>cd /usr/local/src/Search-OpenFTS-tcl-0.3.2/</tt></b>
+[root Search-OpenFTS-tcl-0.3.2]# <b class="userinput"><tt>./configure --with-aolserver-src=/usr/local/src/aolserver/aolserver --with-tcl=/usr/lib/</tt></b>
 checking prefix... /usr/local
 checking for gcc... gcc
 <span class="emphasis"><em>(many lines omitted)</em></span>
 configure: creating ./config.status
 config.status: creating Makefile.global
-[root Search-OpenFTS-tcl-0.3.2]#<strong class="userinput"><code> make</code></strong>
+[root Search-OpenFTS-tcl-0.3.2]#<b class="userinput"><tt> make</tt></b>
 (cd parser; make all)
 make[1]: Entering directory `/usr/local/src/Search-OpenFTS-tcl-0.3.2/parser'
 <span class="emphasis"><em>(many lines omitted)</em></span>
 packages provided were {Lingua::Stem::Snowball 0.3.2}
 processed fts_base_snowball.tcl
-[root Search-OpenFTS-tcl-0.3.2]# <strong class="userinput"><code>cd aolserver</code></strong>
-[root aolserver]# <strong class="userinput"><code>make</code></strong>
-gcc -c -fPIC  -DPACKAGE=\"OPENFTS\" -DVERSION=\"0.3.2\" -DHAVE_UNISTD_H=1 -DSTDC_HEADERS=1 -DHAVE_SYS_TYPES_H=1 -DHAVE_SYS_STAT_H=1 -DHAVE_STDLIB_H=1 -DHAVE_STR
+[root Search-OpenFTS-tcl-0.3.2]# <b class="userinput"><tt>cd aolserver</tt></b>
+[root aolserver]# <b class="userinput"><tt>make</tt></b>
+gcc -c -fPIC  -DPACKAGE=\&quot;OPENFTS\&quot; -DVERSION=\&quot;0.3.2\&quot; -DHAVE_UNISTD_H=1 -DSTDC_HEADERS=1 -DHAVE_SYS_TYPES_H=1 -DHAVE_SYS_STAT_H=1 -DHAVE_STDLIB_H=1 -DHAVE_STR
 <span class="emphasis"><em>(many lines omitted)</em></span>
 n_stem.o italian_stem.o norwegian_stem.o portuguese_stem.o russian_stem.o nsfts.o  -o nsfts.so
-[root aolserver]# <strong class="userinput"><code>cp nsfts.so /usr/local/aolserver/bin/</code></strong>
+[root aolserver]# <b class="userinput"><tt>cp nsfts.so /usr/local/aolserver/bin/</tt></b>
 [root aolserver]#
 <span class="action"><span class="action">cd /usr/local/src 
 tar xzf /tmp/Search-OpenFTS-tcl-0.3.2.tar.gz
@@ -59,75 +60,75 @@
 cd aolserver
 make
 cp nsfts.so /usr/local/aolserver/bin
-</span></span></pre></li><li><p>Build some supplemental modules.</p><pre class="screen">[root aolserver]# <strong class="userinput"><code>cd /usr/local/src/Search-OpenFTS-tcl-0.3.2</code></strong>
-[root Search-OpenFTS-tcl-0.3.2]# <strong class="userinput"><code>cp -r pgsql_contrib_openfts /usr/local/src/postgresql-7.3.4/contrib</code></strong>
-[root Search-OpenFTS-tcl-0.3.2]# <strong class="userinput"><code>cd /usr/local/src/postgresql-7.3.4/contrib/pgsql_contrib_openfts</code></strong>
-[root pgsql_contrib_openfts]#<strong class="userinput"><code> make</code></strong>
+</span></span></pre></li><li><p>Build some supplemental modules.</p><pre class="screen">[root aolserver]# <b class="userinput"><tt>cd /usr/local/src/Search-OpenFTS-tcl-0.3.2</tt></b>
+[root Search-OpenFTS-tcl-0.3.2]# <b class="userinput"><tt>cp -r pgsql_contrib_openfts /usr/local/src/postgresql-7.3.4/contrib</tt></b>
+[root Search-OpenFTS-tcl-0.3.2]# <b class="userinput"><tt>cd /usr/local/src/postgresql-7.3.4/contrib/pgsql_contrib_openfts</tt></b>
+[root pgsql_contrib_openfts]#<b class="userinput"><tt> make</tt></b>
 sed 's,MODULE_PATHNAME,$libdir/openfts,g' openfts.sql.in &gt;openfts.sql
 gcc -O2 -Wall -Wmissing-prototypes -Wmissing-declarations -fpic -I. -I../../src/include   -c -o openfts.o openfts.c
 gcc -shared -o openfts.so openfts.o
 rm openfts.o
-[root pgsql_contrib_openfts]# <strong class="userinput"><code>su postgres</code></strong>
-[postgres pgsql_contrib_openfts]$ <strong class="userinput"><code>make install</code></strong>
+[root pgsql_contrib_openfts]# <b class="userinput"><tt>su postgres</tt></b>
+[postgres pgsql_contrib_openfts]$ <b class="userinput"><tt>make install</tt></b>
 /bin/sh ../../config/install-sh -c -m 644 openfts.sql /usr/local/pgsql/share/contrib
 /bin/sh ../../config/install-sh -c -m 755 openfts.so /usr/local/pgsql/lib
 /bin/sh ../../config/install-sh -c -m 644 ./README.openfts /usr/local/pgsql/doc/contrib
-[postgres pgsql_contrib_openfts]$<strong class="userinput"><code> exit</code></strong>
+[postgres pgsql_contrib_openfts]$<b class="userinput"><tt> exit</tt></b>
 [root pgsql_contrib_openfts]#
 <span class="action"><span class="action">cd /usr/local/src/Search-OpenFTS-tcl-0.3.2
 cp -r pgsql_contrib_openfts /usr/local/src/postgresql-7.3.4/contrib
 cd /usr/local/src/postgresql-7.3.4/contrib/pgsql_contrib_openfts
 make
 su postgres
 make install
-exit</span></span></pre></li></ol></div></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="install-openfts-postgres"></a>Install OpenFTS prerequisites in PostgreSQL instance</h3></div></div></div><a class="indexterm" name="id1149922"></a><p>If you are installing Full Text Search, add required
+exit</span></span></pre></li></ol></div></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="install-openfts-postgres"></a>Install OpenFTS prerequisites in PostgreSQL instance</h3></div></div><div></div></div><a class="indexterm" name="id3046728"></a><p>If you are installing Full Text Search, add required
         packages to the new database.  (In order for full text search
         to work, you must also <a href="install-full-text-search-openfts.html#install-openfts" title="Install OpenFTS module">install</a> the PostgreSQL
-        OpenFTS module and prerequisites.)</p><pre class="screen">[$OPENACS_SERVICE_NAME $OPENACS_SERVICE_NAME]$ <strong class="userinput"><code>/usr/local/pgsql/bin/psql <span class="replaceable"><span class="replaceable">$OPENACS_SERVICE_NAME</span></span> -f /usr/local/src/postgresql-7.3.4/contrib/tsearch/tsearch.sql</code></strong>
+        OpenFTS module and prerequisites.)</p><pre class="screen">[$OPENACS_SERVICE_NAME $OPENACS_SERVICE_NAME]$ <b class="userinput"><tt>/usr/local/pgsql/bin/psql <span class="replaceable"><span class="replaceable">$OPENACS_SERVICE_NAME</span></span> -f /usr/local/src/postgresql-7.3.4/contrib/tsearch/tsearch.sql</tt></b>
 BEGIN
 CREATE
 <span class="emphasis"><em>(many lines omitted)</em></span>
 INSERT 0 1
 COMMIT
-[$OPENACS_SERVICE_NAME $OPENACS_SERVICE_NAME]$ <strong class="userinput"><code>/usr/local/pgsql/bin/psql <span class="replaceable"><span class="replaceable">$OPENACS_SERVICE_NAME</span></span> -f /usr/local/src/postgresql-7.3.4/contrib/pgsql_contrib_openfts/openfts.sql</code></strong>
+[$OPENACS_SERVICE_NAME $OPENACS_SERVICE_NAME]$ <b class="userinput"><tt>/usr/local/pgsql/bin/psql <span class="replaceable"><span class="replaceable">$OPENACS_SERVICE_NAME</span></span> -f /usr/local/src/postgresql-7.3.4/contrib/pgsql_contrib_openfts/openfts.sql</tt></b>
 CREATE
 CREATE
 [$OPENACS_SERVICE_NAME $OPENACS_SERVICE_NAME]$
 <span class="action"><span class="action">/usr/local/pgsql/bin/psql <span class="replaceable"><span class="replaceable">$OPENACS_SERVICE_NAME</span></span> -f /usr/local/src/postgresql-7.3.4/contrib/tsearch/tsearch.sql
 /usr/local/pgsql/bin/psql <span class="replaceable"><span class="replaceable">$OPENACS_SERVICE_NAME</span></span> -f /usr/local/src/postgresql-7.3.4/contrib/pgsql_contrib_openfts/openfts.sql</span></span></pre><div class="note" style="margin-left: 0.5in; margin-right: 0.5in;"><h3 class="title">Note</h3><p>
           If you get the error 
-          <code class="computeroutput">ERROR: could not access file "$libdir/tsearch": no such file or directory</code>
+          <tt class="computeroutput">ERROR: could not access file &quot;$libdir/tsearch&quot;: no such file or directory</tt>
           It is probably because PostgreSQL's libdir configuration variable points to a diffent directory than where tsearch is.
           You can find out where PostgreSQL expects to find tsearch via
-          </p><pre class="screen"><strong class="userinput"><code>pg_config --pkglibdir</code></strong></pre><p>
-        </p></div></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="enable-openfts"></a>Enable OpenFTS in config.tcl</h3></div></div></div><p>If you have <a href="install-full-text-search-openfts.html#install-openfts" title="Install OpenFTS module">installed OpenFTS</a>, you can enable it for this service.  Uncomment this line from <code class="computeroutput">config.tcl</code>.  (To uncomment a line in a tcl file, remove the <code class="computeroutput">#</code> at the beginning of the line.)</p><pre class="programlisting">#ns_param   nsfts           ${bindir}/nsfts.so</pre></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="install-fts-engine-openfts"></a>Install Full Text Search Engine</h3></div></div></div><div class="orderedlist"><ol type="1"><li><p>Click <code class="computeroutput"><span class="guilabel"><span class="guilabel">Admin</span></span></code> on the top of the default home page.  If prompted, log in with the account and password you entered during install.</p></li><li><p>Click on the <code class="computeroutput"><span class="guilabel"><span class="guilabel">Install
-software</span></span></code> link.</p></li><li><p>Click on the <code class="computeroutput"><span class="guilabel"><span class="guilabel">Install
-new service</span></span></code> link.</p></li><li><p>Click on the <code class="computeroutput"><span class="guilabel"><span class="guilabel">Install</span></span></code> link next to OpenFTS Driver.</p></li><li><p>Restart the service.</p><pre class="screen">[$OPENACS_SERVICE_NAME $OPENACS_SERVICE_NAME]$ <strong class="userinput"><code>svc -t /service/<span class="replaceable"><span class="replaceable">$OPENACS_SERVICE_NAME</span></span></code></strong>
-[$OPENACS_SERVICE_NAME $OPENACS_SERVICE_NAME]$</pre></li><li><p>Wait a minute, then browse back to the home page.</p></li><li><p>Click on <code class="computeroutput"><span class="guilabel"><span class="guilabel">Admin</span></span></code> on the top of the screen.</p></li><li><p>Click on <code class="computeroutput"><span class="guilabel"><span class="guilabel">Main Site Administration</span></span></code> in the "Subsite Administration" section.</p></li><li><p>Click on <code class="computeroutput"><span class="guilabel"><span class="guilabel">Site Map</span></span></code> in the "Advanced Features" section.</p></li><li><p>Mount the OpenFTS Full Text Search Engine in the site map.</p><div class="orderedlist"><ol type="a"><li><p>Click the <code class="computeroutput"><span class="guilabel"><span class="guilabel">new sub folder</span></span></code> link on the "/" line, the first line under Main Site:/.</p></li><li><p>Type <strong class="userinput"><code>openfts</code></strong>
-and click <code class="computeroutput"><span class="guibutton"><span class="guibutton">New</span></span></code>.</p></li><li><p>On the new <code class="computeroutput"><span class="guilabel"><span class="guilabel">openfts</span></span></code> line, click the <code class="computeroutput"><span class="guilabel"><span class="guilabel">mount</span></span></code> link.</p></li><li><p>Click <code class="computeroutput"><span class="guilabel"><span class="guilabel">OpenFTS
-Driver</span></span></code>.</p></li><li><p>On the <code class="computeroutput"><span class="guilabel"><span class="guilabel">openfts</span></span></code> line, click <code class="computeroutput"><span class="guilabel"><span class="guilabel">set parameters</span></span></code>.</p></li><li><p>Change <code class="computeroutput"><span class="guilabel"><span class="guilabel">openfts_tcl_src_path</span></span></code> to <strong class="userinput"><code>/usr/local/src/Search-OpenFTS-tcl-0.3.2/</code></strong> and click <code class="computeroutput"><span class="guibutton"><span class="guibutton">Set Parameters</span></span></code>
+          </p><pre class="screen"><b class="userinput"><tt>pg_config --pkglibdir</tt></b></pre><p>
+        </p></div></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="enable-openfts"></a>Enable OpenFTS in config.tcl</h3></div></div><div></div></div><p>If you have <a href="install-full-text-search-openfts.html#install-openfts" title="Install OpenFTS module">installed OpenFTS</a>, you can enable it for this service.  Uncomment this line from <tt class="computeroutput">config.tcl</tt>.  (To uncomment a line in a tcl file, remove the <tt class="computeroutput">#</tt> at the beginning of the line.)</p><pre class="programlisting">#ns_param   nsfts           ${bindir}/nsfts.so</pre></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="install-fts-engine-openfts"></a>Install Full Text Search Engine</h3></div></div><div></div></div><div class="orderedlist"><ol type="1"><li><p>Click <tt class="computeroutput"><span class="guilabel"><span class="guilabel">Admin</span></span></tt> on the top of the default home page.  If prompted, log in with the account and password you entered during install.</p></li><li><p>Click on the <tt class="computeroutput"><span class="guilabel"><span class="guilabel">Install
+software</span></span></tt> link.</p></li><li><p>Click on the <tt class="computeroutput"><span class="guilabel"><span class="guilabel">Install
+new service</span></span></tt> link.</p></li><li><p>Click on the <tt class="computeroutput"><span class="guilabel"><span class="guilabel">Install</span></span></tt> link next to OpenFTS Driver.</p></li><li><p>Restart the service.</p><pre class="screen">[$OPENACS_SERVICE_NAME $OPENACS_SERVICE_NAME]$ <b class="userinput"><tt>svc -t /service/<span class="replaceable"><span class="replaceable">$OPENACS_SERVICE_NAME</span></span></tt></b>
+[$OPENACS_SERVICE_NAME $OPENACS_SERVICE_NAME]$</pre></li><li><p>Wait a minute, then browse back to the home page.</p></li><li><p>Click on <tt class="computeroutput"><span class="guilabel"><span class="guilabel">Admin</span></span></tt> on the top of the screen.</p></li><li><p>Click on <tt class="computeroutput"><span class="guilabel"><span class="guilabel">Main Site Administration</span></span></tt> in the &quot;Subsite Administration&quot; section.</p></li><li><p>Click on <tt class="computeroutput"><span class="guilabel"><span class="guilabel">Site Map</span></span></tt> in the &quot;Advanced Features&quot; section.</p></li><li><p>Mount the OpenFTS Full Text Search Engine in the site map.</p><div class="orderedlist"><ol type="a"><li><p>Click the <tt class="computeroutput"><span class="guilabel"><span class="guilabel">new sub folder</span></span></tt> link on the &quot;/&quot; line, the first line under Main Site:/.</p></li><li><p>Type <b class="userinput"><tt>openfts</tt></b>
+and click <tt class="computeroutput"><span class="guibutton"><span class="guibutton">New</span></span></tt>.</p></li><li><p>On the new <tt class="computeroutput"><span class="guilabel"><span class="guilabel">openfts</span></span></tt> line, click the <tt class="computeroutput"><span class="guilabel"><span class="guilabel">mount</span></span></tt> link.</p></li><li><p>Click <tt class="computeroutput"><span class="guilabel"><span class="guilabel">OpenFTS
+Driver</span></span></tt>.</p></li><li><p>On the <tt class="computeroutput"><span class="guilabel"><span class="guilabel">openfts</span></span></tt> line, click <tt class="computeroutput"><span class="guilabel"><span class="guilabel">set parameters</span></span></tt>.</p></li><li><p>Change <tt class="computeroutput"><span class="guilabel"><span class="guilabel">openfts_tcl_src_path</span></span></tt> to <b class="userinput"><tt>/usr/local/src/Search-OpenFTS-tcl-0.3.2/</tt></b> and click <tt class="computeroutput"><span class="guibutton"><span class="guibutton">Set Parameters</span></span></tt>
               </p></li></ol></div></li><li><p>Mount the Search interface in the site map.</p><div class="orderedlist"><ol type="a"><li><p>Click the
-<code class="computeroutput"><span class="guilabel"><span class="guilabel">new sub folder</span></span></code> link on the
-Main Site line. </p></li><li><p>Type <strong class="userinput"><code>search</code></strong>
-and click <code class="computeroutput"><span class="guibutton"><span class="guibutton">New</span></span></code>. </p></li><li><p>Click the <code class="computeroutput"><span class="guilabel"><span class="guilabel">new
-application</span></span></code> link on the <code class="computeroutput"><span class="guilabel"><span class="guilabel">search</span></span></code>
-	  line. </p></li><li><p>Type <strong class="userinput"><code>search</code></strong>
+<tt class="computeroutput"><span class="guilabel"><span class="guilabel">new sub folder</span></span></tt> link on the
+Main Site line. </p></li><li><p>Type <b class="userinput"><tt>search</tt></b>
+and click <tt class="computeroutput"><span class="guibutton"><span class="guibutton">New</span></span></tt>. </p></li><li><p>Click the <tt class="computeroutput"><span class="guilabel"><span class="guilabel">new
+application</span></span></tt> link on the <tt class="computeroutput"><span class="guilabel"><span class="guilabel">search</span></span></tt>
+	  line. </p></li><li><p>Type <b class="userinput"><tt>search</tt></b>
 where it says
-<code class="computeroutput"><span class="guilabel"><span class="guilabel">untitled</span></span></code>, choose
-<code class="computeroutput"><span class="guilabel"><span class="guilabel">search</span></span></code> from the
+<tt class="computeroutput"><span class="guilabel"><span class="guilabel">untitled</span></span></tt>, choose
+<tt class="computeroutput"><span class="guilabel"><span class="guilabel">search</span></span></tt> from the
 drop-down list, and click
-<code class="computeroutput"><span class="guibutton"><span class="guibutton">New</span></span></code>.
-</p></li></ol></div></li><li><p>Restart the service.</p><pre class="screen">[$OPENACS_SERVICE_NAME $OPENACS_SERVICE_NAME]$ <strong class="userinput"><code>svc -t /service/<span class="replaceable"><span class="replaceable">$OPENACS_SERVICE_NAME</span></span></code></strong>
-[$OPENACS_SERVICE_NAME $OPENACS_SERVICE_NAME]$</pre></li><li><p>Wait a minute, then click on <code class="computeroutput"><span class="guilabel"><span class="guilabel">Main Site</span></span></code> at the top of the page.</p></li><li><p>Initialize the OpenFTS Engine.  This creates a set of tables in the database to support FTS.</p><p>Near the bottom of the page, click on the <code class="computeroutput"><span class="guilabel"><span class="guilabel">OpenFTS Driver</span></span></code> link. Click on <code class="computeroutput"><span class="guilabel"><span class="guilabel">Administration</span></span></code>.
-Click on <code class="computeroutput"><span class="guilabel"><span class="guilabel">Initialize OpenFTS Engine</span></span></code>. 
-Click <code class="computeroutput"><span class="guibutton"><span class="guibutton">Initialize OpenFTS Engine</span></span></code>. </p></li><li><p>Add the FTS Engine service contract</p><div class="orderedlist"><ol type="a"><li><p>Click on the <code class="computeroutput"><span class="guilabel"><span class="guilabel">DevAdmin</span></span></code>. </p></li><li><p>Click on the <code class="computeroutput"><span class="guilabel"><span class="guilabel">Service Contract</span></span></code> link. </p></li><li><p>On the <code class="computeroutput"><span class="guilabel"><span class="guilabel">FtsEngineDriver</span></span></code>
+<tt class="computeroutput"><span class="guibutton"><span class="guibutton">New</span></span></tt>.
+</p></li></ol></div></li><li><p>Restart the service.</p><pre class="screen">[$OPENACS_SERVICE_NAME $OPENACS_SERVICE_NAME]$ <b class="userinput"><tt>svc -t /service/<span class="replaceable"><span class="replaceable">$OPENACS_SERVICE_NAME</span></span></tt></b>
+[$OPENACS_SERVICE_NAME $OPENACS_SERVICE_NAME]$</pre></li><li><p>Wait a minute, then click on <tt class="computeroutput"><span class="guilabel"><span class="guilabel">Main Site</span></span></tt> at the top of the page.</p></li><li><p>Initialize the OpenFTS Engine.  This creates a set of tables in the database to support FTS.</p><p>Near the bottom of the page, click on the <tt class="computeroutput"><span class="guilabel"><span class="guilabel">OpenFTS Driver</span></span></tt> link. Click on <tt class="computeroutput"><span class="guilabel"><span class="guilabel">Administration</span></span></tt>.
+Click on <tt class="computeroutput"><span class="guilabel"><span class="guilabel">Initialize OpenFTS Engine</span></span></tt>. 
+Click <tt class="computeroutput"><span class="guibutton"><span class="guibutton">Initialize OpenFTS Engine</span></span></tt>. </p></li><li><p>Add the FTS Engine service contract</p><div class="orderedlist"><ol type="a"><li><p>Click on the <tt class="computeroutput"><span class="guilabel"><span class="guilabel">DevAdmin</span></span></tt>. </p></li><li><p>Click on the <tt class="computeroutput"><span class="guilabel"><span class="guilabel">Service Contract</span></span></tt> link. </p></li><li><p>On the <tt class="computeroutput"><span class="guilabel"><span class="guilabel">FtsEngineDriver</span></span></tt>
 line, click
-<code class="computeroutput"><span class="guilabel"><span class="guilabel">Install</span></span></code>.
-</p></li></ol></div></li><li><p>Restart the service.</p><pre class="screen">[$OPENACS_SERVICE_NAME $OPENACS_SERVICE_NAME]$ <strong class="userinput"><code>svc -t /service/<span class="replaceable"><span class="replaceable">$OPENACS_SERVICE_NAME</span></span></code></strong>
-[$OPENACS_SERVICE_NAME $OPENACS_SERVICE_NAME]$</pre></li></ol></div></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="install-fts-content-provider-openfts"></a>Enable Full Text Search in packages</h3></div></div></div><p>Enabling Full Text Search in packages at the moment is not trivial. It involves a couple of steps, which I will illustrate taking lars-blogger as an example package</p><div class="orderedlist"><ol type="1"><li><p>Install the package.
-                </p><div class="orderedlist"><ol type="a"><li><p>Click <code class="computeroutput"><span class="guilabel"><span class="guilabel">Admin</span></span></code> on the top of the default home page.  If prompted, log in with the account and password you entered during install.</p></li><li><p>Click on the <code class="computeroutput"><span class="guilabel"><span class="guilabel">Install
-                  software</span></span></code> link.</p></li><li><p>Click on the <code class="computeroutput"><span class="guilabel"><span class="guilabel">Install
-                  new application</span></span></code> link.</p></li><li><p>Click on the <code class="computeroutput"><span class="guilabel"><span class="guilabel">Install</span></span></code> link next to Weblogger.</p></li><li><p>Install all required packages as well (always say okay until you shall restart the server)</p></li></ol></div><p>
-                </p></li><li><p>Load the service contracts datamodell and enable the service contract</p><pre class="screen">[$OPENACS_SERVICE_NAME $OPENACS_SERVICE_NAME]$ <strong class="userinput"><code>cd packages/lars-blogger/sql/postgresql</code></strong>
-[$OPENACS_SERVICE_NAME postgresql]$ psql <span class="replaceable"><span class="replaceable">$OPENACS_SERVICE_NAME</span></span> -f lars-blogger-sc-create.sql</pre><p>Note: Usually this script is called <span class="replaceable"><span class="replaceable">package_name</span></span>-sc-create.sql</p></li><li><p>Restart the service.</p><pre class="screen">[$OPENACS_SERVICE_NAME postgresql]$ <strong class="userinput"><code>svc -t /service/<span class="replaceable"><span class="replaceable">$OPENACS_SERVICE_NAME</span></span></code></strong>
+<tt class="computeroutput"><span class="guilabel"><span class="guilabel">Install</span></span></tt>.
+</p></li></ol></div></li><li><p>Restart the service.</p><pre class="screen">[$OPENACS_SERVICE_NAME $OPENACS_SERVICE_NAME]$ <b class="userinput"><tt>svc -t /service/<span class="replaceable"><span class="replaceable">$OPENACS_SERVICE_NAME</span></span></tt></b>
+[$OPENACS_SERVICE_NAME $OPENACS_SERVICE_NAME]$</pre></li></ol></div></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="install-fts-content-provider-openfts"></a>Enable Full Text Search in packages</h3></div></div><div></div></div><p>Enabling Full Text Search in packages at the moment is not trivial. It involves a couple of steps, which I will illustrate taking lars-blogger as an example package</p><div class="orderedlist"><ol type="1"><li><p>Install the package.
+                </p><div class="orderedlist"><ol type="a"><li><p>Click <tt class="computeroutput"><span class="guilabel"><span class="guilabel">Admin</span></span></tt> on the top of the default home page.  If prompted, log in with the account and password you entered during install.</p></li><li><p>Click on the <tt class="computeroutput"><span class="guilabel"><span class="guilabel">Install
+                  software</span></span></tt> link.</p></li><li><p>Click on the <tt class="computeroutput"><span class="guilabel"><span class="guilabel">Install
+                  new application</span></span></tt> link.</p></li><li><p>Click on the <tt class="computeroutput"><span class="guilabel"><span class="guilabel">Install</span></span></tt> link next to Weblogger.</p></li><li><p>Install all required packages as well (always say okay until you shall restart the server)</p></li></ol></div><p>
+                </p></li><li><p>Load the service contracts datamodell and enable the service contract</p><pre class="screen">[$OPENACS_SERVICE_NAME $OPENACS_SERVICE_NAME]$ <b class="userinput"><tt>cd packages/lars-blogger/sql/postgresql</tt></b>
+[$OPENACS_SERVICE_NAME postgresql]$ psql <span class="replaceable"><span class="replaceable">$OPENACS_SERVICE_NAME</span></span> -f lars-blogger-sc-create.sql</pre><p>Note: Usually this script is called <span class="replaceable"><span class="replaceable">package_name</span></span>-sc-create.sql</p></li><li><p>Restart the service.</p><pre class="screen">[$OPENACS_SERVICE_NAME postgresql]$ <b class="userinput"><tt>svc -t /service/<span class="replaceable"><span class="replaceable">$OPENACS_SERVICE_NAME</span></span></tt></b>
                 [$OPENACS_SERVICE_NAME postgresl]$</pre></li></ol></div><p>If you are lucky, Full Text Search is enabled now, if not consult <a href="http://openacs.org/forums/message-view?message_id=154759" target="_top">http://openacs.org/forums/message-view?message_id=154759</a>. This link also contains some hints on how to make sure it is enabled.</p></div></div><div class="navfooter"><hr><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="install-full-text-search-tsearch2.html">Prev</a> </td><td width="20%" align="center"><a accesskey="h" href="index.html">Home</a></td><td width="40%" align="right"> <a accesskey="n" href="install-nsopenssl.html">Next</a></td></tr><tr><td width="40%" align="left">Install Full Text Search using Tsearch2 </td><td width="20%" align="center"><a accesskey="u" href="install-more-software.html">Up</a></td><td width="40%" align="right"> Install nsopenssl</td></tr></table><hr><address><a href="mailto:docs@openacs.org">docs@openacs.org</a></address></div><a name="comments"></a><center><a href="http://openacs.org/doc/current/install-full-text-search-openfts.html#comments">View comments on this page at openacs.org</a></center></body></html>
Index: openacs-4/packages/acs-core-docs/www/install-full-text-search-tsearch2.html
===================================================================
RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/install-full-text-search-tsearch2.html,v
diff -u -r1.4 -r1.4.4.1
--- openacs-4/packages/acs-core-docs/www/install-full-text-search-tsearch2.html	17 Jul 2006 05:38:31 -0000	1.4
+++ openacs-4/packages/acs-core-docs/www/install-full-text-search-tsearch2.html	3 Feb 2008 12:07:39 -0000	1.4.4.1
@@ -1,11 +1,12 @@
-<html><head><meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"><title>Install Full Text Search using Tsearch2</title><meta name="generator" content="DocBook XSL Stylesheets V1.70.1"><link rel="home" href="index.html" title="OpenACS Core Documentation"><link rel="up" href="install-more-software.html" title="Appendix�B.�Install additional supporting software"><link rel="previous" href="install-nspam.html" title="Install nspam"><link rel="next" href="install-full-text-search-openfts.html" title="Install Full Text Search using OpenFTS (deprecated see tsearch2)"><link rel="stylesheet" href="openacs.css" type="text/css"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><a href="http://openacs.org"><img src="/doc/images/alex.jpg" border="0" alt="Alex logo"></a><table width="100%" summary="Navigation header" border="0"><tr><td width="20%" align="left"><a accesskey="p" href="install-nspam.html">Prev</a> </td><th width="60%" align="center">Appendix�B.�Install additional supporting software</th><td width="20%" align="right"> <a accesskey="n" href="install-full-text-search-openfts.html">Next</a></td></tr></table><hr></div><div class="sect1" lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="install-full-text-search-tsearch2"></a>Install Full Text Search using Tsearch2</h2></div></div></div><div class="authorblurb"><p>By <a href="mailto:dave@thedesignexperience.org" target="_top">Dave
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html><head><meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"><title>Install Full Text Search using Tsearch2</title><meta name="generator" content="DocBook XSL Stylesheets V1.60.1"><link rel="home" href="index.html" title="OpenACS Core Documentation"><link rel="up" href="install-more-software.html" title="Appendix�B.�Install additional supporting software"><link rel="previous" href="install-nspam.html" title="Install nspam"><link rel="next" href="install-full-text-search-openfts.html" title="Install Full Text Search using OpenFTS (deprecated see tsearch2)"><link rel="stylesheet" href="openacs.css" type="text/css"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><a href="http://openacs.org"><img src="/doc/images/alex.jpg" border="0" alt="Alex logo"></a><table width="100%" summary="Navigation header" border="0"><tr><td width="20%" align="left"><a accesskey="p" href="install-nspam.html">Prev</a> </td><th width="60%" align="center">Appendix�B.�Install additional supporting software</th><td width="20%" align="right"> <a accesskey="n" href="install-full-text-search-openfts.html">Next</a></td></tr></table><hr></div><div class="sect1" lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="install-full-text-search-tsearch2"></a>Install Full Text Search using Tsearch2</h2></div></div><div></div></div><div class="authorblurb"><p>By <a href="mailto:dave@thedesignexperience.org" target="_top">Dave
       Bauer</a>, <a href="mailto:joel@aufrecht.org" target="_top">Joel
       Aufrecht</a> and <a href="mailto:openacs@sussdorff.de" target="_top">Malte Sussdorff</a> with
       help from <a href="http://www.sai.msu.su/~megera/postgres/gist/tsearch/V2/docs/tsearch-V2-intro.html" target="_top">Tsearch
       V2 Introduction by Andrew J. Kopciuch</a></p>
           OpenACS docs are written by the named authors, and may be edited
           by OpenACS documentation staff.
-        </div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="install-tsearch2"></a>Install Tsearch2 module</h3></div></div></div><a class="indexterm" name="id1176484"></a><p>If you want full text search, and you are running PostgreSQL, install this module to support FTS.  Do this step after you have installed both PostgreSQL and
+        </div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="install-tsearch2"></a>Install Tsearch2 module</h3></div></div><div></div></div><a class="indexterm" name="id3072500"></a><p>If you want full text search, and you are running PostgreSQL, install this module to support FTS.  Do this step after you have installed both PostgreSQL and
       AOLserver.  You will need the tseach2 module form PostgreSQL
       contrib. This is included with the PostgreSQL full source
       distribution. It is also available with the PostgreSQL contrib
@@ -29,11 +30,11 @@
             place it in your postgreSQL source tree ($PGSQL_SRC). This
             patch makes the backup and restore procedures very
             simple.</p><pre class="screen">
-            [postgres pgsql]$ <strong class="userinput"><code>cd /tmp</code></strong>
-            [postgres tmp]$ <strong class="userinput"><code>wget http://www.sai.msu.su/~megera/postgres/gist/tsearch/V2/regprocedure_7.4.patch.gz</code></strong>
-            [postgres pgsql]$ <strong class="userinput"><code>cd /usr/local/src/postgresql-7.4.5/</code></strong>
-            [postgres postgresql-7.4.5] <strong class="userinput"><code>gunzip /tmp/regprocedure_7.4.patch.gz</code></strong>
-            [postgres postgresql-7.4.5] <strong class="userinput"><code>patch -b -p1 &lt; regprocedure_7.4.patch</code></strong>
+            [postgres pgsql]$ <b class="userinput"><tt>cd /tmp</tt></b>
+            [postgres tmp]$ <b class="userinput"><tt>wget http://www.sai.msu.su/~megera/postgres/gist/tsearch/V2/regprocedure_7.4.patch.gz</tt></b>
+            [postgres pgsql]$ <b class="userinput"><tt>cd /usr/local/src/postgresql-7.4.5/</tt></b>
+            [postgres postgresql-7.4.5] <b class="userinput"><tt>gunzip /tmp/regprocedure_7.4.patch.gz</tt></b>
+            [postgres postgresql-7.4.5] <b class="userinput"><tt>patch -b -p1 &lt; regprocedure_7.4.patch</tt></b>
               </pre><p>If you have a working version of tsearch2 in your
             database, you
               do not need to re-install the tsearch2 module. Just
@@ -56,52 +57,52 @@
               8.0.</p></li><li><p>Install Tsearch2.  This is a PostgreSQL module
               that the tsearch2-driver OpenACS package requires. These
               instructions assume you are using the latest point
-              release of PostgreSQL 7.4.5.</p><pre class="screen">[root root]# <strong class="userinput"><code>su - postgres</code></strong>
-[postgres pgsql]$ <strong class="userinput"><code>cd /usr/local/src/postgresql-7.4.5/contrib/tsearch2/</code></strong>
-[postgres tsearch2]$ <strong class="userinput"><code>make</code></strong>
-[postgres tsearch2]$ <strong class="userinput"><code>make install</code></strong>
+              release of PostgreSQL 7.4.5.</p><pre class="screen">[root root]# <b class="userinput"><tt>su - postgres</tt></b>
+[postgres pgsql]$ <b class="userinput"><tt>cd /usr/local/src/postgresql-7.4.5/contrib/tsearch2/</tt></b>
+[postgres tsearch2]$ <b class="userinput"><tt>make</tt></b>
+[postgres tsearch2]$ <b class="userinput"><tt>make install</tt></b>
 mkdir /usr/local/pgsql/share/contrib
 mkdir /usr/local/pgsql/doc/contrib
 (2 lines omitted)
 /bin/sh ../../config/install-sh -c -m 755 libtsearch.so.0.0 /usr/local/pgsql/lib/tsearch.so
-[postgres tsearch]$ <strong class="userinput"><code>exit</code></strong>
+[postgres tsearch]$ <b class="userinput"><tt>exit</tt></b>
 logout
 
 [root root]#
 <span class="action"><span class="action">su - postgres
 cd /usr/local/src/postgresql-7.4.5/contrib/tsearch2
 make
 make install
-exit</span></span></pre></li></ol></div></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="install-fts-engine"></a>Install Full Text Search Engine Package in OpenACS</h3></div></div></div><div class="orderedlist"><ol type="1"><li><p>Click <code class="computeroutput"><span class="guilabel"><span class="guilabel">Admin</span></span></code> on the top of the default home page.  If prompted, log in with the account and password you entered during install.</p></li><li><p>Click on the <code class="computeroutput"><span class="guilabel"><span class="guilabel">Install
-software</span></span></code> link.</p></li><li><p>Click on the <code class="computeroutput"><span class="guilabel"><span class="guilabel">Install
-new service</span></span></code> link.</p></li><li><p>Click on the
-          <code class="computeroutput"><span class="guilabel"><span class="guilabel">Install</span></span></code>
+exit</span></span></pre></li></ol></div></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="install-fts-engine"></a>Install Full Text Search Engine Package in OpenACS</h3></div></div><div></div></div><div class="orderedlist"><ol type="1"><li><p>Click <tt class="computeroutput"><span class="guilabel"><span class="guilabel">Admin</span></span></tt> on the top of the default home page.  If prompted, log in with the account and password you entered during install.</p></li><li><p>Click on the <tt class="computeroutput"><span class="guilabel"><span class="guilabel">Install
+software</span></span></tt> link.</p></li><li><p>Click on the <tt class="computeroutput"><span class="guilabel"><span class="guilabel">Install
+new service</span></span></tt> link.</p></li><li><p>Click on the
+          <tt class="computeroutput"><span class="guilabel"><span class="guilabel">Install</span></span></tt>
           link next to Tsearch2 Driver. If you have installed tsearch2
           into your PostgreSQL database, the installer will
-          automatically enable tsearch in your OpenACS database instance.</p></li><li><p>Restart the service.</p><pre class="screen">[$OPENACS_SERVICE_NAME $OPENACS_SERVICE_NAME]$ <strong class="userinput"><code>svc -t /service/<span class="replaceable"><span class="replaceable">$OPENACS_SERVICE_NAME</span></span></code></strong>
-[$OPENACS_SERVICE_NAME $OPENACS_SERVICE_NAME]$</pre></li><li><p>Wait a minute, then browse back to the home page.</p></li><li><p>Click on <code class="computeroutput"><span class="guilabel"><span class="guilabel">Admin</span></span></code> on the top of the screen.</p></li><li><p>Click on <code class="computeroutput"><span class="guilabel"><span class="guilabel">Main Site Administration</span></span></code> in the "Subsite Administration" section.</p></li><li><p>Click on <code class="computeroutput"><span class="guilabel"><span class="guilabel">Site Map</span></span></code> in the "Advanced Features" section.</p></li><li><p>Mount the Search interface in the site map.</p><div class="orderedlist"><ol type="a"><li><p>Click the
-<code class="computeroutput"><span class="guilabel"><span class="guilabel">new sub folder</span></span></code> link on the
-Main Site line. </p></li><li><p>Type <strong class="userinput"><code>search</code></strong>
-and click <code class="computeroutput"><span class="guibutton"><span class="guibutton">New</span></span></code>. </p></li><li><p>Click the <code class="computeroutput"><span class="guilabel"><span class="guilabel">new
-application</span></span></code> link on the <code class="computeroutput"><span class="guilabel"><span class="guilabel">search</span></span></code>
-	  line. </p></li><li><p>Type <strong class="userinput"><code>search</code></strong>
+          automatically enable tsearch in your OpenACS database instance.</p></li><li><p>Restart the service.</p><pre class="screen">[$OPENACS_SERVICE_NAME $OPENACS_SERVICE_NAME]$ <b class="userinput"><tt>svc -t /service/<span class="replaceable"><span class="replaceable">$OPENACS_SERVICE_NAME</span></span></tt></b>
+[$OPENACS_SERVICE_NAME $OPENACS_SERVICE_NAME]$</pre></li><li><p>Wait a minute, then browse back to the home page.</p></li><li><p>Click on <tt class="computeroutput"><span class="guilabel"><span class="guilabel">Admin</span></span></tt> on the top of the screen.</p></li><li><p>Click on <tt class="computeroutput"><span class="guilabel"><span class="guilabel">Main Site Administration</span></span></tt> in the &quot;Subsite Administration&quot; section.</p></li><li><p>Click on <tt class="computeroutput"><span class="guilabel"><span class="guilabel">Site Map</span></span></tt> in the &quot;Advanced Features&quot; section.</p></li><li><p>Mount the Search interface in the site map.</p><div class="orderedlist"><ol type="a"><li><p>Click the
+<tt class="computeroutput"><span class="guilabel"><span class="guilabel">new sub folder</span></span></tt> link on the
+Main Site line. </p></li><li><p>Type <b class="userinput"><tt>search</tt></b>
+and click <tt class="computeroutput"><span class="guibutton"><span class="guibutton">New</span></span></tt>. </p></li><li><p>Click the <tt class="computeroutput"><span class="guilabel"><span class="guilabel">new
+application</span></span></tt> link on the <tt class="computeroutput"><span class="guilabel"><span class="guilabel">search</span></span></tt>
+	  line. </p></li><li><p>Type <b class="userinput"><tt>search</tt></b>
 where it says
-<code class="computeroutput"><span class="guilabel"><span class="guilabel">untitled</span></span></code>, choose
-<code class="computeroutput"><span class="guilabel"><span class="guilabel">search</span></span></code> from the
+<tt class="computeroutput"><span class="guilabel"><span class="guilabel">untitled</span></span></tt>, choose
+<tt class="computeroutput"><span class="guilabel"><span class="guilabel">search</span></span></tt> from the
 drop-down list, and click
-<code class="computeroutput"><span class="guibutton"><span class="guibutton">New</span></span></code>.
+<tt class="computeroutput"><span class="guibutton"><span class="guibutton">New</span></span></tt>.
 </p></li><li><p>Click the 
-<code class="computeroutput"><span class="guilabel"><span class="guilabel">Parameters</span></span></code> link
-                next to the Search package istance.</p></li><li><p>Type <strong class="userinput"><code>tsearch2-driver</code></strong>
+<tt class="computeroutput"><span class="guilabel"><span class="guilabel">Parameters</span></span></tt> link
+                next to the Search package istance.</p></li><li><p>Type <b class="userinput"><tt>tsearch2-driver</tt></b>
 where it says
-<code class="computeroutput"><span class="guilabel"><span class="guilabel">openfts-driver</span></span></code>
+<tt class="computeroutput"><span class="guilabel"><span class="guilabel">openfts-driver</span></span></tt>
                 in the
-                <code class="computeroutput"><span class="guilabel"><span class="guilabel">FtsEngineDriver</span></span></code> parameter.
-</p></li></ol></div></li><li><p>Restart the service.</p><pre class="screen">[$OPENACS_SERVICE_NAME $OPENACS_SERVICE_NAME]$ <strong class="userinput"><code>svc -t /service/<span class="replaceable"><span class="replaceable">$OPENACS_SERVICE_NAME</span></span></code></strong>
-[$OPENACS_SERVICE_NAME $OPENACS_SERVICE_NAME]$</pre></li><li><p>Wait a minute, then click on <code class="computeroutput"><span class="guilabel"><span class="guilabel">Main Site</span></span></code> at the top of the page.</p></li></ol></div></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="install-fts-content-provider"></a>Enable Full Text Search in packages</h3></div></div></div><p>Enabling Full Text Search in packages at the moment is not trivial. It involves a couple of steps, which I will illustrate taking lars-blogger as an example package</p><div class="orderedlist"><ol type="1"><li><p>Install the package.
-                </p><div class="orderedlist"><ol type="a"><li><p>Click <code class="computeroutput"><span class="guilabel"><span class="guilabel">Admin</span></span></code> on the top of the default home page.  If prompted, log in with the account and password you entered during install.</p></li><li><p>Click on the <code class="computeroutput"><span class="guilabel"><span class="guilabel">Install
-                  software</span></span></code> link.</p></li><li><p>Click on the <code class="computeroutput"><span class="guilabel"><span class="guilabel">Install
-                  new application</span></span></code> link.</p></li><li><p>Click on the <code class="computeroutput"><span class="guilabel"><span class="guilabel">Install</span></span></code> link next to Weblogger.</p></li><li><p>Install all required packages as well (always say okay until you shall restart the server)</p></li></ol></div><p>
-                </p></li><li><p>Load the service contracts datamodell and enable the service contract</p><pre class="screen">[$OPENACS_SERVICE_NAME $OPENACS_SERVICE_NAME]$ <strong class="userinput"><code>cd packages/lars-blogger/sql/postgresql</code></strong>
-[$OPENACS_SERVICE_NAME postgresql]$ psql <span class="replaceable"><span class="replaceable">$OPENACS_SERVICE_NAME</span></span> -f lars-blogger-sc-create.sql</pre><p>Note: Usually this script is called <span class="replaceable"><span class="replaceable">package_name</span></span>-sc-create.sql</p></li><li><p>Restart the service.</p><pre class="screen">[$OPENACS_SERVICE_NAME postgresql]$ <strong class="userinput"><code>svc -t /service/<span class="replaceable"><span class="replaceable">$OPENACS_SERVICE_NAME</span></span></code></strong>
+                <tt class="computeroutput"><span class="guilabel"><span class="guilabel">FtsEngineDriver</span></span></tt> parameter.
+</p></li></ol></div></li><li><p>Restart the service.</p><pre class="screen">[$OPENACS_SERVICE_NAME $OPENACS_SERVICE_NAME]$ <b class="userinput"><tt>svc -t /service/<span class="replaceable"><span class="replaceable">$OPENACS_SERVICE_NAME</span></span></tt></b>
+[$OPENACS_SERVICE_NAME $OPENACS_SERVICE_NAME]$</pre></li><li><p>Wait a minute, then click on <tt class="computeroutput"><span class="guilabel"><span class="guilabel">Main Site</span></span></tt> at the top of the page.</p></li></ol></div></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="install-fts-content-provider"></a>Enable Full Text Search in packages</h3></div></div><div></div></div><p>Enabling Full Text Search in packages at the moment is not trivial. It involves a couple of steps, which I will illustrate taking lars-blogger as an example package</p><div class="orderedlist"><ol type="1"><li><p>Install the package.
+                </p><div class="orderedlist"><ol type="a"><li><p>Click <tt class="computeroutput"><span class="guilabel"><span class="guilabel">Admin</span></span></tt> on the top of the default home page.  If prompted, log in with the account and password you entered during install.</p></li><li><p>Click on the <tt class="computeroutput"><span class="guilabel"><span class="guilabel">Install
+                  software</span></span></tt> link.</p></li><li><p>Click on the <tt class="computeroutput"><span class="guilabel"><span class="guilabel">Install
+                  new application</span></span></tt> link.</p></li><li><p>Click on the <tt class="computeroutput"><span class="guilabel"><span class="guilabel">Install</span></span></tt> link next to Weblogger.</p></li><li><p>Install all required packages as well (always say okay until you shall restart the server)</p></li></ol></div><p>
+                </p></li><li><p>Load the service contracts datamodell and enable the service contract</p><pre class="screen">[$OPENACS_SERVICE_NAME $OPENACS_SERVICE_NAME]$ <b class="userinput"><tt>cd packages/lars-blogger/sql/postgresql</tt></b>
+[$OPENACS_SERVICE_NAME postgresql]$ psql <span class="replaceable"><span class="replaceable">$OPENACS_SERVICE_NAME</span></span> -f lars-blogger-sc-create.sql</pre><p>Note: Usually this script is called <span class="replaceable"><span class="replaceable">package_name</span></span>-sc-create.sql</p></li><li><p>Restart the service.</p><pre class="screen">[$OPENACS_SERVICE_NAME postgresql]$ <b class="userinput"><tt>svc -t /service/<span class="replaceable"><span class="replaceable">$OPENACS_SERVICE_NAME</span></span></tt></b>
                 [$OPENACS_SERVICE_NAME postgresl]$</pre></li></ol></div><p>If you are lucky, Full Text Search is enabled now, if not consult <a href="http://openacs.org/forums/message-view?message_id=154759" target="_top">http://openacs.org/forums/message-view?message_id=154759</a>. This link also contains some hints on how to make sure it is enabled.</p></div></div><div class="navfooter"><hr><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="install-nspam.html">Prev</a> </td><td width="20%" align="center"><a accesskey="h" href="index.html">Home</a></td><td width="40%" align="right"> <a accesskey="n" href="install-full-text-search-openfts.html">Next</a></td></tr><tr><td width="40%" align="left">Install nspam </td><td width="20%" align="center"><a accesskey="u" href="install-more-software.html">Up</a></td><td width="40%" align="right"> Install Full Text Search using OpenFTS (deprecated see tsearch2)</td></tr></table><hr><address><a href="mailto:docs@openacs.org">docs@openacs.org</a></address></div><a name="comments"></a><center><a href="http://openacs.org/doc/current/install-full-text-search-tsearch2.html#comments">View comments on this page at openacs.org</a></center></body></html>
Index: openacs-4/packages/acs-core-docs/www/install-ldap-radius.html
===================================================================
RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/install-ldap-radius.html,v
diff -u -r1.4 -r1.4.4.1
--- openacs-4/packages/acs-core-docs/www/install-ldap-radius.html	17 Jul 2006 05:38:31 -0000	1.4
+++ openacs-4/packages/acs-core-docs/www/install-ldap-radius.html	3 Feb 2008 12:07:39 -0000	1.4.4.1
@@ -1,12 +1,13 @@
-<html><head><meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"><title>Install LDAP for use as external authentication</title><meta name="generator" content="DocBook XSL Stylesheets V1.70.1"><link rel="home" href="index.html" title="OpenACS Core Documentation"><link rel="up" href="install-more-software.html" title="Appendix�B.�Install additional supporting software"><link rel="previous" href="install-pam-radius.html" title="Install PAM Radius for use as external authentication"><link rel="next" href="aolserver.html" title="Install AOLserver 3.3oacs1"><link rel="stylesheet" href="openacs.css" type="text/css"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><a href="http://openacs.org"><img src="/doc/images/alex.jpg" border="0" alt="Alex logo"></a><table width="100%" summary="Navigation header" border="0"><tr><td width="20%" align="left"><a accesskey="p" href="install-pam-radius.html">Prev</a> </td><th width="60%" align="center">Appendix�B.�Install additional supporting software</th><td width="20%" align="right"> <a accesskey="n" href="aolserver.html">Next</a></td></tr></table><hr></div><div class="sect1" lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="install-ldap-radius"></a>Install LDAP for use as external authentication</h2></div></div></div><div class="authorblurb"><p>By <a href="mailto:openacs@sussdorff.de" target="_top">Malte Sussdorff</a></p>
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html><head><meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"><title>Install LDAP for use as external authentication</title><meta name="generator" content="DocBook XSL Stylesheets V1.60.1"><link rel="home" href="index.html" title="OpenACS Core Documentation"><link rel="up" href="install-more-software.html" title="Appendix�B.�Install additional supporting software"><link rel="previous" href="install-pam-radius.html" title="Install PAM Radius for use as external authentication"><link rel="next" href="aolserver.html" title="Install AOLserver 3.3oacs1"><link rel="stylesheet" href="openacs.css" type="text/css"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><a href="http://openacs.org"><img src="/doc/images/alex.jpg" border="0" alt="Alex logo"></a><table width="100%" summary="Navigation header" border="0"><tr><td width="20%" align="left"><a accesskey="p" href="install-pam-radius.html">Prev</a> </td><th width="60%" align="center">Appendix�B.�Install additional supporting software</th><td width="20%" align="right"> <a accesskey="n" href="aolserver.html">Next</a></td></tr></table><hr></div><div class="sect1" lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="install-ldap-radius"></a>Install LDAP for use as external authentication</h2></div></div><div></div></div><div class="authorblurb"><p>By <a href="mailto:openacs@sussdorff.de" target="_top">Malte Sussdorff</a></p>
           OpenACS docs are written by the named authors, and may be edited
           by OpenACS documentation staff.
-        </div><p>This step by step guide on how to use LDAP for external authentication using the LDAP bind command, which differs from the approach usually taken by auth-ldap. Both will be dealt with in these section</p><div class="orderedlist"><ol type="1"><li><a name="install-openldap"></a><p><b>Install openldap.�</b>Download and install ns_ldap</p><pre class="screen">[root aolserver]# <strong class="userinput"><code>cd /usr/local/src/</code></strong>
-          [root src]# <strong class="userinput"><code>wget ftp://ftp.openldap.org/pub/OpenLDAP/openldap-release/openldap-2.2.17.tgz</code></strong>
-          [root src]# <strong class="userinput"><code>tar xvfz openldap-2.2.17.tgz</code></strong>
-          [root src]# <strong class="userinput"><code>cd openldap-2.2.17</code></strong>
-          [root src]# <strong class="userinput"><code>./configure --prefix=/usr/local/openldap</code></strong>
-          [root openldap]# <strong class="userinput"><code>make install</code></strong>
+        </div><p>This step by step guide on how to use LDAP for external authentication using the LDAP bind command, which differs from the approach usually taken by auth-ldap. Both will be dealt with in these section</p><div class="orderedlist"><ol type="1"><li><a name="install-openldap"></a><p><b>Install openldap.�</b>Download and install ns_ldap</p><pre class="screen">[root aolserver]# <b class="userinput"><tt>cd /usr/local/src/</tt></b>
+          [root src]# <b class="userinput"><tt>wget ftp://ftp.openldap.org/pub/OpenLDAP/openldap-release/openldap-2.2.17.tgz</tt></b>
+          [root src]# <b class="userinput"><tt>tar xvfz openldap-2.2.17.tgz</tt></b>
+          [root src]# <b class="userinput"><tt>cd openldap-2.2.17</tt></b>
+          [root src]# <b class="userinput"><tt>./configure --prefix=/usr/local/openldap</tt></b>
+          [root openldap]# <b class="userinput"><tt>make install</tt></b>
           [root openldap]#
 <span class="action"><span class="action">cd /usr/local/src/
 wget ftp://ftp.openldap.org/pub/OpenLDAP/openldap-release/openldap-2.2.17.tgz
@@ -15,18 +16,18 @@
 ./configure --prefix=/usr/local/openldap --disable-slapd
 make install
 </span></span>
-          </pre></li><li><a name="install-ns_ldap"></a><p><b>Install ns_ldap.�</b>Download and install ns_ldap</p><pre class="screen">[root aolserver]# <strong class="userinput"><code>cd /usr/local/src/aolserver/</code></strong>
-          [root aolserver]# <strong class="userinput"><code>wget http://www.sussdorff.de/ressources/nsldap.tgz</code></strong>
-          [root aolserver]# <strong class="userinput"><code>tar xfz nsldap.tgz</code></strong>
-          [root aolserver]# <strong class="userinput"><code>cd nsldap</code></strong>
-          [root ns_pam-0.1]# <strong class="userinput"><code>make install LDAP=/usr/local/openldap INST=/usr/local/aolserver</code></strong>
+          </pre></li><li><a name="install-ns_ldap"></a><p><b>Install ns_ldap.�</b>Download and install ns_ldap</p><pre class="screen">[root aolserver]# <b class="userinput"><tt>cd /usr/local/src/aolserver/</tt></b>
+          [root aolserver]# <b class="userinput"><tt>wget http://www.sussdorff.de/ressources/nsldap.tgz</tt></b>
+          [root aolserver]# <b class="userinput"><tt>tar xfz nsldap.tgz</tt></b>
+          [root aolserver]# <b class="userinput"><tt>cd nsldap</tt></b>
+          [root ns_pam-0.1]# <b class="userinput"><tt>make install LDAP=/usr/local/openldap INST=/usr/local/aolserver</tt></b>
           [root ns_pam-0.1]#
 <span class="action"><span class="action">cd /usr/local/src/aolserver/
 wget http://www.sussdorff.de/resources/nsldap.tgz
 tar xfz nsldap.tgz
 cd nsldap
 make install LDAP=/usr/local/openldap INST=/usr/local/aolserver
 </span></span>
-          </pre></li><li><a name="configure-ns_ldap"></a><p><b>Configure ns_ldap for traditional use.�</b>Traditionally OpenACS has supported ns_ldap for authentification by storing the OpenACS password in an encrypted field within the LDAP server called "userPassword". Furthermore a CN field was used for searching for the username, usually userID or something similar. This field is identical to the <span class="emphasis"><em>username</em></span>stored in OpenACS. Therefore the login will only work if you change login method to make use of the username instead.</p><div class="itemizedlist"><ul type="disc"><li><p>
-              Change <span class="emphasis"><em>config.tcl</em></span>. Remove the <span class="emphasis"><em>#</em></span> in front of <code class="computeroutput">ns_param nsldap ${bindir}/nsldap.so</code> to enable the loading of the ns_ldap module.
-            </p></li></ul></div></li><li><a name="configure-ns_ldap-bind"></a><p><b>Configure ns_ldap for use with LDAP bind.�</b>LDAP authentication usually is done by trying to bind (aka. login) a user with the LDAP server. The password of the user is not stored in any field of the LDAP server, but kept internally. The latest version of ns_ldap supports this method with the <span class="emphasis"><em>ns_ldap bind</em></span> command. All you have to do to enable this is to configure auth_ldap to make use of the BIND authentification instead. Alternatively you can write a small script on how to calculate the username out of the given input (e.g. if the OpenACS username is malte.fb03.tu, the LDAP request can be translated into "ou=malte,ou=fb03,o=tu" (this example is encoded in auth_ldap and you just have to comment it out to make use of it).</p></li></ol></div></div><div class="navfooter"><hr><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="install-pam-radius.html">Prev</a> </td><td width="20%" align="center"><a accesskey="h" href="index.html">Home</a></td><td width="40%" align="right"> <a accesskey="n" href="aolserver.html">Next</a></td></tr><tr><td width="40%" align="left">Install PAM Radius for use as external authentication </td><td width="20%" align="center"><a accesskey="u" href="install-more-software.html">Up</a></td><td width="40%" align="right"> Install AOLserver 3.3oacs1</td></tr></table><hr><address><a href="mailto:docs@openacs.org">docs@openacs.org</a></address></div><a name="comments"></a><center><a href="http://openacs.org/doc/current/install-ldap-radius.html#comments">View comments on this page at openacs.org</a></center></body></html>
+          </pre></li><li><a name="configure-ns_ldap"></a><p><b>Configure ns_ldap for traditional use.�</b>Traditionally OpenACS has supported ns_ldap for authentification by storing the OpenACS password in an encrypted field within the LDAP server called &quot;userPassword&quot;. Furthermore a CN field was used for searching for the username, usually userID or something similar. This field is identical to the <span class="emphasis"><em>username</em></span>stored in OpenACS. Therefore the login will only work if you change login method to make use of the username instead.</p><div class="itemizedlist"><ul type="disc"><li><p>
+              Change <span class="emphasis"><em>config.tcl</em></span>. Remove the <span class="emphasis"><em>#</em></span> in front of <tt class="computeroutput">ns_param nsldap ${bindir}/nsldap.so</tt> to enable the loading of the ns_ldap module.
+            </p></li></ul></div></li><li><a name="configure-ns_ldap-bind"></a><p><b>Configure ns_ldap for use with LDAP bind.�</b>LDAP authentication usually is done by trying to bind (aka. login) a user with the LDAP server. The password of the user is not stored in any field of the LDAP server, but kept internally. The latest version of ns_ldap supports this method with the <span class="emphasis"><em>ns_ldap bind</em></span> command. All you have to do to enable this is to configure auth_ldap to make use of the BIND authentification instead. Alternatively you can write a small script on how to calculate the username out of the given input (e.g. if the OpenACS username is malte.fb03.tu, the LDAP request can be translated into &quot;ou=malte,ou=fb03,o=tu&quot; (this example is encoded in auth_ldap and you just have to comment it out to make use of it).</p></li></ol></div></div><div class="navfooter"><hr><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="install-pam-radius.html">Prev</a> </td><td width="20%" align="center"><a accesskey="h" href="index.html">Home</a></td><td width="40%" align="right"> <a accesskey="n" href="aolserver.html">Next</a></td></tr><tr><td width="40%" align="left">Install PAM Radius for use as external authentication </td><td width="20%" align="center"><a accesskey="u" href="install-more-software.html">Up</a></td><td width="40%" align="right"> Install AOLserver 3.3oacs1</td></tr></table><hr><address><a href="mailto:docs@openacs.org">docs@openacs.org</a></address></div><a name="comments"></a><center><a href="http://openacs.org/doc/current/install-ldap-radius.html#comments">View comments on this page at openacs.org</a></center></body></html>
Index: openacs-4/packages/acs-core-docs/www/install-more-software.html
===================================================================
RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/install-more-software.html,v
diff -u -r1.16 -r1.16.4.1
--- openacs-4/packages/acs-core-docs/www/install-more-software.html	17 Jul 2006 05:38:31 -0000	1.16
+++ openacs-4/packages/acs-core-docs/www/install-more-software.html	3 Feb 2008 12:07:39 -0000	1.16.4.1
@@ -1,8 +1,9 @@
-<html><head><meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"><title>Appendix�B.�Install additional supporting software</title><meta name="generator" content="DocBook XSL Stylesheets V1.70.1"><link rel="home" href="index.html" title="OpenACS Core Documentation"><link rel="up" href="acs-admin.html" title="Part�II.�Administrator's Guide"><link rel="previous" href="install-redhat.html" title="Appendix�A.�Install Red Hat 8/9"><link rel="next" href="openacs-unpack.html" title="Unpack the OpenACS tarball"><link rel="stylesheet" href="openacs.css" type="text/css"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><a href="http://openacs.org"><img src="/doc/images/alex.jpg" border="0" alt="Alex logo"></a><table width="100%" summary="Navigation header" border="0"><tr><td width="20%" align="left"><a accesskey="p" href="install-redhat.html">Prev</a> </td><th width="60%" align="center">Part�II.�Administrator's Guide</th><td width="20%" align="right"> <a accesskey="n" href="openacs-unpack.html">Next</a></td></tr></table><hr></div><div class="appendix" lang="en"><div class="titlepage"><div><div><h2 class="title"><a name="install-more-software"></a>Appendix�B.�Install additional supporting software</h2></div></div></div><div class="toc"><p><b>Table of Contents</b></p><dl><dt><span class="sect1"><a href="openacs-unpack.html">Unpack the OpenACS tarball</a></span></dt><dt><span class="sect1"><a href="install-cvs.html">Initialize CVS (OPTIONAL)</a></span></dt><dt><span class="sect1"><a href="psgml-for-emacs.html">Add PSGML commands to emacs init file (OPTIONAL)</a></span></dt><dt><span class="sect1"><a href="install-daemontools.html">Install Daemontools (OPTIONAL)</a></span></dt><dt><span class="sect1"><a href="install-qmail.html">Install qmail (OPTIONAL)</a></span></dt><dt><span class="sect1"><a href="analog-install.html">Install Analog web file analyzer</a></span></dt><dt><span class="sect1"><a href="install-nspam.html">Install nspam</a></span></dt><dt><span class="sect1"><a href="install-full-text-search-tsearch2.html">Install Full Text Search using Tsearch2</a></span></dt><dt><span class="sect1"><a href="install-full-text-search-openfts.html">Install Full Text Search using OpenFTS (deprecated see tsearch2)</a></span></dt><dt><span class="sect1"><a href="install-nsopenssl.html">Install nsopenssl</a></span></dt><dt><span class="sect1"><a href="install-tclwebtest.html">Install tclwebtest.</a></span></dt><dt><span class="sect1"><a href="install-php.html">Install PHP for use in AOLserver</a></span></dt><dt><span class="sect1"><a href="install-squirrelmail.html">Install Squirrelmail for use as a webmail system for OpenACS</a></span></dt><dt><span class="sect1"><a href="install-pam-radius.html">Install PAM Radius for use as external authentication</a></span></dt><dt><span class="sect1"><a href="install-ldap-radius.html">Install LDAP for use as external authentication</a></span></dt><dt><span class="sect1"><a href="aolserver.html">Install AOLserver 3.3oacs1</a></span></dt></dl></div><div class="authorblurb"><p>By <a href="mailto:joel@aufrecht.org" target="_top">Joel Aufrecht</a></p>
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html><head><meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"><title>Appendix�B.�Install additional supporting software</title><meta name="generator" content="DocBook XSL Stylesheets V1.60.1"><link rel="home" href="index.html" title="OpenACS Core Documentation"><link rel="up" href="acs-admin.html" title="Part�II.�Administrator's Guide"><link rel="previous" href="install-redhat.html" title="Appendix�A.�Install Red Hat 8/9"><link rel="next" href="openacs-unpack.html" title="Unpack the OpenACS tarball"><link rel="stylesheet" href="openacs.css" type="text/css"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><a href="http://openacs.org"><img src="/doc/images/alex.jpg" border="0" alt="Alex logo"></a><table width="100%" summary="Navigation header" border="0"><tr><td width="20%" align="left"><a accesskey="p" href="install-redhat.html">Prev</a> </td><th width="60%" align="center">Part�II.�Administrator's Guide</th><td width="20%" align="right"> <a accesskey="n" href="openacs-unpack.html">Next</a></td></tr></table><hr></div><div class="appendix" lang="en"><div class="titlepage"><div><div><h2 class="title"><a name="install-more-software"></a>Appendix�B.�Install additional supporting software</h2></div></div><div></div></div><div class="toc"><p><b>Table of Contents</b></p><dl><dt><a href="openacs-unpack.html">Unpack the OpenACS tarball</a></dt><dt><a href="install-cvs.html">Initialize CVS (OPTIONAL)</a></dt><dt><a href="psgml-for-emacs.html">Add PSGML commands to emacs init file (OPTIONAL)</a></dt><dt><a href="install-daemontools.html">Install Daemontools (OPTIONAL)</a></dt><dt><a href="install-qmail.html">Install qmail (OPTIONAL)</a></dt><dt><a href="analog-install.html">Install Analog web file analyzer</a></dt><dt><a href="install-nspam.html">Install nspam</a></dt><dt><a href="install-full-text-search-tsearch2.html">Install Full Text Search using Tsearch2</a></dt><dt><a href="install-full-text-search-openfts.html">Install Full Text Search using OpenFTS (deprecated see tsearch2)</a></dt><dt><a href="install-nsopenssl.html">Install nsopenssl</a></dt><dt><a href="install-tclwebtest.html">Install tclwebtest.</a></dt><dt><a href="install-php.html">Install PHP for use in AOLserver</a></dt><dt><a href="install-squirrelmail.html">Install Squirrelmail for use as a webmail system for OpenACS</a></dt><dt><a href="install-pam-radius.html">Install PAM Radius for use as external authentication</a></dt><dt><a href="install-ldap-radius.html">Install LDAP for use as external authentication</a></dt><dt><a href="aolserver.html">Install AOLserver 3.3oacs1</a></dt></dl></div><div class="authorblurb"><p>By <a href="mailto:joel@aufrecht.org" target="_top">Joel Aufrecht</a></p>
           OpenACS docs are written by the named authors, and may be edited
           by OpenACS documentation staff.
         </div><p>This section assumes that the source tarballs for supporting
-    software are in <code class="computeroutput">/tmp</code>.  It assumes
+    software are in <tt class="computeroutput">/tmp</tt>.  It assumes
     that you begin each continuous block of commands as root, and you
     should end each block as root.  It doesn't care which directory
     you start in.  Text instructions always precede the commands they
Index: openacs-4/packages/acs-core-docs/www/install-next-add-server.html
===================================================================
RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/install-next-add-server.html,v
diff -u -r1.10 -r1.10.4.1
--- openacs-4/packages/acs-core-docs/www/install-next-add-server.html	17 Jul 2006 05:38:31 -0000	1.10
+++ openacs-4/packages/acs-core-docs/www/install-next-add-server.html	3 Feb 2008 12:07:39 -0000	1.10.4.1
@@ -1,11 +1,12 @@
-<html><head><meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"><title>Running multiple services on one machine</title><meta name="generator" content="DocBook XSL Stylesheets V1.70.1"><link rel="home" href="index.html" title="OpenACS Core Documentation"><link rel="up" href="maintenance-web.html" title="Chapter�6.�Production Environments"><link rel="previous" href="install-openacs-inittab.html" title="AOLserver keepalive with inittab"><link rel="next" href="high-avail.html" title="High Availability/High Performance Configurations"><link rel="stylesheet" href="openacs.css" type="text/css"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><a href="http://openacs.org"><img src="/doc/images/alex.jpg" border="0" alt="Alex logo"></a><table width="100%" summary="Navigation header" border="0"><tr><td width="20%" align="left"><a accesskey="p" href="install-openacs-inittab.html">Prev</a> </td><th width="60%" align="center">Chapter�6.�Production Environments</th><td width="20%" align="right"> <a accesskey="n" href="high-avail.html">Next</a></td></tr></table><hr></div><div class="sect1" lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="install-next-add-server"></a>Running multiple services on one machine</h2></div></div></div><p><b>Services on different ports.�</b>To run a different service on another port but the same
-        ip, simply repeat <a href="openacs.html">Install OpenACS 5.2.3rc1</a> replacing
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html><head><meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"><title>Running multiple services on one machine</title><meta name="generator" content="DocBook XSL Stylesheets V1.60.1"><link rel="home" href="index.html" title="OpenACS Core Documentation"><link rel="up" href="maintenance-web.html" title="Chapter�6.�Production Environments"><link rel="previous" href="install-openacs-inittab.html" title="AOLserver keepalive with inittab"><link rel="next" href="high-avail.html" title="High Availability/High Performance Configurations"><link rel="stylesheet" href="openacs.css" type="text/css"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><a href="http://openacs.org"><img src="/doc/images/alex.jpg" border="0" alt="Alex logo"></a><table width="100%" summary="Navigation header" border="0"><tr><td width="20%" align="left"><a accesskey="p" href="install-openacs-inittab.html">Prev</a> </td><th width="60%" align="center">Chapter�6.�Production Environments</th><td width="20%" align="right"> <a accesskey="n" href="high-avail.html">Next</a></td></tr></table><hr></div><div class="sect1" lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="install-next-add-server"></a>Running multiple services on one machine</h2></div></div><div></div></div><p><b>Services on different ports.�</b>To run a different service on another port but the same
+        ip, simply repeat <a href="openacs.html">Install OpenACS 5.4.0</a> replacing
         <span class="replaceable"><span class="replaceable">$OPENACS_SERVICE_NAME</span></span>, and change the
 </p><pre class="programlisting">set httpport              8000
 set httpsport             8443 </pre><p>
  to different values.</p><p><b>Services on different host names.�</b>For example, suppose you want to support
-<code class="computeroutput">http://service0.com</code> and
-    <code class="computeroutput">http://bar.com</code> on the same
+<tt class="computeroutput">http://service0.com</tt> and
+    <tt class="computeroutput">http://bar.com</tt> on the same
     machine.  The easiest way is to assign each one a different ip
     address.  Then you can install two services as above, but with
         different values for
Index: openacs-4/packages/acs-core-docs/www/install-next-backups.html
===================================================================
RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/install-next-backups.html,v
diff -u -r1.7 -r1.7.4.1
--- openacs-4/packages/acs-core-docs/www/install-next-backups.html	17 Jul 2006 05:38:31 -0000	1.7
+++ openacs-4/packages/acs-core-docs/www/install-next-backups.html	3 Feb 2008 12:07:39 -0000	1.7.4.1
@@ -1,4 +1,5 @@
-<html><head><meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"><title>Backup Strategy</title><meta name="generator" content="DocBook XSL Stylesheets V1.70.1"><link rel="home" href="index.html" title="OpenACS Core Documentation"><link rel="up" href="backup-recovery.html" title="Chapter�8.�Backup and Recovery"><link rel="previous" href="backup-recovery.html" title="Chapter�8.�Backup and Recovery"><link rel="next" href="snapshot-backup.html" title="Manual backup and recovery"><link rel="stylesheet" href="openacs.css" type="text/css"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><a href="http://openacs.org"><img src="/doc/images/alex.jpg" border="0" alt="Alex logo"></a><table width="100%" summary="Navigation header" border="0"><tr><td width="20%" align="left"><a accesskey="p" href="backup-recovery.html">Prev</a> </td><th width="60%" align="center">Chapter�8.�Backup and Recovery</th><td width="20%" align="right"> <a accesskey="n" href="snapshot-backup.html">Next</a></td></tr></table><hr></div><div class="sect1" lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="install-next-backups"></a>Backup Strategy</h2></div></div></div><p>
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html><head><meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"><title>Backup Strategy</title><meta name="generator" content="DocBook XSL Stylesheets V1.60.1"><link rel="home" href="index.html" title="OpenACS Core Documentation"><link rel="up" href="backup-recovery.html" title="Chapter�8.�Backup and Recovery"><link rel="previous" href="backup-recovery.html" title="Chapter�8.�Backup and Recovery"><link rel="next" href="snapshot-backup.html" title="Manual backup and recovery"><link rel="stylesheet" href="openacs.css" type="text/css"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><a href="http://openacs.org"><img src="/doc/images/alex.jpg" border="0" alt="Alex logo"></a><table width="100%" summary="Navigation header" border="0"><tr><td width="20%" align="left"><a accesskey="p" href="backup-recovery.html">Prev</a> </td><th width="60%" align="center">Chapter�8.�Backup and Recovery</th><td width="20%" align="right"> <a accesskey="n" href="snapshot-backup.html">Next</a></td></tr></table><hr></div><div class="sect1" lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="install-next-backups"></a>Backup Strategy</h2></div></div><div></div></div><p>
       The purpose of backup is to enable recovery.  Backup and
       recovery are always risky; here are some steps that minimize the
       chance recovery is necessary:
@@ -27,9 +28,9 @@
       OpenACS installations comprise files and database contents.
       If you follow the reference install and put all files,
       including configuration files, in
-      <code class="filename">/var/lib/aolserver/<span class="replaceable"><span class="replaceable">$OPENACS_SERVICE_NAME</span></span>/</code>,
+      <tt class="filename">/var/lib/aolserver/<span class="replaceable"><span class="replaceable">$OPENACS_SERVICE_NAME</span></span>/</tt>,
       and back up the database nightly to a file in
-      <code class="filename">/var/lib/aolserver/<span class="replaceable"><span class="replaceable">$OPENACS_SERVICE_NAME</span></span>/database-backup</code>,
+      <tt class="filename">/var/lib/aolserver/<span class="replaceable"><span class="replaceable">$OPENACS_SERVICE_NAME</span></span>/database-backup</tt>,
       then you can apply standard file-based backup strategies to
-      <code class="filename">/var/lib/aolserver/<span class="replaceable"><span class="replaceable">$OPENACS_SERVICE_NAME</span></span></code>
+      <tt class="filename">/var/lib/aolserver/<span class="replaceable"><span class="replaceable">$OPENACS_SERVICE_NAME</span></span></tt>
     </p></div><div class="navfooter"><hr><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="backup-recovery.html">Prev</a> </td><td width="20%" align="center"><a accesskey="h" href="index.html">Home</a></td><td width="40%" align="right"> <a accesskey="n" href="snapshot-backup.html">Next</a></td></tr><tr><td width="40%" align="left">Chapter�8.�Backup and Recovery </td><td width="20%" align="center"><a accesskey="u" href="backup-recovery.html">Up</a></td><td width="40%" align="right"> Manual backup and recovery</td></tr></table><hr><address><a href="mailto:docs@openacs.org">docs@openacs.org</a></address></div><a name="comments"></a><center><a href="http://openacs.org/doc/current/install-next-backups.html#comments">View comments on this page at openacs.org</a></center></body></html>
Index: openacs-4/packages/acs-core-docs/www/install-next-nightly-vacuum.html
===================================================================
RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/install-next-nightly-vacuum.html,v
diff -u -r1.16 -r1.16.4.1
--- openacs-4/packages/acs-core-docs/www/install-next-nightly-vacuum.html	17 Jul 2006 05:38:31 -0000	1.16
+++ openacs-4/packages/acs-core-docs/www/install-next-nightly-vacuum.html	3 Feb 2008 12:07:39 -0000	1.16.4.1
@@ -1,18 +1,19 @@
-<html><head><meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"><title>Vacuum Postgres nightly</title><meta name="generator" content="DocBook XSL Stylesheets V1.70.1"><link rel="home" href="index.html" title="OpenACS Core Documentation"><link rel="up" href="database-management.html" title="Chapter�7.�Database Management"><link rel="previous" href="install-openacs-delete-tablespace.html" title="Deleting a tablespace"><link rel="next" href="backup-recovery.html" title="Chapter�8.�Backup and Recovery"><link rel="stylesheet" href="openacs.css" type="text/css"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><a href="http://openacs.org"><img src="/doc/images/alex.jpg" border="0" alt="Alex logo"></a><table width="100%" summary="Navigation header" border="0"><tr><td width="20%" align="left"><a accesskey="p" href="install-openacs-delete-tablespace.html">Prev</a> </td><th width="60%" align="center">Chapter�7.�Database Management</th><td width="20%" align="right"> <a accesskey="n" href="backup-recovery.html">Next</a></td></tr></table><hr></div><div class="sect1" lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="install-next-nightly-vacuum"></a>Vacuum Postgres nightly</h2></div></div></div><p>
-      The "vacuum" command must be run periodically to reclaim space
-      in versions of PostgreSQL before 7.4. The "vacuum analyze" form
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html><head><meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"><title>Vacuum Postgres nightly</title><meta name="generator" content="DocBook XSL Stylesheets V1.60.1"><link rel="home" href="index.html" title="OpenACS Core Documentation"><link rel="up" href="database-management.html" title="Chapter�7.�Database Management"><link rel="previous" href="install-openacs-delete-tablespace.html" title="Deleting a tablespace"><link rel="next" href="backup-recovery.html" title="Chapter�8.�Backup and Recovery"><link rel="stylesheet" href="openacs.css" type="text/css"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><a href="http://openacs.org"><img src="/doc/images/alex.jpg" border="0" alt="Alex logo"></a><table width="100%" summary="Navigation header" border="0"><tr><td width="20%" align="left"><a accesskey="p" href="install-openacs-delete-tablespace.html">Prev</a> </td><th width="60%" align="center">Chapter�7.�Database Management</th><td width="20%" align="right"> <a accesskey="n" href="backup-recovery.html">Next</a></td></tr></table><hr></div><div class="sect1" lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="install-next-nightly-vacuum"></a>Vacuum Postgres nightly</h2></div></div><div></div></div><p>
+      The &quot;vacuum&quot; command must be run periodically to reclaim space
+      in versions of PostgreSQL before 7.4. The &quot;vacuum analyze&quot; form
       additionally collects statistics on the 
       disbursion of columns in the database, which the optimizer uses when
       it calculates just how to execute queries. The availability of this
       data can make a tremendous difference in the execution speed of
       queries. This command can also be run from cron, but it probably makes
       more sense to run this command as part of your nightly backup
-      procedure - if "vacuum" is going to screw up the database, you'd
+      procedure - if &quot;vacuum&quot; is going to screw up the database, you'd
       prefer it to happen immediately after (not before!) you've made a
-      backup! The "vacuum" command is very reliable, but conservatism is
+      backup! The &quot;vacuum&quot; command is very reliable, but conservatism is
       the key to good system management. So, if you're using the export
       procedure described above, you don't need to do this extra
       step.
-    </p><p>Edit your crontab:</p><pre class="programlisting">[joeuser ~]$ <strong class="userinput"><code>crontab -e</code></strong></pre><p>We'll set vacuum up to run nightly at 1 AM. Add the following
+    </p><p>Edit your crontab:</p><pre class="programlisting">[joeuser ~]$ <b class="userinput"><tt>crontab -e</tt></b></pre><p>We'll set vacuum up to run nightly at 1 AM. Add the following
     line:</p><pre class="programlisting">
 0 1 * * * /usr/local/pgsql/bin/vacuumdb <span class="replaceable"><span class="replaceable">$OPENACS_SERVICE_NAME</span></span></pre><div class="cvstag">($Id$)</div></div><div class="navfooter"><hr><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="install-openacs-delete-tablespace.html">Prev</a> </td><td width="20%" align="center"><a accesskey="h" href="index.html">Home</a></td><td width="40%" align="right"> <a accesskey="n" href="backup-recovery.html">Next</a></td></tr><tr><td width="40%" align="left">Deleting a tablespace </td><td width="20%" align="center"><a accesskey="u" href="database-management.html">Up</a></td><td width="40%" align="right"> Chapter�8.�Backup and Recovery</td></tr></table><hr><address><a href="mailto:docs@openacs.org">docs@openacs.org</a></address></div><a name="comments"></a><center><a href="http://openacs.org/doc/current/install-next-nightly-vacuum.html#comments">View comments on this page at openacs.org</a></center></body></html>
Index: openacs-4/packages/acs-core-docs/www/install-nsopenssl.html
===================================================================
RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/install-nsopenssl.html,v
diff -u -r1.20 -r1.20.4.1
--- openacs-4/packages/acs-core-docs/www/install-nsopenssl.html	17 Jul 2006 05:38:31 -0000	1.20
+++ openacs-4/packages/acs-core-docs/www/install-nsopenssl.html	3 Feb 2008 12:07:39 -0000	1.20.4.1
@@ -1,25 +1,26 @@
-<html><head><meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"><title>Install nsopenssl</title><meta name="generator" content="DocBook XSL Stylesheets V1.70.1"><link rel="home" href="index.html" title="OpenACS Core Documentation"><link rel="up" href="install-more-software.html" title="Appendix�B.�Install additional supporting software"><link rel="previous" href="install-full-text-search-openfts.html" title="Install Full Text Search using OpenFTS (deprecated see tsearch2)"><link rel="next" href="install-tclwebtest.html" title="Install tclwebtest."><link rel="stylesheet" href="openacs.css" type="text/css"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><a href="http://openacs.org"><img src="/doc/images/alex.jpg" border="0" alt="Alex logo"></a><table width="100%" summary="Navigation header" border="0"><tr><td width="20%" align="left"><a accesskey="p" href="install-full-text-search-openfts.html">Prev</a> </td><th width="60%" align="center">Appendix�B.�Install additional supporting software</th><td width="20%" align="right"> <a accesskey="n" href="install-tclwebtest.html">Next</a></td></tr></table><hr></div><div class="sect1" lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="install-nsopenssl"></a>Install nsopenssl</h2></div></div></div><div class="authorblurb"><p>By <a href="mailto:joel@aufrecht.org" target="_top">Joel Aufrecht</a> and <a href="mailto:openacs@sussdorff.de" target="_top">Malte Sussdorff</a></p>
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html><head><meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"><title>Install nsopenssl</title><meta name="generator" content="DocBook XSL Stylesheets V1.60.1"><link rel="home" href="index.html" title="OpenACS Core Documentation"><link rel="up" href="install-more-software.html" title="Appendix�B.�Install additional supporting software"><link rel="previous" href="install-full-text-search-openfts.html" title="Install Full Text Search using OpenFTS (deprecated see tsearch2)"><link rel="next" href="install-tclwebtest.html" title="Install tclwebtest."><link rel="stylesheet" href="openacs.css" type="text/css"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><a href="http://openacs.org"><img src="/doc/images/alex.jpg" border="0" alt="Alex logo"></a><table width="100%" summary="Navigation header" border="0"><tr><td width="20%" align="left"><a accesskey="p" href="install-full-text-search-openfts.html">Prev</a> </td><th width="60%" align="center">Appendix�B.�Install additional supporting software</th><td width="20%" align="right"> <a accesskey="n" href="install-tclwebtest.html">Next</a></td></tr></table><hr></div><div class="sect1" lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="install-nsopenssl"></a>Install nsopenssl</h2></div></div><div></div></div><div class="authorblurb"><p>By <a href="mailto:joel@aufrecht.org" target="_top">Joel Aufrecht</a> and <a href="mailto:openacs@sussdorff.de" target="_top">Malte Sussdorff</a></p>
           OpenACS docs are written by the named authors, and may be edited
           by OpenACS documentation staff.
         </div><p>This AOLserver module is required if you want people to connect to your site via
           https.  These commands compile nsopenssl and install it,
           along with a tcl helper script to handle https connections.
           You will also need ssl certificates.  Because those should
           be different for each server service, you won't need <a href="install-ssl.html#ssl-certificates">those instructions</a> until
-      later. </p><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="install-nsopenssl-aolserver3"></a>Install on AOLserver3</h3></div></div></div><p> You will need the <a href="aolserver.html#install-aolserver-compile">unpacked Aolserver tarball</a> in
-      <code class="computeroutput">/usr/local/src/aolserver</code> and
+      later. </p><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="install-nsopenssl-aolserver3"></a>Install on AOLserver3</h3></div></div><div></div></div><p> You will need the <a href="aolserver.html#install-aolserver-compile">unpacked Aolserver tarball</a> in
+      <tt class="computeroutput">/usr/local/src/aolserver</tt> and
       the <a href="individual-programs.html#nsopenssl-download">nsopenssl tarball</a> in
-          <code class="computeroutput">/tmp</code>.</p><p>Red Hat 9 note: see <a href="http://openacs.org/forums/message-view?message_id=92882" target="_top">this
-          thread</a> for details on compiling nsopenssl.)</p><pre class="screen">[root bin]#<strong class="userinput"><code> cd /usr/local/src/aolserver</code></strong>
-[root aolserver]# <strong class="userinput"><code>wget --passive http://www.scottg.net/download/nsopenssl-2.1.tar.gz</code></strong>
-[root aolserver]# <strong class="userinput"><code>tar xzf nsopenssl-2.1.tar.gz </code></strong>
-[root aolserver]# <strong class="userinput"><code>cd nsopenssl-2.1</code></strong>
-[root nsopenssl-2.1]# <strong class="userinput"><code>make OPENSSL=/usr/local/ssl</code></strong>
+          <tt class="computeroutput">/tmp</tt>.</p><p>Red Hat 9 note: see <a href="http://openacs.org/forums/message-view?message_id=92882" target="_top">this
+          thread</a> for details on compiling nsopenssl.)</p><pre class="screen">[root bin]#<b class="userinput"><tt> cd /usr/local/src/aolserver</tt></b>
+[root aolserver]# <b class="userinput"><tt>wget --passive http://www.scottg.net/download/nsopenssl-2.1.tar.gz</tt></b>
+[root aolserver]# <b class="userinput"><tt>tar xzf nsopenssl-2.1.tar.gz </tt></b>
+[root aolserver]# <b class="userinput"><tt>cd nsopenssl-2.1</tt></b>
+[root nsopenssl-2.1]# <b class="userinput"><tt>make OPENSSL=/usr/local/ssl</tt></b>
 gcc -I/usr/local/ssl/include -I../aolserver/include -D_REENTRANT=1 -DNDEBUG=1 -g -fPIC -Wall -Wno-unused -mcpu=i686 -DHAVE_CMMSG=1 -DUSE_FIONREAD=1 -DHAVE_COND_EINTR=1   -c -o nsopenssl.o nsopenssl.c
 <span class="emphasis"><em>(many lines omitted)</em></span>
 gcc -shared -nostartfiles -o nsopenssl.so nsopenssl.o config.o init.o ssl.o thread.o tclcmds.o -L/usr/local/ssl/lib -lssl -lcrypto
-[root nsopenssl-2.1]# <strong class="userinput"><code>cp nsopenssl.so /usr/local/aolserver/bin</code></strong>
-[root nsopenssl-2.1]# <strong class="userinput"><code>cp https.tcl /usr/local/aolserver/modules/tcl/</code></strong>
+[root nsopenssl-2.1]# <b class="userinput"><tt>cp nsopenssl.so /usr/local/aolserver/bin</tt></b>
+[root nsopenssl-2.1]# <b class="userinput"><tt>cp https.tcl /usr/local/aolserver/modules/tcl/</tt></b>
 [root nsopenssl-2.1]#
 <span class="action"><span class="action">cd /usr/local/src/aolserver
 wget --passive http://www.scottg.net/download/nsopenssl-2.1.tar.gz
@@ -34,15 +35,15 @@
 cd nsopenssl-2.1
 make OPENSSL=/usr/lib/ssl
 cp nsopenssl.so /usr/local/aolserver/bin
-cp https.tcl /usr/local/aolserver/modules/tcl/</span></span></pre></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="install-nsopenssl-aolserver4"></a>Install on AOLserver4</h3></div></div></div><p> You will need the AOLserver4 source in <code class="computeroutput">/usr/local/src/aolserver/aolserver</code> and OpenSSL installed in <code class="computeroutput">/usr/local/ssl</code> (or at least symlinked there). The use of <code class="computeroutput">INST=/point/to/aolserver</code> is being replaced with <code class="computeroutput">AOLSERVER=/point/to/aolserver</code>. We are including both here, because while this module still requires INST, if one just uses AOLSERVER, the default value would be used and could intefere with another existing installation.</p><p>FreeBSD note: build nsopenssl with <strong class="userinput"><code>gmake install OPENSSL=/usr/local/openssl AOLSERVER=/usr/local/aolserver4r10</code></strong>
-        </p><pre class="screen">[root bin]#<strong class="userinput"><code> cd /usr/local/src/aolserver</code></strong>
-[root aolserver]# <strong class="userinput"><code>cvs -d:pserver:anonymous@cvs.sourceforge.net:/cvsroot/aolserver login</code></strong>
-[root aolserver]# <strong class="userinput"><code>cvs -d:pserver:anonymous@cvs.sourceforge.net:/cvsroot/aolserver co nsopenssl</code></strong>
-[root aolserver]# <strong class="userinput"><code>cd nsopenssl</code></strong>
-[root nsopenssl]# <strong class="userinput"><code>make OPENSSL=/usr/local/ssl</code></strong>
+cp https.tcl /usr/local/aolserver/modules/tcl/</span></span></pre></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="install-nsopenssl-aolserver4"></a>Install on AOLserver4</h3></div></div><div></div></div><p> You will need the AOLserver4 source in <tt class="computeroutput">/usr/local/src/aolserver/aolserver</tt> and OpenSSL installed in <tt class="computeroutput">/usr/local/ssl</tt> (or at least symlinked there). The use of <tt class="computeroutput">INST=/point/to/aolserver</tt> is being replaced with <tt class="computeroutput">AOLSERVER=/point/to/aolserver</tt>. We are including both here, because while this module still requires INST, if one just uses AOLSERVER, the default value would be used and could intefere with another existing installation.</p><p>FreeBSD note: build nsopenssl with <b class="userinput"><tt>gmake install OPENSSL=/usr/local/openssl AOLSERVER=/usr/local/aolserver4r10</tt></b>
+        </p><pre class="screen">[root bin]#<b class="userinput"><tt> cd /usr/local/src/aolserver</tt></b>
+[root aolserver]# <b class="userinput"><tt>cvs -d:pserver:anonymous@cvs.sourceforge.net:/cvsroot/aolserver login</tt></b>
+[root aolserver]# <b class="userinput"><tt>cvs -d:pserver:anonymous@cvs.sourceforge.net:/cvsroot/aolserver co nsopenssl</tt></b>
+[root aolserver]# <b class="userinput"><tt>cd nsopenssl</tt></b>
+[root nsopenssl]# <b class="userinput"><tt>make OPENSSL=/usr/local/ssl</tt></b>
 gcc -I/usr/local/ssl/include (many items omitted)  -c -o sslcontext.o sslcontext.c
 <span class="emphasis"><em>(many lines omitted)</em></span>
-[root nsopenssl-2.1]# <strong class="userinput"><code>make install OPENSSL=/usr/local/ssl AOLSERVER=/usr/local/aolserver4r10 INST=/usr/local/aolserver4r10</code></strong>
+[root nsopenssl-2.1]# <b class="userinput"><tt>make install OPENSSL=/usr/local/ssl AOLSERVER=/usr/local/aolserver4r10 INST=/usr/local/aolserver4r10</tt></b>
 [root nsopenssl-2.1]#
 <span class="action"><span class="action">cd /usr/local/src/aolserver
 cvs -d:pserver:anonymous@cvs.sourceforge.net:/cvsroot/aolserver login
@@ -51,9 +52,9 @@
 make OPENSSL=/usr/local/ssl 
 make install OPENSSL=/usr/local/ssl AOLSERVER=/usr/local/aolserver AOLSERVER=/usr/local/aolserver4r10</span></span></pre><p>If you have problems starting your server with nsopenssl.so due to missing libssl.so.0.9.7 (or lower), you have to create symlinks
 </p><pre class="screen">
-[root nsopenssl]# <strong class="userinput"><code>cd /usr/local/aolserver/lib</code></strong>
-[root lib]# <strong class="userinput"><code>ln -s /usr/local/ssl/lib/libssl.so.0.9.7 libssl.so.0.9.7</code></strong>
-[root lib]# <strong class="userinput"><code>ln -s /usr/local/ssl/lib/libcrypto.so.0.9.7 libcrypto.so.0.9.7</code></strong>
+[root nsopenssl]# <b class="userinput"><tt>cd /usr/local/aolserver/lib</tt></b>
+[root lib]# <b class="userinput"><tt>ln -s /usr/local/ssl/lib/libssl.so.0.9.7 libssl.so.0.9.7</tt></b>
+[root lib]# <b class="userinput"><tt>ln -s /usr/local/ssl/lib/libcrypto.so.0.9.7 libcrypto.so.0.9.7</tt></b>
 [root lib]#
 <span class="action"><span class="action">cd /usr/local/aolserver/lib
 ln -s /usr/local/ssl/lib/libssl.so.0.9.7 libssl.so.0.9.7
@@ -63,11 +64,11 @@
 </p><p>SSL support must be enabled seperately in each OpenACS
         server (<a href="install-ssl.html#ssl-certificates">Generate ssl certificates</a>. </p><p>If your ports for SSL are privileged (below 1024), you
         will have to start AOLserver with prebinds for both your HTTP
-        and your HTTPS port (usually by adding <code class="computeroutput">-b
-        <span class="replaceable"><span class="replaceable">your_ip:your_http_port</span></span>,<span class="replaceable"><span class="replaceable">your_ip:your_https_port</span></span></code>
+        and your HTTPS port (usually by adding <tt class="computeroutput">-b
+        <span class="replaceable"><span class="replaceable">your_ip:your_http_port</span></span>,<span class="replaceable"><span class="replaceable">your_ip:your_https_port</span></span></tt>
         to the nsd call. If you are using daemontools, this can be
-        changed in your <code class="computeroutput">etc/daemontools/run
-        file</code>).</p><p>To enable SSL support in your server, make sure your
-      etc/config.tcl file has a section on "OpenSSL 3 with AOLserver4". If
+        changed in your <tt class="computeroutput">etc/daemontools/run
+        file</tt>).</p><p>To enable SSL support in your server, make sure your
+      etc/config.tcl file has a section on &quot;OpenSSL 3 with AOLserver4&quot;. If
       that section is not present, try looking at the README file in
-      <code class="computeroutput">/usr/local/src/aolserver/nsopenssl</code>.</p></div></div><div class="navfooter"><hr><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="install-full-text-search-openfts.html">Prev</a> </td><td width="20%" align="center"><a accesskey="h" href="index.html">Home</a></td><td width="40%" align="right"> <a accesskey="n" href="install-tclwebtest.html">Next</a></td></tr><tr><td width="40%" align="left">Install Full Text Search using OpenFTS (deprecated see tsearch2) </td><td width="20%" align="center"><a accesskey="u" href="install-more-software.html">Up</a></td><td width="40%" align="right"> Install tclwebtest.</td></tr></table><hr><address><a href="mailto:docs@openacs.org">docs@openacs.org</a></address></div><a name="comments"></a><center><a href="http://openacs.org/doc/current/install-nsopenssl.html#comments">View comments on this page at openacs.org</a></center></body></html>
+      <tt class="computeroutput">/usr/local/src/aolserver/nsopenssl</tt>.</p></div></div><div class="navfooter"><hr><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="install-full-text-search-openfts.html">Prev</a> </td><td width="20%" align="center"><a accesskey="h" href="index.html">Home</a></td><td width="40%" align="right"> <a accesskey="n" href="install-tclwebtest.html">Next</a></td></tr><tr><td width="40%" align="left">Install Full Text Search using OpenFTS (deprecated see tsearch2) </td><td width="20%" align="center"><a accesskey="u" href="install-more-software.html">Up</a></td><td width="40%" align="right"> Install tclwebtest.</td></tr></table><hr><address><a href="mailto:docs@openacs.org">docs@openacs.org</a></address></div><a name="comments"></a><center><a href="http://openacs.org/doc/current/install-nsopenssl.html#comments">View comments on this page at openacs.org</a></center></body></html>
Index: openacs-4/packages/acs-core-docs/www/install-nspam.html
===================================================================
RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/install-nspam.html,v
diff -u -r1.11 -r1.11.4.1
--- openacs-4/packages/acs-core-docs/www/install-nspam.html	17 Jul 2006 05:38:31 -0000	1.11
+++ openacs-4/packages/acs-core-docs/www/install-nspam.html	3 Feb 2008 12:07:39 -0000	1.11.4.1
@@ -1 +1,2 @@
-<html><head><meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"><title>Install nspam</title><meta name="generator" content="DocBook XSL Stylesheets V1.70.1"><link rel="home" href="index.html" title="OpenACS Core Documentation"><link rel="up" href="install-more-software.html" title="Appendix�B.�Install additional supporting software"><link rel="previous" href="analog-install.html" title="Install Analog web file analyzer"><link rel="next" href="install-full-text-search-tsearch2.html" title="Install Full Text Search using Tsearch2"><link rel="stylesheet" href="openacs.css" type="text/css"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><a href="http://openacs.org"><img src="/doc/images/alex.jpg" border="0" alt="Alex logo"></a><table width="100%" summary="Navigation header" border="0"><tr><td width="20%" align="left"><a accesskey="p" href="analog-install.html">Prev</a> </td><th width="60%" align="center">Appendix�B.�Install additional supporting software</th><td width="20%" align="right"> <a accesskey="n" href="install-full-text-search-tsearch2.html">Next</a></td></tr></table><hr></div><div class="sect1" lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="install-nspam"></a>Install nspam</h2></div></div></div><p><a href="/doc/acs-authentication/ext-auth-install.html" target="_top">/doc/acs-authentication/ext-auth-install.html</a></p></div><div class="navfooter"><hr><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="analog-install.html">Prev</a> </td><td width="20%" align="center"><a accesskey="h" href="index.html">Home</a></td><td width="40%" align="right"> <a accesskey="n" href="install-full-text-search-tsearch2.html">Next</a></td></tr><tr><td width="40%" align="left">Install Analog web file analyzer </td><td width="20%" align="center"><a accesskey="u" href="install-more-software.html">Up</a></td><td width="40%" align="right"> Install Full Text Search using Tsearch2</td></tr></table><hr><address><a href="mailto:docs@openacs.org">docs@openacs.org</a></address></div><a name="comments"></a><center><a href="http://openacs.org/doc/current/install-nspam.html#comments">View comments on this page at openacs.org</a></center></body></html>
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html><head><meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"><title>Install nspam</title><meta name="generator" content="DocBook XSL Stylesheets V1.60.1"><link rel="home" href="index.html" title="OpenACS Core Documentation"><link rel="up" href="install-more-software.html" title="Appendix�B.�Install additional supporting software"><link rel="previous" href="analog-install.html" title="Install Analog web file analyzer"><link rel="next" href="install-full-text-search-tsearch2.html" title="Install Full Text Search using Tsearch2"><link rel="stylesheet" href="openacs.css" type="text/css"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><a href="http://openacs.org"><img src="/doc/images/alex.jpg" border="0" alt="Alex logo"></a><table width="100%" summary="Navigation header" border="0"><tr><td width="20%" align="left"><a accesskey="p" href="analog-install.html">Prev</a> </td><th width="60%" align="center">Appendix�B.�Install additional supporting software</th><td width="20%" align="right"> <a accesskey="n" href="install-full-text-search-tsearch2.html">Next</a></td></tr></table><hr></div><div class="sect1" lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="install-nspam"></a>Install nspam</h2></div></div><div></div></div><p><a href="/doc/acs-authentication/ext-auth-install.html" target="_top">/doc/acs-authentication/ext-auth-install.html</a></p></div><div class="navfooter"><hr><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="analog-install.html">Prev</a> </td><td width="20%" align="center"><a accesskey="h" href="index.html">Home</a></td><td width="40%" align="right"> <a accesskey="n" href="install-full-text-search-tsearch2.html">Next</a></td></tr><tr><td width="40%" align="left">Install Analog web file analyzer </td><td width="20%" align="center"><a accesskey="u" href="install-more-software.html">Up</a></td><td width="40%" align="right"> Install Full Text Search using Tsearch2</td></tr></table><hr><address><a href="mailto:docs@openacs.org">docs@openacs.org</a></address></div><a name="comments"></a><center><a href="http://openacs.org/doc/current/install-nspam.html#comments">View comments on this page at openacs.org</a></center></body></html>
Index: openacs-4/packages/acs-core-docs/www/install-openacs-delete-tablespace.html
===================================================================
RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/install-openacs-delete-tablespace.html,v
diff -u -r1.7 -r1.7.4.1
--- openacs-4/packages/acs-core-docs/www/install-openacs-delete-tablespace.html	17 Jul 2006 05:38:31 -0000	1.7
+++ openacs-4/packages/acs-core-docs/www/install-openacs-delete-tablespace.html	3 Feb 2008 12:07:39 -0000	1.7.4.1
@@ -1,24 +1,25 @@
-<html><head><meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"><title>Deleting a tablespace</title><meta name="generator" content="DocBook XSL Stylesheets V1.70.1"><link rel="home" href="index.html" title="OpenACS Core Documentation"><link rel="up" href="database-management.html" title="Chapter�7.�Database Management"><link rel="previous" href="remote-postgres.html" title="Running a PostgreSQL database on another server"><link rel="next" href="install-next-nightly-vacuum.html" title="Vacuum Postgres nightly"><link rel="stylesheet" href="openacs.css" type="text/css"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><a href="http://openacs.org"><img src="/doc/images/alex.jpg" border="0" alt="Alex logo"></a><table width="100%" summary="Navigation header" border="0"><tr><td width="20%" align="left"><a accesskey="p" href="remote-postgres.html">Prev</a> </td><th width="60%" align="center">Chapter�7.�Database Management</th><td width="20%" align="right"> <a accesskey="n" href="install-next-nightly-vacuum.html">Next</a></td></tr></table><hr></div><div class="sect1" lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="install-openacs-delete-tablespace"></a>Deleting a tablespace</h2></div></div></div><p>Skip down for instructions on <a href="install-openacs-delete-tablespace.html#install-openacs-delete-postgres-tablespace">Deleting a PostgreSQL tablespace</a>.
-    </p><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="install-openacs-delete-oracle-tablespace"></a>Deleting an Oracle tablespace</h3></div></div></div><p>
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html><head><meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"><title>Deleting a tablespace</title><meta name="generator" content="DocBook XSL Stylesheets V1.60.1"><link rel="home" href="index.html" title="OpenACS Core Documentation"><link rel="up" href="database-management.html" title="Chapter�7.�Database Management"><link rel="previous" href="remote-postgres.html" title="Running a PostgreSQL database on another server"><link rel="next" href="install-next-nightly-vacuum.html" title="Vacuum Postgres nightly"><link rel="stylesheet" href="openacs.css" type="text/css"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><a href="http://openacs.org"><img src="/doc/images/alex.jpg" border="0" alt="Alex logo"></a><table width="100%" summary="Navigation header" border="0"><tr><td width="20%" align="left"><a accesskey="p" href="remote-postgres.html">Prev</a> </td><th width="60%" align="center">Chapter�7.�Database Management</th><td width="20%" align="right"> <a accesskey="n" href="install-next-nightly-vacuum.html">Next</a></td></tr></table><hr></div><div class="sect1" lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="install-openacs-delete-tablespace"></a>Deleting a tablespace</h2></div></div><div></div></div><p>Skip down for instructions on <a href="install-openacs-delete-tablespace.html#install-openacs-delete-postgres-tablespace">Deleting a PostgreSQL tablespace</a>.
+    </p><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="install-openacs-delete-oracle-tablespace"></a>Deleting an Oracle tablespace</h3></div></div><div></div></div><p>
         Should it become necessary to rebuild a tablespace from scratch,
-        you can use the <code class="computeroutput">drop user</code> command
-        in SVRMGRL with the <code class="computeroutput">cascade</code>
+        you can use the <tt class="computeroutput">drop user</tt> command
+        in SVRMGRL with the <tt class="computeroutput">cascade</tt>
         option. This command will drop the user and every database object
-        the user owns.</p><pre class="programlisting">SVRMGR&gt; <strong class="userinput"><code>drop user <span class="replaceable"><span class="replaceable">$OPENACS_SERVICE_NAME</span></span> cascade;</code></strong></pre><p>
-        If this does not work because svrmgrl "cannot drop a user that
-        is currently connected", make sure to kill the AOLserver using
-        this user. If it still does not work, do:</p><pre class="programlisting">SVRMGR&gt; <strong class="userinput"><code>select username, sid, serial# from v$session where lower(username)='<span class="replaceable"><span class="replaceable">$OPENACS_SERVICE_NAME</span></span>';</code></strong></pre><p>and then</p><pre class="programlisting">SVRMGR&gt; <strong class="userinput"><code>alter system kill session '<span class="replaceable"><span class="replaceable">sid, serial#</span></span>';</code></strong></pre><p>
+        the user owns.</p><pre class="programlisting">SVRMGR&gt; <b class="userinput"><tt>drop user <span class="replaceable"><span class="replaceable">$OPENACS_SERVICE_NAME</span></span> cascade;</tt></b></pre><p>
+        If this does not work because svrmgrl &quot;cannot drop a user that
+        is currently connected&quot;, make sure to kill the AOLserver using
+        this user. If it still does not work, do:</p><pre class="programlisting">SVRMGR&gt; <b class="userinput"><tt>select username, sid, serial# from v$session where lower(username)='<span class="replaceable"><span class="replaceable">$OPENACS_SERVICE_NAME</span></span>';</tt></b></pre><p>and then</p><pre class="programlisting">SVRMGR&gt; <b class="userinput"><tt>alter system kill session '<span class="replaceable"><span class="replaceable">sid, serial#</span></span>';</tt></b></pre><p>
         where <span class="emphasis"><em>sid</em></span> and <span class="emphasis"><em>serial#</em></span> are
-        replaced with the corresponding values for the open session.</p><p><span class="strong"><strong>Use with caution!</strong></span></p><p>
+        replaced with the corresponding values for the open session.</p><p><span class="strong">Use with caution!</span></p><p>
         If you feel the need to delete <span class="emphasis"><em>everything</em></span>
-        related to the service, you can also issue the following:</p><pre class="programlisting">SVRMGR&gt; <strong class="userinput"><code>drop tablespace <span class="replaceable"><span class="replaceable">$OPENACS_SERVICE_NAME</span></span> including contents cascade constraints;</code></strong></pre></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="install-openacs-delete-postgres-tablespace"></a>Deleting a PostgreSQL tablespace</h3></div></div></div><p>
+        related to the service, you can also issue the following:</p><pre class="programlisting">SVRMGR&gt; <b class="userinput"><tt>drop tablespace <span class="replaceable"><span class="replaceable">$OPENACS_SERVICE_NAME</span></span> including contents cascade constraints;</tt></b></pre></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="install-openacs-delete-postgres-tablespace"></a>Deleting a PostgreSQL tablespace</h3></div></div><div></div></div><p>
         Dropping a PostgreSQL tablespace is easy. You have to stop any
         AOLserver instances that are using the database that you wish to
         drop. If you're using daemontools, this is simple, just use the
         'down' flag (-d). If you're using inittab, you have to comment out
-        your server in <code class="computeroutput">/etc/inittab</code>,
-        reread the inittab with <code class="computeroutput">/sbin/init
-        q</code>, and then <code class="computeroutput">restart-aolserver
-        <span class="replaceable"><span class="replaceable">$OPENACS_SERVICE_NAME</span></span></code>.</p><p>Then, to drop the db, just do:</p><pre class="programlisting">
-[$OPENACS_SERVICE_NAME ~]$ <strong class="userinput"><code>dropdb <span class="replaceable"><span class="replaceable">$OPENACS_SERVICE_NAME</span></span></code></strong>
+        your server in <tt class="computeroutput">/etc/inittab</tt>,
+        reread the inittab with <tt class="computeroutput">/sbin/init
+        q</tt>, and then <tt class="computeroutput">restart-aolserver
+        <span class="replaceable"><span class="replaceable">$OPENACS_SERVICE_NAME</span></span></tt>.</p><p>Then, to drop the db, just do:</p><pre class="programlisting">
+[$OPENACS_SERVICE_NAME ~]$ <b class="userinput"><tt>dropdb <span class="replaceable"><span class="replaceable">$OPENACS_SERVICE_NAME</span></span></tt></b>
 DROP DATABASE</pre></div></div><div class="navfooter"><hr><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="remote-postgres.html">Prev</a> </td><td width="20%" align="center"><a accesskey="h" href="index.html">Home</a></td><td width="40%" align="right"> <a accesskey="n" href="install-next-nightly-vacuum.html">Next</a></td></tr><tr><td width="40%" align="left">Running a PostgreSQL database on another server </td><td width="20%" align="center"><a accesskey="u" href="database-management.html">Up</a></td><td width="40%" align="right"> Vacuum Postgres nightly</td></tr></table><hr><address><a href="mailto:docs@openacs.org">docs@openacs.org</a></address></div><a name="comments"></a><center><a href="http://openacs.org/doc/current/install-openacs-delete-tablespace.html#comments">View comments on this page at openacs.org</a></center></body></html>
Index: openacs-4/packages/acs-core-docs/www/install-openacs-inittab.html
===================================================================
RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/install-openacs-inittab.html,v
diff -u -r1.7 -r1.7.4.1
--- openacs-4/packages/acs-core-docs/www/install-openacs-inittab.html	17 Jul 2006 05:38:31 -0000	1.7
+++ openacs-4/packages/acs-core-docs/www/install-openacs-inittab.html	3 Feb 2008 12:07:39 -0000	1.7.4.1
@@ -1,4 +1,5 @@
-<html><head><meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"><title>AOLserver keepalive with inittab</title><meta name="generator" content="DocBook XSL Stylesheets V1.70.1"><link rel="home" href="index.html" title="OpenACS Core Documentation"><link rel="up" href="maintenance-web.html" title="Chapter�6.�Production Environments"><link rel="previous" href="install-openacs-keepalive.html" title="Starting and Stopping an OpenACS instance."><link rel="next" href="install-next-add-server.html" title="Running multiple services on one machine"><link rel="stylesheet" href="openacs.css" type="text/css"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><a href="http://openacs.org"><img src="/doc/images/alex.jpg" border="0" alt="Alex logo"></a><table width="100%" summary="Navigation header" border="0"><tr><td width="20%" align="left"><a accesskey="p" href="install-openacs-keepalive.html">Prev</a> </td><th width="60%" align="center">Chapter�6.�Production Environments</th><td width="20%" align="right"> <a accesskey="n" href="install-next-add-server.html">Next</a></td></tr></table><hr></div><div class="sect1" lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="install-openacs-inittab"></a>AOLserver keepalive with inittab</h2></div></div></div><p>This is an alternative method for keeping the AOLserver
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html><head><meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"><title>AOLserver keepalive with inittab</title><meta name="generator" content="DocBook XSL Stylesheets V1.60.1"><link rel="home" href="index.html" title="OpenACS Core Documentation"><link rel="up" href="maintenance-web.html" title="Chapter�6.�Production Environments"><link rel="previous" href="install-openacs-keepalive.html" title="Starting and Stopping an OpenACS instance."><link rel="next" href="install-next-add-server.html" title="Running multiple services on one machine"><link rel="stylesheet" href="openacs.css" type="text/css"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><a href="http://openacs.org"><img src="/doc/images/alex.jpg" border="0" alt="Alex logo"></a><table width="100%" summary="Navigation header" border="0"><tr><td width="20%" align="left"><a accesskey="p" href="install-openacs-keepalive.html">Prev</a> </td><th width="60%" align="center">Chapter�6.�Production Environments</th><td width="20%" align="right"> <a accesskey="n" href="install-next-add-server.html">Next</a></td></tr></table><hr></div><div class="sect1" lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="install-openacs-inittab"></a>AOLserver keepalive with inittab</h2></div></div><div></div></div><p>This is an alternative method for keeping the AOLserver
 		process running.  The recommended method is to <a href="install-openacs-keepalive.html" title="Starting and Stopping an OpenACS instance.">run AOLserver
 		supervised</a>.</p><p>
 		This step should be completed as root. This can break every service
@@ -7,32 +8,32 @@
 			There are 2 general steps to getting this working. 
 		  </p><div class="orderedlist"><ol type="1"><li><p> 
 				Install a script called
-				<code class="computeroutput">restart-aolserver</code>. This
+				<tt class="computeroutput">restart-aolserver</tt>. This
 				script doesn't actually restart AOLserver - it just kills
 				it.  
 			  </p></li><li><p>
 				Ask the OS to restart our service whenever it's not
 				running. We do this by adding a line to
-				<code class="computeroutput">/etc/inittab</code>.
+				<tt class="computeroutput">/etc/inittab</tt>.
 			  </p></li></ol></div><p>
-			Calling <code class="computeroutput">restart-aolserver</code>
+			Calling <tt class="computeroutput">restart-aolserver</tt>
 			kills our service. The OS notices that our service is not
 			running, so it automatically restarts it. Thus, calling
-			<code class="computeroutput">restart-aolserver</code> effectively
+			<tt class="computeroutput">restart-aolserver</tt> effectively
 			restarts our service.  
 		  </p></li><li><p> 
 			Copy this <a href="files/restart-aolserver.txt" target="_top">file</a> into
-			<code class="computeroutput">/var/tmp/restart-aolserver.txt</code>.
+			<tt class="computeroutput">/var/tmp/restart-aolserver.txt</tt>.
 		  </p></li><li><p> 
 			This script needs to be SUID-root, which means
 			that the script will run as root. This is necessary to ensure
 			that the AOLserver processes are killed regardless of who owns
 			them. However the script should be executable by the
-			<code class="computeroutput">web</code> group to ensure that the
+			<tt class="computeroutput">web</tt> group to ensure that the
 			users updating the web page can use the script, but that
 			general system users cannot run the script. You also need to
 			have Perl installed and also a symbolic link to it in
-			<code class="computeroutput">/usr/local/bin</code>. 
+			<tt class="computeroutput">/usr/local/bin</tt>. 
 		  </p><pre class="programlisting">
 [joeuser ~]$ su - 
 Password: ***********
@@ -41,10 +42,10 @@
 [root ~]# chmod 4750 /usr/local/bin/restart-aolserver
 [root ~]# ln -s /usr/bin/perl /usr/local/bin/perl
 [root ~]# exit</pre></li><li><p> 
-			Test the <code class="computeroutput">restart-aolserver</code>
+			Test the <tt class="computeroutput">restart-aolserver</tt>
 			script. We'll first kill all running servers to clean the
 			slate. Then, we'll start one server and use
-			<code class="computeroutput">restart-aolserver</code> to kill
+			<tt class="computeroutput">restart-aolserver</tt> to kill
 			it. If it works, then there should be no more servers
 			running. You should see the following lines. </p><pre class="programlisting">
 [joeuser ~]$ killall nsd
@@ -55,34 +56,34 @@
 [joeuser ~]$ killall nsd
 nsd: no process killed</pre><p>
             The number 23727 indicates the process id(s) (PIDs) of the
-            processes being killed. It is important that <span class="strong"><strong>no processes are killed</strong></span> by the second
-            call to <code class="computeroutput">killall</code>. If there are
+            processes being killed. It is important that <span class="strong">no processes are killed</span> by the second
+            call to <tt class="computeroutput">killall</tt>. If there are
             processes being killed, it means that the script is not
             working.</p></li><li><p> 
-          Assuming that the <code class="computeroutput">restart-aolserver</code>
+          Assuming that the <tt class="computeroutput">restart-aolserver</tt>
           script worked, login as root and open
-          <code class="computeroutput">/etc/inittab</code> for
+          <tt class="computeroutput">/etc/inittab</tt> for
           editing. </p><pre class="programlisting">
 [joeuser ~]$ su -
 Password: ************
 [root ~]# emacs -nw /etc/inittab</pre></li><li><p> 
             Copy this line into the bottom of the file as a template,
             making sure that the first field
-            <code class="computeroutput">nss1</code> is unique.
+            <tt class="computeroutput">nss1</tt> is unique.
           </p><pre class="programlisting">
 nss1:345:respawn:/usr/local/aolserver/bin/nsd-postgres -i -u nobody -g web -t /home/<span class="emphasis"><em>joeuser</em></span>/var/lib/aolserver/<span class="emphasis"><em>birdnotes</em></span>/nsd.tcl</pre></li><li><p>
-            <span class="strong"><strong>Important:</strong></span> Make sure there is a
+            <span class="strong">Important:</span> Make sure there is a
             newline at the end of the file. If there is not a newline at
             the end of the file, the system may suffer catastrophic
             failures.  
           </p></li><li><p>
             Still as root, enter the following command to re-initialize
-            <code class="computeroutput">/etc/inittab</code>. </p><pre class="programlisting">
+            <tt class="computeroutput">/etc/inittab</tt>. </p><pre class="programlisting">
 [root ~]# killall nsd    
 nsd: no process killed
 [root ~]# /sbin/init q</pre></li><li><p> 
             See if it worked by running the
-            <code class="computeroutput">restart-aolserver</code> script
+            <tt class="computeroutput">restart-aolserver</tt> script
             again. </p><pre class="programlisting">
 [root ~]# restart-aolserver <span class="emphasis"><em>birdnotes</em></span>
 Killing 23750</pre></li></ul></div><p>
Index: openacs-4/packages/acs-core-docs/www/install-openacs-keepalive.html
===================================================================
RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/install-openacs-keepalive.html,v
diff -u -r1.17 -r1.17.4.1
--- openacs-4/packages/acs-core-docs/www/install-openacs-keepalive.html	17 Jul 2006 05:38:31 -0000	1.17
+++ openacs-4/packages/acs-core-docs/www/install-openacs-keepalive.html	3 Feb 2008 12:07:39 -0000	1.17.4.1
@@ -1,68 +1,69 @@
-<html><head><meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"><title>Starting and Stopping an OpenACS instance.</title><meta name="generator" content="DocBook XSL Stylesheets V1.70.1"><link rel="home" href="index.html" title="OpenACS Core Documentation"><link rel="up" href="maintenance-web.html" title="Chapter�6.�Production Environments"><link rel="previous" href="maintenance-web.html" title="Chapter�6.�Production Environments"><link rel="next" href="install-openacs-inittab.html" title="AOLserver keepalive with inittab"><link rel="stylesheet" href="openacs.css" type="text/css"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><a href="http://openacs.org"><img src="/doc/images/alex.jpg" border="0" alt="Alex logo"></a><table width="100%" summary="Navigation header" border="0"><tr><td width="20%" align="left"><a accesskey="p" href="maintenance-web.html">Prev</a> </td><th width="60%" align="center">Chapter�6.�Production Environments</th><td width="20%" align="right"> <a accesskey="n" href="install-openacs-inittab.html">Next</a></td></tr></table><hr></div><div class="sect1" lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="install-openacs-keepalive"></a>Starting and Stopping an OpenACS instance.</h2></div></div></div><p>The simplest way to start and stop and OpenACS site is to run the startup shell script provided, <code class="computeroutput">/var/lib/aolserver/<span class="replaceable"><span class="replaceable">$OPENACS_SERVICE_NAME</span></span>/etc/daemontools/run</code>.  This runs as a regular task, and logs to the logfile.  To stop the site, kill the script.</p><p>A more stable way to run OpenACS is with a "keepalive" mechanism of some sort, so that whenever the server halts or is stopped for a reset, it restarts automatically.  This is recommended for development and production servers.</p><p>The Reference Platform uses Daemontools to control AOLserver.  A simpler method, using <code class="computeroutput">init</code>, is <a href="install-openacs-inittab.html" title="AOLserver keepalive with inittab">here</a>.</p><div class="orderedlist"><ol type="1"><li><p>Daemontools must already be installed.  If not, <a href="install-daemontools.html" title="Install Daemontools (OPTIONAL)">install it</a>.</p></li><li><p>Each service controlled by daemontools must have a
-            directory in <code class="computeroutput">/service</code>.  That
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html><head><meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"><title>Starting and Stopping an OpenACS instance.</title><meta name="generator" content="DocBook XSL Stylesheets V1.60.1"><link rel="home" href="index.html" title="OpenACS Core Documentation"><link rel="up" href="maintenance-web.html" title="Chapter�6.�Production Environments"><link rel="previous" href="maintenance-web.html" title="Chapter�6.�Production Environments"><link rel="next" href="install-openacs-inittab.html" title="AOLserver keepalive with inittab"><link rel="stylesheet" href="openacs.css" type="text/css"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><a href="http://openacs.org"><img src="/doc/images/alex.jpg" border="0" alt="Alex logo"></a><table width="100%" summary="Navigation header" border="0"><tr><td width="20%" align="left"><a accesskey="p" href="maintenance-web.html">Prev</a> </td><th width="60%" align="center">Chapter�6.�Production Environments</th><td width="20%" align="right"> <a accesskey="n" href="install-openacs-inittab.html">Next</a></td></tr></table><hr></div><div class="sect1" lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="install-openacs-keepalive"></a>Starting and Stopping an OpenACS instance.</h2></div></div><div></div></div><p>The simplest way to start and stop and OpenACS site is to run the startup shell script provided, <tt class="computeroutput">/var/lib/aolserver/<span class="replaceable"><span class="replaceable">$OPENACS_SERVICE_NAME</span></span>/etc/daemontools/run</tt>.  This runs as a regular task, and logs to the logfile.  To stop the site, kill the script.</p><p>A more stable way to run OpenACS is with a &quot;keepalive&quot; mechanism of some sort, so that whenever the server halts or is stopped for a reset, it restarts automatically.  This is recommended for development and production servers.</p><p>The Reference Platform uses Daemontools to control AOLserver.  A simpler method, using <tt class="computeroutput">init</tt>, is <a href="install-openacs-inittab.html" title="AOLserver keepalive with inittab">here</a>.</p><div class="orderedlist"><ol type="1"><li><p>Daemontools must already be installed.  If not, <a href="install-daemontools.html" title="Install Daemontools (OPTIONAL)">install it</a>.</p></li><li><p>Each service controlled by daemontools must have a
+            directory in <tt class="computeroutput">/service</tt>.  That
             directory must have a file called
-            <code class="computeroutput">run</code>.  It works like this:</p><div class="itemizedlist"><ul type="disc"><li><p>The <code class="computeroutput">init</code> program starts every
-              time the computer is booted. </p></li><li><p>A line in <code class="computeroutput">init</code>'s configuration
-              file, <code class="computeroutput">/etc/inittab</code>, tells init to
+            <tt class="computeroutput">run</tt>.  It works like this:</p><div class="itemizedlist"><ul type="disc"><li><p>The <tt class="computeroutput">init</tt> program starts every
+              time the computer is booted. </p></li><li><p>A line in <tt class="computeroutput">init</tt>'s configuration
+              file, <tt class="computeroutput">/etc/inittab</tt>, tells init to
               run, and to restart if necessary,
-              <code class="computeroutput">svscanboot</code>.</p></li><li><p><code class="computeroutput">svscanboot</code> checks
-              the directory <code class="computeroutput">/service</code>
+              <tt class="computeroutput">svscanboot</tt>.</p></li><li><p><tt class="computeroutput">svscanboot</tt> checks
+              the directory <tt class="computeroutput">/service</tt>
               every few seconds.</p></li><li><p>If it sees a subdirectory there, it
               looks for a file in the subdirectory called
-              <code class="computeroutput">run</code>.  If it finds a run file, it creates a <code class="computeroutput">supervise</code> process</p></li><li><p><code class="computeroutput">supervise </code> executes the run script.  Whenever the run script stops, <code class="computeroutput">supervise</code> executes it again.  It also creates additional control files in the same directory. </p></li></ul></div><p>Hence, the AOLserver
+              <tt class="computeroutput">run</tt>.  If it finds a run file, it creates a <tt class="computeroutput">supervise</tt> process</p></li><li><p><tt class="computeroutput">supervise </tt> executes the run script.  Whenever the run script stops, <tt class="computeroutput">supervise</tt> executes it again.  It also creates additional control files in the same directory. </p></li></ul></div><p>Hence, the AOLserver
 	  instance for your development server is started by the file
-	  <code class="computeroutput">/service/$OPENACS_SERVICE_NAME/run</code>.
+	  <tt class="computeroutput">/service/$OPENACS_SERVICE_NAME/run</tt>.
 	  But we use a symlink to make it easier to add and remove
-	  stuff from the <code class="computeroutput">/service</code>, so
+	  stuff from the <tt class="computeroutput">/service</tt>, so
 	  the actual location is
-          <code class="computeroutput">/var/lib/aolserver/<span class="replaceable"><span class="replaceable">$OPENACS_SERVICE_NAME</span></span>etc/daemontools/run</code>.</p><p>Daemontools creates additional files and directories to track status and
+          <tt class="computeroutput">/var/lib/aolserver/<span class="replaceable"><span class="replaceable">$OPENACS_SERVICE_NAME</span></span>etc/daemontools/run</tt>.</p><p>Daemontools creates additional files and directories to track status and
         log.  A daemontools directory is included in the OpenACS tarball at
-        <code class="computeroutput">/var/lib/aolserver/<span class="replaceable"><span class="replaceable">$OPENACS_SERVICE_NAME</span></span>/etc/daemontools</code>.  To use it, first ill any existing AOLserver instances.  As root, link the <code class="computeroutput">daemontools</code> directory into the <code class="computeroutput">/service</code> directory.  Daemontools' <code class="computeroutput">svscan</code> process checks this directory every five seconds, and will quickly execute <code class="computeroutput">run</code>.</p><pre class="screen">[$OPENACS_SERVICE_NAME etc]$ <strong class="userinput"><code>killall nsd</code></strong>
+        <tt class="computeroutput">/var/lib/aolserver/<span class="replaceable"><span class="replaceable">$OPENACS_SERVICE_NAME</span></span>/etc/daemontools</tt>.  To use it, first ill any existing AOLserver instances.  As root, link the <tt class="computeroutput">daemontools</tt> directory into the <tt class="computeroutput">/service</tt> directory.  Daemontools' <tt class="computeroutput">svscan</tt> process checks this directory every five seconds, and will quickly execute <tt class="computeroutput">run</tt>.</p><pre class="screen">[$OPENACS_SERVICE_NAME etc]$ <b class="userinput"><tt>killall nsd</tt></b>
 nsd: no process killed
-[$OPENACS_SERVICE_NAME etc]$ <strong class="userinput"><code>emacs /var/lib/aolserver/<span class="replaceable"><span class="replaceable">$OPENACS_SERVICE_NAME</span></span>/etc/daemontools/run</code></strong>
-[$OPENACS_SERVICE_NAME etc]$ <strong class="userinput"><code>exit</code></strong>
+[$OPENACS_SERVICE_NAME etc]$ <b class="userinput"><tt>emacs /var/lib/aolserver/<span class="replaceable"><span class="replaceable">$OPENACS_SERVICE_NAME</span></span>/etc/daemontools/run</tt></b>
+[$OPENACS_SERVICE_NAME etc]$ <b class="userinput"><tt>exit</tt></b>
 
-[root root]# <strong class="userinput"><code>ln -s /var/lib/aolserver/<span class="replaceable"><span class="replaceable">$OPENACS_SERVICE_NAME</span></span>/etc/daemontools/ /service/<span class="replaceable"><span class="replaceable">$OPENACS_SERVICE_NAME</span></span></code></strong></pre><p>Verify that AOLserver is running.</p><pre class="screen">[root root]#<strong class="userinput"><code> ps -auxw | grep nsd</code></strong>
+[root root]# <b class="userinput"><tt>ln -s /var/lib/aolserver/<span class="replaceable"><span class="replaceable">$OPENACS_SERVICE_NAME</span></span>/etc/daemontools/ /service/<span class="replaceable"><span class="replaceable">$OPENACS_SERVICE_NAME</span></span></tt></b></pre><p>Verify that AOLserver is running.</p><pre class="screen">[root root]#<b class="userinput"><tt> ps -auxw | grep nsd</tt></b>
 <span class="replaceable"><span class="replaceable">$OPENACS_SERVICE_NAME</span></span>   5562 14.4  6.2 22436 15952 ?       S    11:55   0:04 /usr/local/aolserver/bin/nsd -it /var/lib/aolserver/<span class="replaceable"><span class="replaceable">$OPENACS_SERVICE_NAME</span></span>/etc/config.tcl -u serve
 root      5582  0.0  0.2  3276  628 pts/0    S    11:55   0:00 grep nsd
 [root root]#</pre></li><li><p>The user <span class="replaceable"><span class="replaceable">$OPENACS_SERVICE_NAME</span></span> can now control the service <span class="replaceable"><span class="replaceable">$OPENACS_SERVICE_NAME</span></span> with these commands:</p><div class="itemizedlist"><ul type="disc"><li><p>
 
-            <code class="computeroutput">svc -d /service/<span class="replaceable"><span class="replaceable">$OPENACS_SERVICE_NAME</span></span></code> -
+            <tt class="computeroutput">svc -d /service/<span class="replaceable"><span class="replaceable">$OPENACS_SERVICE_NAME</span></span></tt> -
             Bring the server down
 
           </p></li><li><p>
 
-            <code class="computeroutput">svc -u /service/<span class="replaceable"><span class="replaceable">$OPENACS_SERVICE_NAME</span></span></code> -
+            <tt class="computeroutput">svc -u /service/<span class="replaceable"><span class="replaceable">$OPENACS_SERVICE_NAME</span></span></tt> -
             Start the server up and leave it in keepalive mode.
 
           </p></li><li><p>
 
-            <code class="computeroutput">svc -o /service/<span class="replaceable"><span class="replaceable">$OPENACS_SERVICE_NAME</span></span></code> -
+            <tt class="computeroutput">svc -o /service/<span class="replaceable"><span class="replaceable">$OPENACS_SERVICE_NAME</span></span></tt> -
             Start the server up once. Do not restart it if it stops.
 
           </p></li><li><p>
 
-            <code class="computeroutput">svc -t /service/<span class="replaceable"><span class="replaceable">$OPENACS_SERVICE_NAME</span></span></code> -
+            <tt class="computeroutput">svc -t /service/<span class="replaceable"><span class="replaceable">$OPENACS_SERVICE_NAME</span></span></tt> -
             Stop and immediately restart the server.
 
           </p></li><li><p>
         
-            <code class="computeroutput">svc -k /service/<span class="replaceable"><span class="replaceable">$OPENACS_SERVICE_NAME</span></span></code> -
+            <tt class="computeroutput">svc -k /service/<span class="replaceable"><span class="replaceable">$OPENACS_SERVICE_NAME</span></span></tt> -
             Sends the server a KILL signal. This is like KILL -9. AOLserver
             exits immediately. If svc -t fails to fully kill AOLserver, use
             this option.  This does not take the server out of keepalive mode, so it should still bounce back up immediately.
 
           </p></li></ul></div></li><li><p>Install a script to automate the stopping and starting
-          of AOLserver services via daemontools.  You can then restart a service via <code class="computeroutput">restart-aolserver <span class="replaceable"><span class="replaceable">$OPENACS_SERVICE_NAME</span></span></code></p><pre class="screen">[root root]# <strong class="userinput"><code>cp /var/lib/aolserver/<span class="replaceable"><span class="replaceable">$OPENACS_SERVICE_NAME</span></span>/packages/acs-core-docs/www/files/restart-aolserver-daemontools.txt /usr/local/bin/restart-aolserver</code></strong>
-[root root]# <strong class="userinput"><code>chmod 755 /usr/local/bin/restart-aolserver</code></strong>
+          of AOLserver services via daemontools.  You can then restart a service via <tt class="computeroutput">restart-aolserver <span class="replaceable"><span class="replaceable">$OPENACS_SERVICE_NAME</span></span></tt></p><pre class="screen">[root root]# <b class="userinput"><tt>cp /var/lib/aolserver/<span class="replaceable"><span class="replaceable">$OPENACS_SERVICE_NAME</span></span>/packages/acs-core-docs/www/files/restart-aolserver-daemontools.txt /usr/local/bin/restart-aolserver</tt></b>
+[root root]# <b class="userinput"><tt>chmod 755 /usr/local/bin/restart-aolserver</tt></b>
 [root root]#</pre></li><li><p>
         At this point, these commands will work only for the
-        <code class="computeroutput">root</code> user.  Grant permission for the <code class="computeroutput">web</code> group to use <code class="computeroutput">svc</code> commands on the <span class="emphasis"><em><span class="replaceable"><span class="replaceable">$OPENACS_SERVICE_NAME</span></span></em></span> server.</p><pre class="screen">[root root]# <strong class="userinput"><code>/usr/local/bin/svgroup web /service/<span class="replaceable"><span class="replaceable">$OPENACS_SERVICE_NAME</span></span></code></strong>
-[root root]#</pre></li><li><p>Verify that the controls work.  You may want to <code class="computeroutput">tail -f /var/lib/aolserver/<span class="replaceable"><span class="replaceable">$OPENACS_SERVICE_NAME</span></span>/log/<span class="replaceable"><span class="replaceable">$OPENACS_SERVICE_NAME</span></span>-error.log</code> in another window, so you can see what happens when you type these commands.
+        <tt class="computeroutput">root</tt> user.  Grant permission for the <tt class="computeroutput">web</tt> group to use <tt class="computeroutput">svc</tt> commands on the <span class="emphasis"><em><span class="replaceable"><span class="replaceable">$OPENACS_SERVICE_NAME</span></span></em></span> server.</p><pre class="screen">[root root]# <b class="userinput"><tt>/usr/local/bin/svgroup web /service/<span class="replaceable"><span class="replaceable">$OPENACS_SERVICE_NAME</span></span></tt></b>
+[root root]#</pre></li><li><p>Verify that the controls work.  You may want to <tt class="computeroutput">tail -f /var/lib/aolserver/<span class="replaceable"><span class="replaceable">$OPENACS_SERVICE_NAME</span></span>/log/<span class="replaceable"><span class="replaceable">$OPENACS_SERVICE_NAME</span></span>-error.log</tt> in another window, so you can see what happens when you type these commands.
       </p><p>
 
         Most of this information comes from Tom Jackson's <a href="http://zmbh.com/daemontools-aolserver/daemontools-aolserver.html" target="_top">AOLserver+Daemontools
           Mini-HOWTO</a>.
-</p></li></ol></div><div class="table"><a name="id973398"></a><p class="title"><b>Table�6.1.�How it Works</b></p><div class="table-contents"><table summary="How it Works" cellspacing="0" border="1"><colgroup><col><col><col><col><col><col></colgroup><thead><tr><th align="center">Program</th><th align="center">Invoked by this program ...</th><th align="center">... using this file</th><th align="center">Where to find errors</th><th align="center">Log goes to</th><th align="center">Use these commands to control it</th></tr></thead><tbody><tr><td align="center">svscanboot
-      </td><td align="center">init</td><td align="center">/etc/inittab</td><td align="center">ps -auxw | grep readproctitle</td><td align="center">n/a</td><td align="center">�</td></tr><tr><td align="center">aolserver</td><td align="center"><code class="computeroutput"></code>supervise
-(a child of svscanboot)</td><td align="center">/service/<span class="replaceable"><span class="replaceable">$OPENACS_SERVICE_NAME</span></span>/run</td><td align="center">/var/lib/aolserver/<span class="replaceable"><span class="replaceable">$OPENACS_SERVICE_NAME</span></span>/log/error.log</td><td align="center">/var/lib/aolserver/<span class="replaceable"><span class="replaceable">$OPENACS_SERVICE_NAME</span></span>/log/$OPENACS_SERVICE_NAME.log</td><td align="center">svc -k /service/<span class="replaceable"><span class="replaceable">$OPENACS_SERVICE_NAME</span></span></td></tr><tr><td align="center">postgresql</td><td align="center">Redhat init scripts during boot</td><td align="center">/etc/init.d/postgresql</td><td align="center">/usr/local/pgsql/data/server.log</td><td align="center">�</td><td align="center">service postgresql start (Red Hat), /etc/init.d/postgresql start (Debian)</td></tr></tbody></table></div></div><br class="table-break"></div><div class="navfooter"><hr><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="maintenance-web.html">Prev</a> </td><td width="20%" align="center"><a accesskey="h" href="index.html">Home</a></td><td width="40%" align="right"> <a accesskey="n" href="install-openacs-inittab.html">Next</a></td></tr><tr><td width="40%" align="left">Chapter�6.�Production Environments </td><td width="20%" align="center"><a accesskey="u" href="maintenance-web.html">Up</a></td><td width="40%" align="right"> AOLserver keepalive with inittab</td></tr></table><hr><address><a href="mailto:docs@openacs.org">docs@openacs.org</a></address></div><a name="comments"></a><center><a href="http://openacs.org/doc/current/install-openacs-keepalive.html#comments">View comments on this page at openacs.org</a></center></body></html>
+</p></li></ol></div><div class="table"><a name="id2981713"></a><p class="title"><b>Table�6.1.�How it Works</b></p><table summary="How it Works" cellspacing="0" border="1"><colgroup><col><col><col><col><col><col></colgroup><thead><tr><th align="center">Program</th><th align="center">Invoked by this program ...</th><th align="center">... using this file</th><th align="center">Where to find errors</th><th align="center">Log goes to</th><th align="center">Use these commands to control it</th></tr></thead><tbody><tr><td align="center">svscanboot
+      </td><td align="center">init</td><td align="center">/etc/inittab</td><td align="center">ps -auxw | grep readproctitle</td><td align="center">n/a</td><td align="center">�</td></tr><tr><td align="center">aolserver</td><td align="center"><tt class="computeroutput"></tt>supervise
+(a child of svscanboot)</td><td align="center">/service/<span class="replaceable"><span class="replaceable">$OPENACS_SERVICE_NAME</span></span>/run</td><td align="center">/var/lib/aolserver/<span class="replaceable"><span class="replaceable">$OPENACS_SERVICE_NAME</span></span>/log/error.log</td><td align="center">/var/lib/aolserver/<span class="replaceable"><span class="replaceable">$OPENACS_SERVICE_NAME</span></span>/log/$OPENACS_SERVICE_NAME.log</td><td align="center">svc -k /service/<span class="replaceable"><span class="replaceable">$OPENACS_SERVICE_NAME</span></span></td></tr><tr><td align="center">postgresql</td><td align="center">Redhat init scripts during boot</td><td align="center">/etc/init.d/postgresql</td><td align="center">/usr/local/pgsql/data/server.log</td><td align="center">�</td><td align="center">service postgresql start (Red Hat), /etc/init.d/postgresql start (Debian)</td></tr></tbody></table></div></div><div class="navfooter"><hr><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="maintenance-web.html">Prev</a> </td><td width="20%" align="center"><a accesskey="h" href="index.html">Home</a></td><td width="40%" align="right"> <a accesskey="n" href="install-openacs-inittab.html">Next</a></td></tr><tr><td width="40%" align="left">Chapter�6.�Production Environments </td><td width="20%" align="center"><a accesskey="u" href="maintenance-web.html">Up</a></td><td width="40%" align="right"> AOLserver keepalive with inittab</td></tr></table><hr><address><a href="mailto:docs@openacs.org">docs@openacs.org</a></address></div><a name="comments"></a><center><a href="http://openacs.org/doc/current/install-openacs-keepalive.html#comments">View comments on this page at openacs.org</a></center></body></html>
Index: openacs-4/packages/acs-core-docs/www/install-origins.html
===================================================================
RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/install-origins.html,v
diff -u -r1.11 -r1.11.4.1
--- openacs-4/packages/acs-core-docs/www/install-origins.html	17 Jul 2006 05:38:31 -0000	1.11
+++ openacs-4/packages/acs-core-docs/www/install-origins.html	3 Feb 2008 12:07:39 -0000	1.11.4.1
@@ -1,4 +1,5 @@
-<html><head><meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"><title>Where did this document come from?</title><meta name="generator" content="DocBook XSL Stylesheets V1.70.1"><link rel="home" href="index.html" title="OpenACS Core Documentation"><link rel="up" href="credits.html" title="Appendix�C.�Credits"><link rel="previous" href="credits.html" title="Appendix�C.�Credits"><link rel="next" href="os-install.html" title="Linux Install Guides"><link rel="stylesheet" href="openacs.css" type="text/css"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><a href="http://openacs.org"><img src="/doc/images/alex.jpg" border="0" alt="Alex logo"></a><table width="100%" summary="Navigation header" border="0"><tr><td width="20%" align="left"><a accesskey="p" href="credits.html">Prev</a> </td><th width="60%" align="center">Appendix�C.�Credits</th><td width="20%" align="right"> <a accesskey="n" href="os-install.html">Next</a></td></tr></table><hr></div><div class="section" lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="install-origins"></a>Where did this document come from?</h2></div></div></div><p>
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html><head><meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"><title>Where did this document come from?</title><meta name="generator" content="DocBook XSL Stylesheets V1.60.1"><link rel="home" href="index.html" title="OpenACS Core Documentation"><link rel="up" href="credits.html" title="Appendix�C.�Credits"><link rel="previous" href="credits.html" title="Appendix�C.�Credits"><link rel="next" href="os-install.html" title="Linux Install Guides"><link rel="stylesheet" href="openacs.css" type="text/css"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><a href="http://openacs.org"><img src="/doc/images/alex.jpg" border="0" alt="Alex logo"></a><table width="100%" summary="Navigation header" border="0"><tr><td width="20%" align="left"><a accesskey="p" href="credits.html">Prev</a> </td><th width="60%" align="center">Appendix�C.�Credits</th><td width="20%" align="right"> <a accesskey="n" href="os-install.html">Next</a></td></tr></table><hr></div><div class="section" lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="install-origins"></a>Where did this document come from?</h2></div></div><div></div></div><p>
       This document was created by <a href="mailto:vinod@kurup.com" target="_top">Vinod Kurup</a>, but it's really
       just plagiarism from a number of documents that came before it. If
       I've used something that you've written without proper credit, let me
Index: openacs-4/packages/acs-core-docs/www/install-overview.html
===================================================================
RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/install-overview.html,v
diff -u -r1.27 -r1.27.4.1
--- openacs-4/packages/acs-core-docs/www/install-overview.html	17 Jul 2006 05:38:31 -0000	1.27
+++ openacs-4/packages/acs-core-docs/www/install-overview.html	3 Feb 2008 12:07:39 -0000	1.27.4.1
@@ -1,4 +1,5 @@
-<html><head><meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"><title>Chapter�2.�Installation Overview</title><meta name="generator" content="DocBook XSL Stylesheets V1.70.1"><link rel="home" href="index.html" title="OpenACS Core Documentation"><link rel="up" href="acs-admin.html" title="Part�II.�Administrator's Guide"><link rel="previous" href="acs-admin.html" title="Part�II.�Administrator's Guide"><link rel="next" href="install-steps.html" title="Basic Steps"><link rel="stylesheet" href="openacs.css" type="text/css"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><a href="http://openacs.org"><img src="/doc/images/alex.jpg" border="0" alt="Alex logo"></a><table width="100%" summary="Navigation header" border="0"><tr><td width="20%" align="left"><a accesskey="p" href="acs-admin.html">Prev</a> </td><th width="60%" align="center">Part�II.�Administrator's Guide</th><td width="20%" align="right"> <a accesskey="n" href="install-steps.html">Next</a></td></tr></table><hr></div><div class="chapter" lang="en"><div class="titlepage"><div><div><h2 class="title"><a name="install-overview"></a>Chapter�2.�Installation Overview</h2></div></div></div><div class="toc"><p><b>Table of Contents</b></p><dl><dt><span class="sect1"><a href="install-steps.html">Basic Steps</a></span></dt><dt><span class="sect1"><a href="individual-programs.html">Prerequisite Software</a></span></dt></dl></div><div class="authorblurb"><p>by <a href="mailto:vinod@kurup.com" target="_top">Vinod Kurup</a></p>
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html><head><meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"><title>Chapter�2.�Installation Overview</title><meta name="generator" content="DocBook XSL Stylesheets V1.60.1"><link rel="home" href="index.html" title="OpenACS Core Documentation"><link rel="up" href="acs-admin.html" title="Part�II.�Administrator's Guide"><link rel="previous" href="acs-admin.html" title="Part�II.�Administrator's Guide"><link rel="next" href="install-steps.html" title="Basic Steps"><link rel="stylesheet" href="openacs.css" type="text/css"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><a href="http://openacs.org"><img src="/doc/images/alex.jpg" border="0" alt="Alex logo"></a><table width="100%" summary="Navigation header" border="0"><tr><td width="20%" align="left"><a accesskey="p" href="acs-admin.html">Prev</a> </td><th width="60%" align="center">Part�II.�Administrator's Guide</th><td width="20%" align="right"> <a accesskey="n" href="install-steps.html">Next</a></td></tr></table><hr></div><div class="chapter" lang="en"><div class="titlepage"><div><div><h2 class="title"><a name="install-overview"></a>Chapter�2.�Installation Overview</h2></div></div><div></div></div><div class="toc"><p><b>Table of Contents</b></p><dl><dt><a href="install-steps.html">Basic Steps</a></dt><dt><a href="individual-programs.html">Prerequisite Software</a></dt></dl></div><div class="authorblurb"><p>by <a href="mailto:vinod@kurup.com" target="_top">Vinod Kurup</a></p>
           OpenACS docs are written by the named authors, and may be edited
           by OpenACS documentation staff.
         </div></div><div class="navfooter"><hr><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="acs-admin.html">Prev</a> </td><td width="20%" align="center"><a accesskey="h" href="index.html">Home</a></td><td width="40%" align="right"> <a accesskey="n" href="install-steps.html">Next</a></td></tr><tr><td width="40%" align="left">Part�II.�Administrator's Guide </td><td width="20%" align="center"><a accesskey="u" href="acs-admin.html">Up</a></td><td width="40%" align="right"> Basic Steps</td></tr></table><hr><address><a href="mailto:docs@openacs.org">docs@openacs.org</a></address></div><a name="comments"></a><center><a href="http://openacs.org/doc/current/install-overview.html#comments">View comments on this page at openacs.org</a></center></body></html>
Index: openacs-4/packages/acs-core-docs/www/install-pam-radius.html
===================================================================
RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/install-pam-radius.html,v
diff -u -r1.4 -r1.4.4.1
--- openacs-4/packages/acs-core-docs/www/install-pam-radius.html	17 Jul 2006 05:38:31 -0000	1.4
+++ openacs-4/packages/acs-core-docs/www/install-pam-radius.html	3 Feb 2008 12:07:39 -0000	1.4.4.1
@@ -1,11 +1,12 @@
-<html><head><meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"><title>Install PAM Radius for use as external authentication</title><meta name="generator" content="DocBook XSL Stylesheets V1.70.1"><link rel="home" href="index.html" title="OpenACS Core Documentation"><link rel="up" href="install-more-software.html" title="Appendix�B.�Install additional supporting software"><link rel="previous" href="install-squirrelmail.html" title="Install Squirrelmail for use as a webmail system for OpenACS"><link rel="next" href="install-ldap-radius.html" title="Install LDAP for use as external authentication"><link rel="stylesheet" href="openacs.css" type="text/css"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><a href="http://openacs.org"><img src="/doc/images/alex.jpg" border="0" alt="Alex logo"></a><table width="100%" summary="Navigation header" border="0"><tr><td width="20%" align="left"><a accesskey="p" href="install-squirrelmail.html">Prev</a> </td><th width="60%" align="center">Appendix�B.�Install additional supporting software</th><td width="20%" align="right"> <a accesskey="n" href="install-ldap-radius.html">Next</a></td></tr></table><hr></div><div class="sect1" lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="install-pam-radius"></a>Install PAM Radius for use as external authentication</h2></div></div></div><div class="authorblurb"><p>By <a href="mailto:openacs@sussdorff.de" target="_top">Malte Sussdorff</a></p>
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html><head><meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"><title>Install PAM Radius for use as external authentication</title><meta name="generator" content="DocBook XSL Stylesheets V1.60.1"><link rel="home" href="index.html" title="OpenACS Core Documentation"><link rel="up" href="install-more-software.html" title="Appendix�B.�Install additional supporting software"><link rel="previous" href="install-squirrelmail.html" title="Install Squirrelmail for use as a webmail system for OpenACS"><link rel="next" href="install-ldap-radius.html" title="Install LDAP for use as external authentication"><link rel="stylesheet" href="openacs.css" type="text/css"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><a href="http://openacs.org"><img src="/doc/images/alex.jpg" border="0" alt="Alex logo"></a><table width="100%" summary="Navigation header" border="0"><tr><td width="20%" align="left"><a accesskey="p" href="install-squirrelmail.html">Prev</a> </td><th width="60%" align="center">Appendix�B.�Install additional supporting software</th><td width="20%" align="right"> <a accesskey="n" href="install-ldap-radius.html">Next</a></td></tr></table><hr></div><div class="sect1" lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="install-pam-radius"></a>Install PAM Radius for use as external authentication</h2></div></div><div></div></div><div class="authorblurb"><p>By <a href="mailto:openacs@sussdorff.de" target="_top">Malte Sussdorff</a></p>
           OpenACS docs are written by the named authors, and may be edited
           by OpenACS documentation staff.
-        </div><p>This step by step guide is derived from the installation instructions which you can find at <span class="replaceable"><span class="replaceable">yourdomain.com</span></span>/doc/acs-authentication/ext-auth-pam-install.html. It is build upon PAM 0.77 (tested) and does not work on RedHat Linux Enterprise 3 (using PAM 0.75). It makes use of the ns_pam module written by Mat Kovach. The instructions given in here do work with PAM LDAP accordingly and differences will be shown at the end of the file.</p><div class="orderedlist"><ol type="1"><li><a name="install-ns_pam"></a><p><b>Install ns_pam.�</b>Download and install ns_pam</p><pre class="screen">[root aolserver]# <strong class="userinput"><code>cd /usr/local/src/aolserver/</code></strong>
-          [root aolserver]# <strong class="userinput"><code>wget http://braindamage.alal.com/software/ns_pam-0.1.tar.gz</code></strong>
-          [root aolserver]# <strong class="userinput"><code>tar xvfz ns_pam-0.1.tar.gz</code></strong>
-          [root aolserver]# <strong class="userinput"><code>cd ns_pam-0.1</code></strong>
-          [root ns_pam-0.1]# <strong class="userinput"><code>make install INST=/usr/local/aolserver</code></strong>
+        </div><p>This step by step guide is derived from the installation instructions which you can find at <span class="replaceable"><span class="replaceable">yourdomain.com</span></span>/doc/acs-authentication/ext-auth-pam-install.html. It is build upon PAM 0.77 (tested) and does not work on RedHat Linux Enterprise 3 (using PAM 0.75). It makes use of the ns_pam module written by Mat Kovach. The instructions given in here do work with PAM LDAP accordingly and differences will be shown at the end of the file.</p><div class="orderedlist"><ol type="1"><li><a name="install-ns_pam"></a><p><b>Install ns_pam.�</b>Download and install ns_pam</p><pre class="screen">[root aolserver]# <b class="userinput"><tt>cd /usr/local/src/aolserver/</tt></b>
+          [root aolserver]# <b class="userinput"><tt>wget http://braindamage.alal.com/software/ns_pam-0.1.tar.gz</tt></b>
+          [root aolserver]# <b class="userinput"><tt>tar xvfz ns_pam-0.1.tar.gz</tt></b>
+          [root aolserver]# <b class="userinput"><tt>cd ns_pam-0.1</tt></b>
+          [root ns_pam-0.1]# <b class="userinput"><tt>make install INST=/usr/local/aolserver</tt></b>
           [root ns_pam-0.1]#
 <span class="action"><span class="action">cd /usr/local/src/aolserver/
 wget http://braindamage.alal.com/software/ns_pam-0.1.tar.gz
@@ -15,23 +16,23 @@
 </span></span>
           </pre></li><li><a name="configure-ns_pam"></a><p><b>Configure ns_pam.�</b>Configure AOLserver for ns_pam</p><p>To enable ns_pam in AOLServer you will first have to edit your config.tcl file and enable the loading of the ns_pam module and configure the aolservers pam configuration file.</p><div class="itemizedlist"><ul type="disc"><li><p>
                Change <span class="emphasis"><em>config.tcl</em></span>. Remove the
-      <span class="emphasis"><em>#</em></span> in front of <code class="computeroutput">ns_param
-      nspam ${bindir}/nspam.so</code> to enable the loading
+      <span class="emphasis"><em>#</em></span> in front of <tt class="computeroutput">ns_param
+      nspam ${bindir}/nspam.so</tt> to enable the loading
       of the ns_pam module.
             </p></li><li><p>
               Change <span class="emphasis"><em>config.tcl</em></span>. Replace
-      <code class="computeroutput">pam_domain</code> in the section
-      <code class="computeroutput">ns/server/${server}/module/nspam</code>
-      with <strong class="userinput"><code>aolserver</code></strong>
+      <tt class="computeroutput">pam_domain</tt> in the section
+      <tt class="computeroutput">ns/server/${server}/module/nspam</tt>
+      with <b class="userinput"><tt>aolserver</tt></b>
             </p></li><li><p>Create <span class="emphasis"><em>/etc/pam.d/aolserver</em></span>.
             </p><pre class="screen">
-              [root ns_pam]#<strong class="userinput"><code>cp /var/lib/aolserver/<span class="replaceable"><span class="replaceable">service0</span></span>/packages/acs-core-docs/www/files/pam-aolserver.txt /etc/pam.d/aolserver</code></strong>
-            </pre></li></ul></div></li><li><a name="configure-pam-radius"></a><p><b>Configure PAM Radius.�</b>Configure and install PAM Radius</p><p>You have to make sure that pam_radius v.1.3.16 or higher is installed, otherwise you will have to install it.</p><pre class="screen">[root ns_pam]# <strong class="userinput"><code>cd /usr/local/src/</code></strong>
-          [root src]# <strong class="userinput"><code>wget ftp://ftp.freeradius.org/pub/radius/pam_radius-1.3.16.tar</code></strong>
-          [root src]# <strong class="userinput"><code>tar xvf pam_radius-1.3.16</code></strong>
-          [root src]# <strong class="userinput"><code>cd pam_radius</code></strong>
-          [root pam_radius]# <strong class="userinput"><code>make</code></strong>
-          [root pam_radius]# <strong class="userinput"><code>cp pam_radius_auth.so /lib/security/</code></strong>
+              [root ns_pam]#<b class="userinput"><tt>cp /var/lib/aolserver/<span class="replaceable"><span class="replaceable">service0</span></span>/packages/acs-core-docs/www/files/pam-aolserver.txt /etc/pam.d/aolserver</tt></b>
+            </pre></li></ul></div></li><li><a name="configure-pam-radius"></a><p><b>Configure PAM Radius.�</b>Configure and install PAM Radius</p><p>You have to make sure that pam_radius v.1.3.16 or higher is installed, otherwise you will have to install it.</p><pre class="screen">[root ns_pam]# <b class="userinput"><tt>cd /usr/local/src/</tt></b>
+          [root src]# <b class="userinput"><tt>wget ftp://ftp.freeradius.org/pub/radius/pam_radius-1.3.16.tar</tt></b>
+          [root src]# <b class="userinput"><tt>tar xvf pam_radius-1.3.16</tt></b>
+          [root src]# <b class="userinput"><tt>cd pam_radius</tt></b>
+          [root pam_radius]# <b class="userinput"><tt>make</tt></b>
+          [root pam_radius]# <b class="userinput"><tt>cp pam_radius_auth.so /lib/security/</tt></b>
           [root pam_radius]#
 <span class="action"><span class="action">cd /usr/local/src
 wget ftp://ftp.freeradius.org/pub/radius/pam_radius-1.3.16.tar
@@ -40,6 +41,6 @@
 make
 cp pam_radius_auth.so /lib/security/
 </span></span>
-          </pre><p>Next you have to add the configuration lines to your Radius configuration file (/etc/rddb/server). For AOLserver to be able to access this information you have to change the access rights to this file as well.</p><pre class="screen">[root pam_radius]# <strong class="userinput"><code>echo "radius.<span class="replaceable"><span class="replaceable">yourdomain.com</span></span>:1645 <span class="replaceable"><span class="replaceable">your_radius_password</span></span> &gt;&gt;/etc/rddb/server</code></strong>
-          [root src]# <strong class="userinput"><code>chown <span class="replaceable"><span class="replaceable">service0</span></span>:web /etc/rddb/server</code></strong>
+          </pre><p>Next you have to add the configuration lines to your Radius configuration file (/etc/rddb/server). For AOLserver to be able to access this information you have to change the access rights to this file as well.</p><pre class="screen">[root pam_radius]# <b class="userinput"><tt>echo &quot;radius.<span class="replaceable"><span class="replaceable">yourdomain.com</span></span>:1645 <span class="replaceable"><span class="replaceable">your_radius_password</span></span> &gt;&gt;/etc/rddb/server</tt></b>
+          [root src]# <b class="userinput"><tt>chown <span class="replaceable"><span class="replaceable">service0</span></span>:web /etc/rddb/server</tt></b>
           </pre></li></ol></div></div><div class="navfooter"><hr><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="install-squirrelmail.html">Prev</a> </td><td width="20%" align="center"><a accesskey="h" href="index.html">Home</a></td><td width="40%" align="right"> <a accesskey="n" href="install-ldap-radius.html">Next</a></td></tr><tr><td width="40%" align="left">Install Squirrelmail for use as a webmail system for OpenACS </td><td width="20%" align="center"><a accesskey="u" href="install-more-software.html">Up</a></td><td width="40%" align="right"> Install LDAP for use as external authentication</td></tr></table><hr><address><a href="mailto:docs@openacs.org">docs@openacs.org</a></address></div><a name="comments"></a><center><a href="http://openacs.org/doc/current/install-pam-radius.html#comments">View comments on this page at openacs.org</a></center></body></html>
Index: openacs-4/packages/acs-core-docs/www/install-php.html
===================================================================
RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/install-php.html,v
diff -u -r1.9 -r1.9.4.1
--- openacs-4/packages/acs-core-docs/www/install-php.html	17 Jul 2006 05:38:31 -0000	1.9
+++ openacs-4/packages/acs-core-docs/www/install-php.html	3 Feb 2008 12:07:39 -0000	1.9.4.1
@@ -1,11 +1,12 @@
-<html><head><meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"><title>Install PHP for use in AOLserver</title><meta name="generator" content="DocBook XSL Stylesheets V1.70.1"><link rel="home" href="index.html" title="OpenACS Core Documentation"><link rel="up" href="install-more-software.html" title="Appendix�B.�Install additional supporting software"><link rel="previous" href="install-tclwebtest.html" title="Install tclwebtest."><link rel="next" href="install-squirrelmail.html" title="Install Squirrelmail for use as a webmail system for OpenACS"><link rel="stylesheet" href="openacs.css" type="text/css"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><a href="http://openacs.org"><img src="/doc/images/alex.jpg" border="0" alt="Alex logo"></a><table width="100%" summary="Navigation header" border="0"><tr><td width="20%" align="left"><a accesskey="p" href="install-tclwebtest.html">Prev</a> </td><th width="60%" align="center">Appendix�B.�Install additional supporting software</th><td width="20%" align="right"> <a accesskey="n" href="install-squirrelmail.html">Next</a></td></tr></table><hr></div><div class="sect1" lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="install-php"></a>Install PHP for use in AOLserver</h2></div></div></div><div class="authorblurb"><p>By <a href="mailto:openacs@sussdorff.de" target="_top">Malte Sussdorff</a></p>
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html><head><meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"><title>Install PHP for use in AOLserver</title><meta name="generator" content="DocBook XSL Stylesheets V1.60.1"><link rel="home" href="index.html" title="OpenACS Core Documentation"><link rel="up" href="install-more-software.html" title="Appendix�B.�Install additional supporting software"><link rel="previous" href="install-tclwebtest.html" title="Install tclwebtest."><link rel="next" href="install-squirrelmail.html" title="Install Squirrelmail for use as a webmail system for OpenACS"><link rel="stylesheet" href="openacs.css" type="text/css"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><a href="http://openacs.org"><img src="/doc/images/alex.jpg" border="0" alt="Alex logo"></a><table width="100%" summary="Navigation header" border="0"><tr><td width="20%" align="left"><a accesskey="p" href="install-tclwebtest.html">Prev</a> </td><th width="60%" align="center">Appendix�B.�Install additional supporting software</th><td width="20%" align="right"> <a accesskey="n" href="install-squirrelmail.html">Next</a></td></tr></table><hr></div><div class="sect1" lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="install-php"></a>Install PHP for use in AOLserver</h2></div></div><div></div></div><div class="authorblurb"><p>By <a href="mailto:openacs@sussdorff.de" target="_top">Malte Sussdorff</a></p>
           OpenACS docs are written by the named authors, and may be edited
           by OpenACS documentation staff.
-        </div><p>To be able to use PHP software with AOLserver (and OpenACS), you have to install PHP with AOLserver support. Get the latest version from <a href="http://www.php.net" target="_top">www.php.net</a>. For convenience we get version 4.3.4 from a mirror</p><pre class="screen">[root root]# <strong class="userinput"><code>cd /usr/local/src</code></strong>
-[root src]# <strong class="userinput"><code>wget http://de3.php.net/distributions/php-4.3.4.tar.gz</code></strong>
-[root src]# <strong class="userinput"><code>tar xfz php-4.3.4.tar.gz</code></strong>
-[root src]# <strong class="userinput"><code>cd php-4.3.4</code></strong>
-[root php-4.3.4]# <strong class="userinput"><code>cd php-4.3.4</code></strong>
-[root php-4.3.4]# <strong class="userinput"><code> ./configure --with-aolserver=/usr/local/aolserver/ --with-pgsql=/usr/local/pgsql --without-mysql</code></strong>
-[root php-4.3.4]# <strong class="userinput"><code>make install</code></strong>
-      </pre><p>Once installed you can enable this by configuring your config file. Make sure your config file supports php (it should have a php section with it). Furthermore add <strong class="userinput"><code>index.php</code></strong> as the last element to your <code class="computeroutput">directoryfile</code> directive.</p></div><div class="navfooter"><hr><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="install-tclwebtest.html">Prev</a> </td><td width="20%" align="center"><a accesskey="h" href="index.html">Home</a></td><td width="40%" align="right"> <a accesskey="n" href="install-squirrelmail.html">Next</a></td></tr><tr><td width="40%" align="left">Install tclwebtest. </td><td width="20%" align="center"><a accesskey="u" href="install-more-software.html">Up</a></td><td width="40%" align="right"> Install Squirrelmail for use as a webmail system for OpenACS</td></tr></table><hr><address><a href="mailto:docs@openacs.org">docs@openacs.org</a></address></div><a name="comments"></a><center><a href="http://openacs.org/doc/current/install-php.html#comments">View comments on this page at openacs.org</a></center></body></html>
+        </div><p>To be able to use PHP software with AOLserver (and OpenACS), you have to install PHP with AOLserver support. Get the latest version from <a href="http://www.php.net" target="_top">www.php.net</a>. For convenience we get version 4.3.4 from a mirror</p><pre class="screen">[root root]# <b class="userinput"><tt>cd /usr/local/src</tt></b>
+[root src]# <b class="userinput"><tt>wget http://de3.php.net/distributions/php-4.3.4.tar.gz</tt></b>
+[root src]# <b class="userinput"><tt>tar xfz php-4.3.4.tar.gz</tt></b>
+[root src]# <b class="userinput"><tt>cd php-4.3.4</tt></b>
+[root php-4.3.4]# <b class="userinput"><tt>cd php-4.3.4</tt></b>
+[root php-4.3.4]# <b class="userinput"><tt> ./configure --with-aolserver=/usr/local/aolserver/ --with-pgsql=/usr/local/pgsql --without-mysql</tt></b>
+[root php-4.3.4]# <b class="userinput"><tt>make install</tt></b>
+      </pre><p>Once installed you can enable this by configuring your config file. Make sure your config file supports php (it should have a php section with it). Furthermore add <b class="userinput"><tt>index.php</tt></b> as the last element to your <tt class="computeroutput">directoryfile</tt> directive.</p></div><div class="navfooter"><hr><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="install-tclwebtest.html">Prev</a> </td><td width="20%" align="center"><a accesskey="h" href="index.html">Home</a></td><td width="40%" align="right"> <a accesskey="n" href="install-squirrelmail.html">Next</a></td></tr><tr><td width="40%" align="left">Install tclwebtest. </td><td width="20%" align="center"><a accesskey="u" href="install-more-software.html">Up</a></td><td width="40%" align="right"> Install Squirrelmail for use as a webmail system for OpenACS</td></tr></table><hr><address><a href="mailto:docs@openacs.org">docs@openacs.org</a></address></div><a name="comments"></a><center><a href="http://openacs.org/doc/current/install-php.html#comments">View comments on this page at openacs.org</a></center></body></html>
Index: openacs-4/packages/acs-core-docs/www/install-qmail.html
===================================================================
RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/install-qmail.html,v
diff -u -r1.34 -r1.34.4.1
--- openacs-4/packages/acs-core-docs/www/install-qmail.html	17 Jul 2006 05:38:31 -0000	1.34
+++ openacs-4/packages/acs-core-docs/www/install-qmail.html	3 Feb 2008 12:07:39 -0000	1.34.4.1
@@ -1,52 +1,53 @@
-<html><head><meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"><title>Install qmail (OPTIONAL)</title><meta name="generator" content="DocBook XSL Stylesheets V1.70.1"><link rel="home" href="index.html" title="OpenACS Core Documentation"><link rel="up" href="install-more-software.html" title="Appendix�B.�Install additional supporting software"><link rel="previous" href="install-daemontools.html" title="Install Daemontools (OPTIONAL)"><link rel="next" href="analog-install.html" title="Install Analog web file analyzer"><link rel="stylesheet" href="openacs.css" type="text/css"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><a href="http://openacs.org"><img src="/doc/images/alex.jpg" border="0" alt="Alex logo"></a><table width="100%" summary="Navigation header" border="0"><tr><td width="20%" align="left"><a accesskey="p" href="install-daemontools.html">Prev</a> </td><th width="60%" align="center">Appendix�B.�Install additional supporting software</th><td width="20%" align="right"> <a accesskey="n" href="analog-install.html">Next</a></td></tr></table><hr></div><div class="sect1" lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="install-qmail"></a>Install qmail (OPTIONAL)</h2></div></div></div><p>Qmail is a Mail Transfer Agent.  It handles incoming and
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html><head><meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"><title>Install qmail (OPTIONAL)</title><meta name="generator" content="DocBook XSL Stylesheets V1.60.1"><link rel="home" href="index.html" title="OpenACS Core Documentation"><link rel="up" href="install-more-software.html" title="Appendix�B.�Install additional supporting software"><link rel="previous" href="install-daemontools.html" title="Install Daemontools (OPTIONAL)"><link rel="next" href="analog-install.html" title="Install Analog web file analyzer"><link rel="stylesheet" href="openacs.css" type="text/css"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><a href="http://openacs.org"><img src="/doc/images/alex.jpg" border="0" alt="Alex logo"></a><table width="100%" summary="Navigation header" border="0"><tr><td width="20%" align="left"><a accesskey="p" href="install-daemontools.html">Prev</a> </td><th width="60%" align="center">Appendix�B.�Install additional supporting software</th><td width="20%" align="right"> <a accesskey="n" href="analog-install.html">Next</a></td></tr></table><hr></div><div class="sect1" lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="install-qmail"></a>Install qmail (OPTIONAL)</h2></div></div><div></div></div><p>Qmail is a Mail Transfer Agent.  It handles incoming and
       outgoing mail.  Install qmail if you want your OpenACS server to
       send and receive mail, and you don't want to use an alternate
       MTA.</p><p>Red Hat 9: all djb tools (qmail, daemontools, ucspi) will
       fail to compile in Red Hat 9 because of changes to glibc (<a href="http://moni.csi.hu/pub/glibc-2.3.1/" target="_top">patches</a>)</p><div class="orderedlist"><ol type="1"><li><p><b>Install ucspi.�</b>This program handles incoming tcp connections.
-            <a href="individual-programs.html#ucspi-download">Download ucspi</a> and install it.</p><pre class="screen">[root root]# <strong class="userinput"><code>cd /usr/local/src</code></strong>
-[root src]# <strong class="userinput"><code>wget http://cr.yp.to/ucspi-tcp/ucspi-tcp-0.88.tar.gz</code></strong>
-[root src]# <strong class="userinput"><code>tar xzf ucspi-tcp-0.88.tar.gz</code></strong>
+            <a href="individual-programs.html#ucspi-download">Download ucspi</a> and install it.</p><pre class="screen">[root root]# <b class="userinput"><tt>cd /usr/local/src</tt></b>
+[root src]# <b class="userinput"><tt>wget http://cr.yp.to/ucspi-tcp/ucspi-tcp-0.88.tar.gz</tt></b>
+[root src]# <b class="userinput"><tt>tar xzf ucspi-tcp-0.88.tar.gz</tt></b>
 <span class="action"><span class="action">cd /usr/local/src 
 wget http://cr.yp.to/ucspi-tcp/ucspi-tcp-0.88.tar.gz
 tar xzf ucspi-tcp-0.88.tar.gz </span></span></pre><p>Red Hat 9 only</p><pre class="screen"><span class="action"><span class="action">wget http://moni.csi.hu/pub/glibc-2.3.1/ucspi-tcp-0.88.errno.patch
 cd ucspi-tcp-0.88
 patch -p1 &lt;../ucspi-tcp-0.88.errno.patch
-cd ..</span></span></pre><p>All platforms continue:</p><pre class="screen">[root src]# <strong class="userinput"><code>cd ucspi-tcp-0.88</code></strong>
-[root ucspi-tcp-0.88]#<strong class="userinput"><code> make</code></strong>
+cd ..</span></span></pre><p>All platforms continue:</p><pre class="screen">[root src]# <b class="userinput"><tt>cd ucspi-tcp-0.88</tt></b>
+[root ucspi-tcp-0.88]#<b class="userinput"><tt> make</tt></b>
 ( cat warn-auto.sh; \
-echo 'main="$1"; shift'; \<span class="emphasis"><em>(many lines omitted)</em></span>
+echo 'main=&quot;$1&quot;; shift'; \<span class="emphasis"><em>(many lines omitted)</em></span>
 ./compile instcheck.c
 ./load instcheck hier.o auto_home.o unix.a byte.a
-[root ucspi-tcp-0.88]# <strong class="userinput"><code>make setup check</code></strong>
+[root ucspi-tcp-0.88]# <b class="userinput"><tt>make setup check</tt></b>
 ./install
 ./instcheck
 [root ucspi-tcp-0.88]#
 <span class="action"><span class="action">
 cd ucspi-tcp-0.88 
 make 
 make setup check</span></span></pre><p>Verify that ucspi-tcp was installed successfully by
-running the tcpserver program which is part of ucspi-tcp:</p><pre class="screen">[root ucspi-tcp-0.88]# <strong class="userinput"><code>tcpserver</code></strong>
+running the tcpserver program which is part of ucspi-tcp:</p><pre class="screen">[root ucspi-tcp-0.88]# <b class="userinput"><tt>tcpserver</tt></b>
 tcpserver: usage: tcpserver [ -1UXpPhHrRoOdDqQv ] [ -c limit ] [ -x rules.cdb ] [ -B banner ] [ -g gid ] [ -u uid
 ] [ -b backlog ] [ -l localname ] [ -t timeout ] host port program
 [root ucspi-tcp-0.88]#
-</pre><p><a class="indexterm" name="id1143525"></a>
+</pre><p><a class="indexterm" name="id3016610"></a>
 (I'm not sure if this next step is 100% necessary, but when I skip it
-I get problems.  If you get the error <code class="computeroutput">553 sorry, that domain isn't in my list of allowed rcpthosts (#5.7.1)</code> then you need to do this.)  AOLserver sends outgoing mail via the ns_sendmail
+I get problems.  If you get the error <tt class="computeroutput">553 sorry, that domain isn't in my list of allowed rcpthosts (#5.7.1)</tt> then you need to do this.)  AOLserver sends outgoing mail via the ns_sendmail
 command, which pipes a command to the sendmail executable.  Or, in our
 case, the qmail replacement wrapper for the sendmail executable.  In
 some cases, though, the outgoing mail requset is apparently sent
 through tcp/ip, so that it comes to qmail from 127.0.0.1 (a special IP
-address that means the local machine - the "loopback" interface).
+address that means the local machine - the &quot;loopback&quot; interface).
 Unless this mail is addressed to the same machine, qmail thinks that
 it's an attempt to relay mail, and rejects it.  So these two commands
 set up an exception so that any mail sent from 127.0.0.1 is allowed to
-send outgoing mail.</p><pre class="screen">[root ucspi-tcp-0.88]# <strong class="userinput"><code>cp /tmp/openacs-5.2.3rc1/packages/acs-core-docs/www/files/tcp.smtp.txt /etc/tcp.smtp</code></strong>
-[root ucspi-tcp-0.88]# <strong class="userinput"><code>tcprules /etc/tcp.smtp.cdb /etc/tcp.smtp.tmp &lt; /etc/tcp.smtp</code></strong>
-<span class="action"><span class="action">cp /tmp/openacs-5.2.3rc1/packages/acs-core-docs/www/files/tcp.smtp.txt /etc/tcp.smtp 
-tcprules /etc/tcp.smtp.cdb /etc/tcp.smtp.tmp &lt; /etc/tcp.smtp </span></span></pre></li><li><p><b>Install Qmail.�</b><a class="indexterm" name="id1175634"></a></p><p><a href="individual-programs.html#ucspi-download">Download qmail</a>,
-            set up the standard supporting users and build the binaries:</p><pre class="screen">[root root]# <strong class="userinput"><code>cd /usr/local/src</code></strong>
-[root src]# <strong class="userinput"><code>wget http://www.qmail.org/netqmail-1.04.tar.gz</code></strong>
-[root src]# <strong class="userinput"><code>tar xzf netqmail-1.04.tar.gz</code></strong>
+send outgoing mail.</p><pre class="screen">[root ucspi-tcp-0.88]# <b class="userinput"><tt>cp /tmp/openacs-5.4.0/packages/acs-core-docs/www/files/tcp.smtp.txt /etc/tcp.smtp</tt></b>
+[root ucspi-tcp-0.88]# <b class="userinput"><tt>tcprules /etc/tcp.smtp.cdb /etc/tcp.smtp.tmp &lt; /etc/tcp.smtp</tt></b>
+<span class="action"><span class="action">cp /tmp/openacs-5.4.0/packages/acs-core-docs/www/files/tcp.smtp.txt /etc/tcp.smtp 
+tcprules /etc/tcp.smtp.cdb /etc/tcp.smtp.tmp &lt; /etc/tcp.smtp </span></span></pre></li><li><p><b>Install Qmail.�</b><a class="indexterm" name="id3042090"></a></p><p><a href="individual-programs.html#ucspi-download">Download qmail</a>,
+            set up the standard supporting users and build the binaries:</p><pre class="screen">[root root]# <b class="userinput"><tt>cd /usr/local/src</tt></b>
+[root src]# <b class="userinput"><tt>wget http://www.qmail.org/netqmail-1.04.tar.gz</tt></b>
+[root src]# <b class="userinput"><tt>tar xzf netqmail-1.04.tar.gz</tt></b>
 --15:04:11--  http://www.qmail.org/netqmail-1.04.tar.gz
            =&gt; `netqmail-1.04.tar.gz'
 Resolving www.qmail.org... done.
@@ -58,18 +59,18 @@
 
 15:04:21 (24.04 KB/s) - `netqmail-1.04.tar.gz' saved [242310/242310]
 
-[root src]# <strong class="userinput"><code>mkdir /var/qmail</code></strong>
-[root src]#<strong class="userinput"><code> groupadd nofiles</code></strong>
-[root src]# <strong class="userinput"><code>useradd -g nofiles -d /var/qmail/alias alias</code></strong>
-[root src]# <strong class="userinput"><code>useradd -g nofiles -d /var/qmail qmaild</code></strong>
-[root src]# <strong class="userinput"><code>useradd -g nofiles -d /var/qmail qmaill</code></strong>
-[root src]# <strong class="userinput"><code>useradd -g nofiles -d /var/qmail qmailp</code></strong>
-[root src]# <strong class="userinput"><code>groupadd qmail</code></strong>
-[root src]# <strong class="userinput"><code>useradd -g qmail -d /var/qmail qmailq</code></strong>
-[root src]# <strong class="userinput"><code>useradd -g qmail -d /var/qmail qmailr</code></strong>
-[root src]# <strong class="userinput"><code>useradd -g qmail -d /var/qmail qmails</code></strong>
-[root src]# <strong class="userinput"><code>cd netqmail-1.04</code></strong>
-[root netqmail-1.04]# <strong class="userinput"><code>./collate.sh</code></strong>
+[root src]# <b class="userinput"><tt>mkdir /var/qmail</tt></b>
+[root src]#<b class="userinput"><tt> groupadd nofiles</tt></b>
+[root src]# <b class="userinput"><tt>useradd -g nofiles -d /var/qmail/alias alias</tt></b>
+[root src]# <b class="userinput"><tt>useradd -g nofiles -d /var/qmail qmaild</tt></b>
+[root src]# <b class="userinput"><tt>useradd -g nofiles -d /var/qmail qmaill</tt></b>
+[root src]# <b class="userinput"><tt>useradd -g nofiles -d /var/qmail qmailp</tt></b>
+[root src]# <b class="userinput"><tt>groupadd qmail</tt></b>
+[root src]# <b class="userinput"><tt>useradd -g qmail -d /var/qmail qmailq</tt></b>
+[root src]# <b class="userinput"><tt>useradd -g qmail -d /var/qmail qmailr</tt></b>
+[root src]# <b class="userinput"><tt>useradd -g qmail -d /var/qmail qmails</tt></b>
+[root src]# <b class="userinput"><tt>cd netqmail-1.04</tt></b>
+[root netqmail-1.04]# <b class="userinput"><tt>./collate.sh</tt></b>
 
 You should see 7 lines of text below.  If you see anything
 else, then something might be wrong.
@@ -80,8 +81,8 @@
 [5] Renaming qmail-1.03 to netqmail-1.04...
 [6] Continue installing qmail using the instructions found at:
 [7] http://www.lifewithqmail.org/lwq.html#installation
-[root netqmail-1.04]# <strong class="userinput"><code>cd netqmail-1.04</code></strong>
-[root netqmail-1.04]# <strong class="userinput"><code>make setup check</code></strong>
+[root netqmail-1.04]# <b class="userinput"><tt>cd netqmail-1.04</tt></b>
+[root netqmail-1.04]# <b class="userinput"><tt>make setup check</tt></b>
 ( cat warn-auto.sh; \
 echo CC=\'`head -1 conf-cc`\'; \<span class="emphasis"><em>(many lines omitted)</em></span>
 ./install
@@ -102,11 +103,11 @@
 cd netqmail-1.04
 ./collate.sh
 cd netqmail-1.04
-make setup check</span></span></pre><p>Replace sendmail with qmail's wrapper.</p><a class="indexterm" name="id1151318"></a><pre class="screen">[root qmail-1.03]# <strong class="userinput"><code>rm -f /usr/bin/sendmail /usr/sbin/sendmail</code></strong>
-[root qmail-1.03]# <strong class="userinput"><code>ln -s /var/qmail/bin/sendmail /usr/sbin/sendmail</code></strong>
+make setup check</span></span></pre><p>Replace sendmail with qmail's wrapper.</p><a class="indexterm" name="id3058239"></a><pre class="screen">[root qmail-1.03]# <b class="userinput"><tt>rm -f /usr/bin/sendmail /usr/sbin/sendmail</tt></b>
+[root qmail-1.03]# <b class="userinput"><tt>ln -s /var/qmail/bin/sendmail /usr/sbin/sendmail</tt></b>
 [root qmail-1.03]#
 <span class="action"><span class="action">rm -f /usr/bin/sendmail /usr/sbin/sendmail
-ln -s /var/qmail/bin/sendmail /usr/sbin/sendmail</span></span></pre><p>Configure qmail - specifically, run the config script to set up files in <code class="computeroutput">/var/qmail/control</code> specifying the computer's identity and which addresses it should accept mail for.  This command will automatically set up qmail correctly if you have correctly set a valid host nome.  If not, you'll want to read <code class="computeroutput">/var/qmail/doc/INSTALL.ctl</code> to find out how to configure qmail.</p><pre class="screen">[root qmail-1.03]# <strong class="userinput"><code>./config-fast <span class="replaceable"><span class="replaceable">yourserver.test</span></span></code></strong>
+ln -s /var/qmail/bin/sendmail /usr/sbin/sendmail</span></span></pre><p>Configure qmail - specifically, run the config script to set up files in <tt class="computeroutput">/var/qmail/control</tt> specifying the computer's identity and which addresses it should accept mail for.  This command will automatically set up qmail correctly if you have correctly set a valid host nome.  If not, you'll want to read <tt class="computeroutput">/var/qmail/doc/INSTALL.ctl</tt> to find out how to configure qmail.</p><pre class="screen">[root qmail-1.03]# <b class="userinput"><tt>./config-fast <span class="replaceable"><span class="replaceable">yourserver.test</span></span></tt></b>
 Your fully qualified host name is yourserver.test.
 Putting yourserver.test into control/me...
 Putting yourserver.test into control/defaultdomain...
@@ -116,66 +117,66 @@
 Now qmail will refuse to accept SMTP messages except to yourserver.test.
 Make sure to change rcpthosts if you add hosts to locals or virtualdomains!
 [root qmail-1.03]#
-<span class="action"><span class="action">./config-fast <span class="replaceable"><span class="replaceable">yourserver.test</span></span></span></span></pre><p>All incoming mail that isn't for a specific user is handled by the <code class="computeroutput">alias</code> user.  This includes all root mail.  These commands prepare the alias user to receive mail.</p><pre class="screen">[root qmail-1.03]# <strong class="userinput"><code>cd ~alias; touch .qmail-postmaster .qmail-mailer-daemon .qmail-root</code></strong>
-[root alias]# <strong class="userinput"><code>chmod 644 ~alias/.qmail*</code></strong>
-[root alias]# <strong class="userinput"><code>/var/qmail/bin/maildirmake ~alias/Maildir/</code></strong>
-[root alias]# <strong class="userinput"><code>chown -R alias.nofiles /var/qmail/alias/Maildir</code></strong>
+<span class="action"><span class="action">./config-fast <span class="replaceable"><span class="replaceable">yourserver.test</span></span></span></span></pre><p>All incoming mail that isn't for a specific user is handled by the <tt class="computeroutput">alias</tt> user.  This includes all root mail.  These commands prepare the alias user to receive mail.</p><pre class="screen">[root qmail-1.03]# <b class="userinput"><tt>cd ~alias; touch .qmail-postmaster .qmail-mailer-daemon .qmail-root</tt></b>
+[root alias]# <b class="userinput"><tt>chmod 644 ~alias/.qmail*</tt></b>
+[root alias]# <b class="userinput"><tt>/var/qmail/bin/maildirmake ~alias/Maildir/</tt></b>
+[root alias]# <b class="userinput"><tt>chown -R alias.nofiles /var/qmail/alias/Maildir</tt></b>
 [root alias]#
 <span class="action"><span class="action">cd ~alias; touch .qmail-postmaster .qmail-mailer-daemon .qmail-root 
 chmod 644 ~alias/.qmail* 
 /var/qmail/bin/maildirmake ~alias/Maildir/ 
-chown -R alias.nofiles /var/qmail/alias/Maildir</span></span></pre><a class="indexterm" name="id1113351"></a><p>Configure qmail to use the Maildir delivery format
-          (instead of mbox), and install a version of the qmail startup script modified to use Maildir.</p><pre class="screen">[root alias]# <strong class="userinput"><code>echo "./Maildir" &gt; /var/qmail/bin/.qmail</code></strong>
-[root alias]# <strong class="userinput"><code>cp /tmp/openacs-5.2.3rc1/packages/acs-core-docs/www/files/qmail.rc.txt /var/qmail/rc</code></strong>
-[root alias]# <strong class="userinput"><code>chmod 755 /var/qmail/rc</code></strong>
+chown -R alias.nofiles /var/qmail/alias/Maildir</span></span></pre><a class="indexterm" name="id3064951"></a><p>Configure qmail to use the Maildir delivery format
+          (instead of mbox), and install a version of the qmail startup script modified to use Maildir.</p><pre class="screen">[root alias]# <b class="userinput"><tt>echo &quot;./Maildir&quot; &gt; /var/qmail/bin/.qmail</tt></b>
+[root alias]# <b class="userinput"><tt>cp /tmp/openacs-5.4.0/packages/acs-core-docs/www/files/qmail.rc.txt /var/qmail/rc</tt></b>
+[root alias]# <b class="userinput"><tt>chmod 755 /var/qmail/rc</tt></b>
 [root alias]# 
-<span class="action"><span class="action">echo "./Maildir" &gt; /var/qmail/bin/.qmail 
-cp /tmp/openacs-5.2.3rc1/packages/acs-core-docs/www/files/qmail.rc.txt /var/qmail/rc 
+<span class="action"><span class="action">echo &quot;./Maildir&quot; &gt; /var/qmail/bin/.qmail 
+cp /tmp/openacs-5.4.0/packages/acs-core-docs/www/files/qmail.rc.txt /var/qmail/rc 
 chmod 755 /var/qmail/rc 
 </span></span></pre><p>Set up the skeleton directory so that new users will
-          be configured for qmail.</p><pre class="screen">[root root]# <strong class="userinput"><code>/var/qmail/bin/maildirmake /etc/skel/Maildir</code></strong>
-[root root]# <strong class="userinput"><code>echo "./Maildir/" &gt; /etc/skel/.qmail</code></strong>
+          be configured for qmail.</p><pre class="screen">[root root]# <b class="userinput"><tt>/var/qmail/bin/maildirmake /etc/skel/Maildir</tt></b>
+[root root]# <b class="userinput"><tt>echo &quot;./Maildir/&quot; &gt; /etc/skel/.qmail</tt></b>
 [root root]# 
 <span class="action"><span class="action">/var/qmail/bin/maildirmake /etc/skel/Maildir
-echo "./Maildir/" &gt; /etc/skel/.qmail</span></span></pre><p>As recommended, we will run qmail with daemontools
-          control files.  Create daemontools control directories, set up a daemontools control script, copy the supervise control files, and set permissions.  The last line links the control directories to /service, which will cause supervise to detect them and execute the run files, causing qmail to start.</p><pre class="screen">[root root]# <strong class="userinput"><code>mkdir -p /var/qmail/supervise/qmail-send/log</code></strong>
-[root root]# <strong class="userinput"><code>mkdir -p /var/qmail/supervise/qmail-smtpd/log</code></strong>
-[root root]# <strong class="userinput"><code>mkdir /var/log/qmail</code></strong>
-[root root]# <strong class="userinput"><code>chown qmaill /var/log/qmail</code></strong>
-[root root]# <strong class="userinput"><code>cp /tmp/openacs-5.2.3rc1/packages/acs-core-docs/www/files/qmailctl.txt /var/qmail/bin/qmailctl</code></strong>
-[root root]# <strong class="userinput"><code>chmod 755 /var/qmail/bin/qmailctl</code></strong>
-[root root]# <strong class="userinput"><code>ln -s /var/qmail/bin/qmailctl /usr/bin</code></strong>
-[root root]# <strong class="userinput"><code>cp /tmp/openacs-5.2.3rc1/packages/acs-core-docs/www/files/qmail-send-run.txt /var/qmail/supervise/qmail-send/run </code></strong>
-[root root]# <strong class="userinput"><code>cp /tmp/openacs-5.2.3rc1/packages/acs-core-docs/www/files/qmail-send-log-run.txt /var/qmail/supervise/qmail-send/log/run</code></strong>
-[root root]# <strong class="userinput"><code>cp /tmp/openacs-5.2.3rc1/packages/acs-core-docs/www/files/qmail-smtpd-run.txt /var/qmail/supervise/qmail-smtpd/run</code></strong>
-[root root]# <strong class="userinput"><code>cp /tmp/openacs-5.2.3rc1/packages/acs-core-docs/www/files/qmail-smtpd-log-run.txt /var/qmail/supervise/qmail-smtpd/log/run</code></strong>
-[root root]# <strong class="userinput"><code>chmod 755 /var/qmail/supervise/qmail-send/run</code></strong>
-[root root]# <strong class="userinput"><code>chmod 755 /var/qmail/supervise/qmail-send/log/run</code></strong>
-[root root]# <strong class="userinput"><code>chmod 755 /var/qmail/supervise/qmail-smtpd/run</code></strong>
-[root root]# <strong class="userinput"><code>chmod 755 /var/qmail/supervise/qmail-smtpd/log/run</code></strong>
-[root root]# <strong class="userinput"><code>ln -s /var/qmail/supervise/qmail-send /var/qmail/supervise/qmail-smtpd /service</code></strong>
-[root root]# <strong class="userinput"><code>ln -s /var/qmail/supervise/qmail-send /var/qmail/supervise/qmail-smtpd /service</code></strong>
+echo &quot;./Maildir/&quot; &gt; /etc/skel/.qmail</span></span></pre><p>As recommended, we will run qmail with daemontools
+          control files.  Create daemontools control directories, set up a daemontools control script, copy the supervise control files, and set permissions.  The last line links the control directories to /service, which will cause supervise to detect them and execute the run files, causing qmail to start.</p><pre class="screen">[root root]# <b class="userinput"><tt>mkdir -p /var/qmail/supervise/qmail-send/log</tt></b>
+[root root]# <b class="userinput"><tt>mkdir -p /var/qmail/supervise/qmail-smtpd/log</tt></b>
+[root root]# <b class="userinput"><tt>mkdir /var/log/qmail</tt></b>
+[root root]# <b class="userinput"><tt>chown qmaill /var/log/qmail</tt></b>
+[root root]# <b class="userinput"><tt>cp /tmp/openacs-5.4.0/packages/acs-core-docs/www/files/qmailctl.txt /var/qmail/bin/qmailctl</tt></b>
+[root root]# <b class="userinput"><tt>chmod 755 /var/qmail/bin/qmailctl</tt></b>
+[root root]# <b class="userinput"><tt>ln -s /var/qmail/bin/qmailctl /usr/bin</tt></b>
+[root root]# <b class="userinput"><tt>cp /tmp/openacs-5.4.0/packages/acs-core-docs/www/files/qmail-send-run.txt /var/qmail/supervise/qmail-send/run </tt></b>
+[root root]# <b class="userinput"><tt>cp /tmp/openacs-5.4.0/packages/acs-core-docs/www/files/qmail-send-log-run.txt /var/qmail/supervise/qmail-send/log/run</tt></b>
+[root root]# <b class="userinput"><tt>cp /tmp/openacs-5.4.0/packages/acs-core-docs/www/files/qmail-smtpd-run.txt /var/qmail/supervise/qmail-smtpd/run</tt></b>
+[root root]# <b class="userinput"><tt>cp /tmp/openacs-5.4.0/packages/acs-core-docs/www/files/qmail-smtpd-log-run.txt /var/qmail/supervise/qmail-smtpd/log/run</tt></b>
+[root root]# <b class="userinput"><tt>chmod 755 /var/qmail/supervise/qmail-send/run</tt></b>
+[root root]# <b class="userinput"><tt>chmod 755 /var/qmail/supervise/qmail-send/log/run</tt></b>
+[root root]# <b class="userinput"><tt>chmod 755 /var/qmail/supervise/qmail-smtpd/run</tt></b>
+[root root]# <b class="userinput"><tt>chmod 755 /var/qmail/supervise/qmail-smtpd/log/run</tt></b>
+[root root]# <b class="userinput"><tt>ln -s /var/qmail/supervise/qmail-send /var/qmail/supervise/qmail-smtpd /service</tt></b>
+[root root]# <b class="userinput"><tt>ln -s /var/qmail/supervise/qmail-send /var/qmail/supervise/qmail-smtpd /service</tt></b>
 <span class="action"><span class="action">mkdir -p /var/qmail/supervise/qmail-send/log
 mkdir -p /var/qmail/supervise/qmail-smtpd/log
 mkdir /var/log/qmail
 chown qmaill /var/log/qmail
-cp /tmp/openacs-5.2.3rc1/packages/acs-core-docs/www/files/qmailctl.txt /var/qmail/bin/qmailctl
+cp /tmp/openacs-5.4.0/packages/acs-core-docs/www/files/qmailctl.txt /var/qmail/bin/qmailctl
 chmod 755 /var/qmail/bin/qmailctl
 ln -s /var/qmail/bin/qmailctl /usr/bin
-cp /tmp/openacs-5.2.3rc1/packages/acs-core-docs/www/files/qmail-send-run.txt /var/qmail/supervise/qmail-send/run
-cp /tmp/openacs-5.2.3rc1/packages/acs-core-docs/www/files/qmail-send-log-run.txt /var/qmail/supervise/qmail-send/log/run
-cp /tmp/openacs-5.2.3rc1/packages/acs-core-docs/www/files/qmail-smtpd-run.txt /var/qmail/supervise/qmail-smtpd/run
-cp /tmp/openacs-5.2.3rc1/packages/acs-core-docs/www/files/qmail-smtpd-log-run.txt /var/qmail/supervise/qmail-smtpd/log/run
+cp /tmp/openacs-5.4.0/packages/acs-core-docs/www/files/qmail-send-run.txt /var/qmail/supervise/qmail-send/run
+cp /tmp/openacs-5.4.0/packages/acs-core-docs/www/files/qmail-send-log-run.txt /var/qmail/supervise/qmail-send/log/run
+cp /tmp/openacs-5.4.0/packages/acs-core-docs/www/files/qmail-smtpd-run.txt /var/qmail/supervise/qmail-smtpd/run
+cp /tmp/openacs-5.4.0/packages/acs-core-docs/www/files/qmail-smtpd-log-run.txt /var/qmail/supervise/qmail-smtpd/log/run
 chmod 755 /var/qmail/supervise/qmail-send/run
 chmod 755 /var/qmail/supervise/qmail-send/log/run
 chmod 755 /var/qmail/supervise/qmail-smtpd/run
 chmod 755 /var/qmail/supervise/qmail-smtpd/log/run
 ln -s /var/qmail/supervise/qmail-send /var/qmail/supervise/qmail-smtpd /service
-</span></span></pre><p>Wait ten seconds or so, and then verify that that the four qmail processes are running.  If uptimes don't rise above 1 second, this may indicate broken scripts that are continuously restarting.  In that case, start debugging by checking permissions.</p><pre class="screen">[root root]# <strong class="userinput"><code>qmailctl stat</code></strong>
+</span></span></pre><p>Wait ten seconds or so, and then verify that that the four qmail processes are running.  If uptimes don't rise above 1 second, this may indicate broken scripts that are continuously restarting.  In that case, start debugging by checking permissions.</p><pre class="screen">[root root]# <b class="userinput"><tt>qmailctl stat</tt></b>
 /service/qmail-send: up (pid 32700) 430 seconds
 /service/qmail-send/log: up (pid 32701) 430 seconds
 /service/qmail-smtpd: up (pid 32704) 430 seconds
 /service/qmail-smtpd/log: up (pid 32705) 430 seconds
 messages in queue: 0
 messages in queue but not yet preprocessed: 0
-[root root]#</pre><p>Further verify by sending and receiving email.  Incoming mail for root is stored in <code class="computeroutput">/var/qmail/alias/Maildir</code>. </p></li></ol></div></div><div class="navfooter"><hr><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="install-daemontools.html">Prev</a> </td><td width="20%" align="center"><a accesskey="h" href="index.html">Home</a></td><td width="40%" align="right"> <a accesskey="n" href="analog-install.html">Next</a></td></tr><tr><td width="40%" align="left">Install Daemontools (OPTIONAL) </td><td width="20%" align="center"><a accesskey="u" href="install-more-software.html">Up</a></td><td width="40%" align="right"> Install Analog web file analyzer</td></tr></table><hr><address><a href="mailto:docs@openacs.org">docs@openacs.org</a></address></div><a name="comments"></a><center><a href="http://openacs.org/doc/current/install-qmail.html#comments">View comments on this page at openacs.org</a></center></body></html>
+[root root]#</pre><p>Further verify by sending and receiving email.  Incoming mail for root is stored in <tt class="computeroutput">/var/qmail/alias/Maildir</tt>. </p></li></ol></div></div><div class="navfooter"><hr><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="install-daemontools.html">Prev</a> </td><td width="20%" align="center"><a accesskey="h" href="index.html">Home</a></td><td width="40%" align="right"> <a accesskey="n" href="analog-install.html">Next</a></td></tr><tr><td width="40%" align="left">Install Daemontools (OPTIONAL) </td><td width="20%" align="center"><a accesskey="u" href="install-more-software.html">Up</a></td><td width="40%" align="right"> Install Analog web file analyzer</td></tr></table><hr><address><a href="mailto:docs@openacs.org">docs@openacs.org</a></address></div><a name="comments"></a><center><a href="http://openacs.org/doc/current/install-qmail.html#comments">View comments on this page at openacs.org</a></center></body></html>
Index: openacs-4/packages/acs-core-docs/www/install-redhat.html
===================================================================
RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/install-redhat.html,v
diff -u -r1.34 -r1.34.4.1
--- openacs-4/packages/acs-core-docs/www/install-redhat.html	17 Jul 2006 05:38:31 -0000	1.34
+++ openacs-4/packages/acs-core-docs/www/install-redhat.html	3 Feb 2008 12:07:39 -0000	1.34.4.1
@@ -1,4 +1,5 @@
-<html><head><meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"><title>Appendix�A.�Install Red Hat 8/9</title><meta name="generator" content="DocBook XSL Stylesheets V1.70.1"><link rel="home" href="index.html" title="OpenACS Core Documentation"><link rel="up" href="acs-admin.html" title="Part�II.�Administrator's Guide"><link rel="previous" href="backups-with-cvs.html" title="Using CVS for backup-recovery"><link rel="next" href="install-more-software.html" title="Appendix�B.�Install additional supporting software"><link rel="stylesheet" href="openacs.css" type="text/css"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><a href="http://openacs.org"><img src="/doc/images/alex.jpg" border="0" alt="Alex logo"></a><table width="100%" summary="Navigation header" border="0"><tr><td width="20%" align="left"><a accesskey="p" href="backups-with-cvs.html">Prev</a> </td><th width="60%" align="center">Part�II.�Administrator's Guide</th><td width="20%" align="right"> <a accesskey="n" href="install-more-software.html">Next</a></td></tr></table><hr></div><div class="appendix" lang="en"><div class="titlepage"><div><div><h2 class="title"><a name="install-redhat"></a>Appendix�A.�Install Red Hat 8/9</h2></div></div></div><div class="authorblurb"><p>by <a href="mailto:joel@aufrecht.org" target="_top">Joel Aufrecht</a></p>
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html><head><meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"><title>Appendix�A.�Install Red Hat 8/9</title><meta name="generator" content="DocBook XSL Stylesheets V1.60.1"><link rel="home" href="index.html" title="OpenACS Core Documentation"><link rel="up" href="acs-admin.html" title="Part�II.�Administrator's Guide"><link rel="previous" href="backups-with-cvs.html" title="Using CVS for backup-recovery"><link rel="next" href="install-more-software.html" title="Appendix�B.�Install additional supporting software"><link rel="stylesheet" href="openacs.css" type="text/css"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><a href="http://openacs.org"><img src="/doc/images/alex.jpg" border="0" alt="Alex logo"></a><table width="100%" summary="Navigation header" border="0"><tr><td width="20%" align="left"><a accesskey="p" href="backups-with-cvs.html">Prev</a> </td><th width="60%" align="center">Part�II.�Administrator's Guide</th><td width="20%" align="right"> <a accesskey="n" href="install-more-software.html">Next</a></td></tr></table><hr></div><div class="appendix" lang="en"><div class="titlepage"><div><div><h2 class="title"><a name="install-redhat"></a>Appendix�A.�Install Red Hat 8/9</h2></div></div><div></div></div><div class="authorblurb"><p>by <a href="mailto:joel@aufrecht.org" target="_top">Joel Aufrecht</a></p>
           OpenACS docs are written by the named authors, and may be edited
           by OpenACS documentation staff.
         </div><p>This section takes a blank PC and sets up some supporting
@@ -15,8 +16,8 @@
 		</p></li><li><p> 		  
 		  (For Oracle) Starting an X server and running an X program remotely
 	  </p></li><li><p> 
-		  Basic file management using <code class="computeroutput">cp, rm,
-			mv,</code> and <code class="computeroutput">cd</code>
+		  Basic file management using <tt class="computeroutput">cp, rm,
+			mv,</tt> and <tt class="computeroutput">cd</tt>
 		</p></li><li><p> 
 		  Compiling a program using ./config and make.
 		</p></li></ul></div><p>
@@ -26,35 +27,35 @@
 	</p><div class="orderedlist"><ol type="1"><li><p><a name="install-first-step"></a>Unplug the network cable from your
           computer.  We don't want to connect to the network
           until we're sure the computer is secure.  
-           <a class="indexterm" name="id1001881"></a>
+           <a class="indexterm" name="id2954722"></a>
   (Wherever you see
-          the word secure, you should always read it as, "secure
+          the word secure, you should always read it as, &quot;secure
           enough for our purposes, given the amount of work we're
           willing to exert and the estimated risk and
-          consequences.")</p></li><li><p>Insert Red Hat 8.0 or 9.0 Disk 1 into the  
+          consequences.&quot;)</p></li><li><p>Insert Red Hat 8.0 or 9.0 Disk 1 into the  
 	  CD-ROM and reboot the computer</p></li><li><p>At the
-          <code class="computeroutput"><span class="guilabel"><span class="guilabel">boot:</span></span></code>
+          <tt class="computeroutput"><span class="guilabel"><span class="guilabel">boot:</span></span></tt>
           prompt, press Enter for a
           graphical install.  The text install is fairly different, so
           if you need to do that instead proceed with caution, because
           the guide won't match the steps.</p></li><li><p>Checking the media is probably a waste of
           time, so when it asks press Tab and
-          then Enter to skip it.</p></li><li><p>After the graphical introduction page loads, click <code class="computeroutput"><span class="guibutton"><span class="guibutton"><u><span class="accel">N</span></u>ext</span></span></code></p></li><li><p>Choose the language you want to use and then click
-<code class="computeroutput"><span class="guibutton"><span class="guibutton"><u><span class="accel">N</span></u>ext</span></span></code>
-</p></li><li><p>Select the keyboard layout you will use and Click <code class="computeroutput"><span class="guibutton"><span class="guibutton"><u><span class="accel">N</span></u>ext</span></span></code></p></li><li><p>Choose your mouse type and Click <code class="computeroutput"><span class="guibutton"><span class="guibutton"><u><span class="accel">N</span></u>ext</span></span></code></p></li><li><p>Red Hat has several templates for new
-          computers.  We'll start with the "Server" template and then
+          then Enter to skip it.</p></li><li><p>After the graphical introduction page loads, click <tt class="computeroutput"><span class="guibutton"><span class="guibutton"><u><span class="accel">N</span></u>ext</span></span></tt></p></li><li><p>Choose the language you want to use and then click
+<tt class="computeroutput"><span class="guibutton"><span class="guibutton"><u><span class="accel">N</span></u>ext</span></span></tt>
+</p></li><li><p>Select the keyboard layout you will use and Click <tt class="computeroutput"><span class="guibutton"><span class="guibutton"><u><span class="accel">N</span></u>ext</span></span></tt></p></li><li><p>Choose your mouse type and Click <tt class="computeroutput"><span class="guibutton"><span class="guibutton"><u><span class="accel">N</span></u>ext</span></span></tt></p></li><li><p>Red Hat has several templates for new
+          computers.  We'll start with the &quot;Server&quot; template and then
           fine-tune it during the rest of the install.  Choose
-	<code class="computeroutput"><span class="guilabel"><span class="guilabel">Server</span></span></code>
+	<tt class="computeroutput"><span class="guilabel"><span class="guilabel">Server</span></span></tt>
 	and click
-	<code class="computeroutput"><span class="guibutton"><span class="guibutton"><u><span class="accel">N</span></u>ext</span></span></code>.</p></li><li><p>Reformat the hard drive.  If you know what you're doing,
+	<tt class="computeroutput"><span class="guibutton"><span class="guibutton"><u><span class="accel">N</span></u>ext</span></span></tt>.</p></li><li><p>Reformat the hard drive.  If you know what you're doing,
 	do this step on your own.  Otherwise:  we're going to let the
 	installer wipe out the everything on the main hard drive and then arrange things to
-	its liking.</p><div class="orderedlist"><ol type="a"><li><p>Choose <code class="computeroutput"><span class="guilabel"><span class="guilabel">Automatically Partition</span></span></code>
-	  and click <code class="computeroutput"><span class="guibutton"><span class="guibutton"><u><span class="accel">N</span></u>ext</span></span></code></p></li><li><p>Uncheck
-<code class="computeroutput"><span class="guilabel"><span class="guilabel">Re<u><span class="accel">v</span></u>iew (and modify if needed) the partitions created</span></span></code> and click <code class="computeroutput"><span class="guibutton"><span class="guibutton"><u><span class="accel">N</span></u>ext</span></span></code></p></li><li><p>On the pop-up window asking "Are you sure
-	  you want to do this?" click
-	  <code class="computeroutput"><span class="guibutton"><span class="guibutton"><u><span class="accel">Y</span></u>es</span></span></code>
-	  IF YOU ARE WIPING YOUR HARD DRIVE.</p></li><li><p>Click <code class="computeroutput"><span class="guibutton"><span class="guibutton"><u><span class="accel">N</span></u>ext</span></span></code> on the boot loader screen</p></li></ol></div></li><li><p>Configure Networking.  <a class="indexterm" name="id940779"></a>
+	its liking.</p><div class="orderedlist"><ol type="a"><li><p>Choose <tt class="computeroutput"><span class="guilabel"><span class="guilabel">Automatically Partition</span></span></tt>
+	  and click <tt class="computeroutput"><span class="guibutton"><span class="guibutton"><u><span class="accel">N</span></u>ext</span></span></tt></p></li><li><p>Uncheck
+<tt class="computeroutput"><span class="guilabel"><span class="guilabel">Re<u><span class="accel">v</span></u>iew (and modify if needed) the partitions created</span></span></tt> and click <tt class="computeroutput"><span class="guibutton"><span class="guibutton"><u><span class="accel">N</span></u>ext</span></span></tt></p></li><li><p>On the pop-up window asking &quot;Are you sure
+	  you want to do this?&quot; click
+	  <tt class="computeroutput"><span class="guibutton"><span class="guibutton"><u><span class="accel">Y</span></u>es</span></span></tt>
+	  IF YOU ARE WIPING YOUR HARD DRIVE.</p></li><li><p>Click <tt class="computeroutput"><span class="guibutton"><span class="guibutton"><u><span class="accel">N</span></u>ext</span></span></tt> on the boot loader screen</p></li></ol></div></li><li><p>Configure Networking.  <a class="indexterm" name="id2984609"></a>
 Again, if you know what you're doing, do this step
           yourself, being sure to note the firewall holes. Otherwise,
           follow the instructions in this step to set up a computer directly connected to the internet with a dedicated IP address.</p><div class="orderedlist"><ol type="a"><li><p>DHCP is a system by which a computer that
@@ -63,21 +64,21 @@
 IP address (if it doesn't, it will be tricky to access the OpenACS
 service from the outside world), we're going to set up that address.
 If you don't know your netmask, 255.255.255.0 is usually a pretty safe
-guess.  Click <code class="computeroutput"><span class="guibutton"><span class="guibutton">Edit</span></span></code>, uncheck <code class="computeroutput"><span class="guilabel"><span class="guilabel">Configure using <u><span class="accel">D</span></u>HCP</span></span></code>
-and type in your IP and netmask.  Click <code class="computeroutput"><span class="guibutton"><span class="guibutton"><u><span class="accel">O</span></u>k</span></span></code>.</p></li><li><p> Type in your host
-name, gateway, and DNS server(s).  Then click <code class="computeroutput"><span class="guibutton"><span class="guibutton"><u><span class="accel">N</span></u>ext</span></span></code>.</p></li><li><p>We're going to use the firewall template for high
+guess.  Click <tt class="computeroutput"><span class="guibutton"><span class="guibutton">Edit</span></span></tt>, uncheck <tt class="computeroutput"><span class="guilabel"><span class="guilabel">Configure using <u><span class="accel">D</span></u>HCP</span></span></tt>
+and type in your IP and netmask.  Click <tt class="computeroutput"><span class="guibutton"><span class="guibutton"><u><span class="accel">O</span></u>k</span></span></tt>.</p></li><li><p> Type in your host
+name, gateway, and DNS server(s).  Then click <tt class="computeroutput"><span class="guibutton"><span class="guibutton"><u><span class="accel">N</span></u>ext</span></span></tt>.</p></li><li><p>We're going to use the firewall template for high
 security, meaning that we'll block almost all incoming traffic.  Then
 we'll add a few holes to the firewall for services which we need and
-know are secure.  Choose <code class="computeroutput"><span class="guilabel"><span class="guilabel">Hi<u><span class="accel">g</span></u>h</span></span></code>
+know are secure.  Choose <tt class="computeroutput"><span class="guilabel"><span class="guilabel">Hi<u><span class="accel">g</span></u>h</span></span></tt>
 security level. Check
-<code class="computeroutput"><span class="guilabel"><span class="guilabel">WWW</span></span></code>,
-<code class="computeroutput"><span class="guilabel"><span class="guilabel">SSH</span></span></code>, and
-<code class="computeroutput"><span class="guilabel"><span class="guilabel">Mail (SMTP)</span></span></code>.  In the <code class="computeroutput"><span class="guilabel"><span class="guilabel">Other <u><span class="accel">p</span></u>orts</span></span></code>
-box, enter <strong class="userinput"><code>443, 8000, 8443</code></strong>.  Click
-<code class="computeroutput"><span class="guibutton"><span class="guibutton"><u><span class="accel">N</span></u>ext</span></span></code>.
-Port 443 is for https (http over ssl), and 8000 and 8443 are http and https access to the development server we'll be setting up.</p></li></ol></div></li><li><p><a class="indexterm" name="id969965"></a>Select any additional languages you want the
+<tt class="computeroutput"><span class="guilabel"><span class="guilabel">WWW</span></span></tt>,
+<tt class="computeroutput"><span class="guilabel"><span class="guilabel">SSH</span></span></tt>, and
+<tt class="computeroutput"><span class="guilabel"><span class="guilabel">Mail (SMTP)</span></span></tt>.  In the <tt class="computeroutput"><span class="guilabel"><span class="guilabel">Other <u><span class="accel">p</span></u>orts</span></span></tt>
+box, enter <b class="userinput"><tt>443, 8000, 8443</tt></b>.  Click
+<tt class="computeroutput"><span class="guibutton"><span class="guibutton"><u><span class="accel">N</span></u>ext</span></span></tt>.
+Port 443 is for https (http over ssl), and 8000 and 8443 are http and https access to the development server we'll be setting up.</p></li></ol></div></li><li><p><a class="indexterm" name="id2984816"></a>Select any additional languages you want the
 	  computer to support and then click
-	  <code class="computeroutput"><span class="guibutton"><span class="guibutton"><u><span class="accel">N</span></u>ext</span></span></code></p></li><li><p>Choose your time zone and click <code class="computeroutput"><span class="guibutton"><span class="guibutton"><u><span class="accel">N</span></u>ext</span></span></code>.</p></li><li><p>Type in a root
+	  <tt class="computeroutput"><span class="guibutton"><span class="guibutton"><u><span class="accel">N</span></u>ext</span></span></tt></p></li><li><p>Choose your time zone and click <tt class="computeroutput"><span class="guibutton"><span class="guibutton"><u><span class="accel">N</span></u>ext</span></span></tt>.</p></li><li><p>Type in a root
 password, twice.</p></li><li><p>On the Package selection page, we're going to
 uncheck a lot of packages that install software we don't need, and add
 packages that have stuff we do need.  You should install everything
@@ -87,54 +88,54 @@
 risk that's still screened by the firewall, or a resource hog.  Just
 don't install a database or web server, because that would conflict
 with the database and web server we'll install later.
-</p><table class="simplelist" border="0" summary="Simple list"><tr><td>check <code class="computeroutput"><span class="guilabel"><span class="guilabel">Editors</span></span></code> (this installs emacs<a class="indexterm" name="id1009153"></a>),</td></tr><tr><td>click <code class="computeroutput"><span class="guilabel"><span class="guilabel">Details</span></span></code> next to <code class="computeroutput"><span class="guilabel"><span class="guilabel">Text-based Internet</span></span></code>, check <code class="computeroutput"><span class="guilabel"><span class="guilabel">lynx</span></span></code>, and click <code class="computeroutput"><span class="guibutton"><span class="guibutton"><u><span class="accel">O</span></u>K</span></span></code>;</td></tr><tr><td>check <code class="computeroutput"><span class="guilabel"><span class="guilabel">Authoring and Publishing</span></span></code> (<a class="indexterm" name="id963900"></a>this installs docbook),</td></tr><tr><td>uncheck <code class="computeroutput"><span class="guilabel"><span class="guilabel">Server Configuration Tools</span></span></code>,</td></tr><tr><td>uncheck <code class="computeroutput"><span class="guilabel"><span class="guilabel">Web Server</span></span></code>,</td></tr><tr><td>uncheck <code class="computeroutput"><span class="guilabel"><span class="guilabel">Windows File Server</span></span></code>,</td></tr><tr><td>check <code class="computeroutput"><span class="guilabel"><span class="guilabel">SQL Database Server</span></span></code> (this installs PostgreSQL),</td></tr><tr><td>check <code class="computeroutput"><span class="guilabel"><span class="guilabel">Development Tools</span></span></code> (this installs gmake and other build tools),</td></tr><tr><td>uncheck <code class="computeroutput"><span class="guilabel"><span class="guilabel">Administration Tools</span></span></code>, and</td></tr><tr><td>uncheck <code class="computeroutput"><span class="guilabel"><span class="guilabel">Printing Support</span></span></code>.</td></tr></table><p>At the bottom, check <code class="computeroutput"><span class="guilabel"><span class="guilabel"><u><span class="accel">S</span></u>elect Individual Packages</span></span></code> and click <code class="computeroutput"><span class="guibutton"><span class="guibutton"><u><span class="accel">N</span></u>ext</span></span></code></p></li><li><p>We need to fine-tune the exact list of packages.
+</p><table class="simplelist" border="0" summary="Simple list"><tr><td>check <tt class="computeroutput"><span class="guilabel"><span class="guilabel">Editors</span></span></tt> (this installs emacs<a class="indexterm" name="id2988806"></a>),</td></tr><tr><td>click <tt class="computeroutput"><span class="guilabel"><span class="guilabel">Details</span></span></tt> next to <tt class="computeroutput"><span class="guilabel"><span class="guilabel">Text-based Internet</span></span></tt>, check <tt class="computeroutput"><span class="guilabel"><span class="guilabel">lynx</span></span></tt>, and click <tt class="computeroutput"><span class="guibutton"><span class="guibutton"><u><span class="accel">O</span></u>K</span></span></tt>;</td></tr><tr><td>check <tt class="computeroutput"><span class="guilabel"><span class="guilabel">Authoring and Publishing</span></span></tt> (<a class="indexterm" name="id2988883"></a>this installs docbook),</td></tr><tr><td>uncheck <tt class="computeroutput"><span class="guilabel"><span class="guilabel">Server Configuration Tools</span></span></tt>,</td></tr><tr><td>uncheck <tt class="computeroutput"><span class="guilabel"><span class="guilabel">Web Server</span></span></tt>,</td></tr><tr><td>uncheck <tt class="computeroutput"><span class="guilabel"><span class="guilabel">Windows File Server</span></span></tt>,</td></tr><tr><td>check <tt class="computeroutput"><span class="guilabel"><span class="guilabel">SQL Database Server</span></span></tt> (this installs PostgreSQL),</td></tr><tr><td>check <tt class="computeroutput"><span class="guilabel"><span class="guilabel">Development Tools</span></span></tt> (this installs gmake and other build tools),</td></tr><tr><td>uncheck <tt class="computeroutput"><span class="guilabel"><span class="guilabel">Administration Tools</span></span></tt>, and</td></tr><tr><td>uncheck <tt class="computeroutput"><span class="guilabel"><span class="guilabel">Printing Support</span></span></tt>.</td></tr></table><p>At the bottom, check <tt class="computeroutput"><span class="guilabel"><span class="guilabel"><u><span class="accel">S</span></u>elect Individual Packages</span></span></tt> and click <tt class="computeroutput"><span class="guibutton"><span class="guibutton"><u><span class="accel">N</span></u>ext</span></span></tt></p></li><li><p>We need to fine-tune the exact list of packages.
 The same rules apply as in the last step - you can add more stuff, but
 you shouldn't remove anything the guide adds.  We're going to go
 through all the packages in one big list, so select
-<code class="computeroutput"><span class="guilabel"><span class="guilabel"><u><span class="accel">F</span></u>lat
-View</span></span></code> and wait. In a minute, a
-list of packages will appear.</p><table class="simplelist" border="0" summary="Simple list"><tr><td>uncheck <code class="computeroutput"><span class="guilabel"><span class="guilabel">apmd</span></span></code> (monitors power, not very useful for servers), </td></tr><tr><td>check <code class="computeroutput"><span class="guilabel"><span class="guilabel">ImageMagick</span></span></code> (required for the <a class="indexterm" name="id1075753"></a>photo-album packages, </td></tr><tr><td>uncheck<code class="computeroutput"><span class="guilabel"><span class="guilabel">isdn4k-utils</span></span></code> (unless you are using isdn, this installs a useless daemon), </td></tr><tr><td>check <code class="computeroutput"><span class="guilabel"><span class="guilabel">mutt</span></span></code> (a mail program that reads Maildir),</td></tr><tr><td>uncheck <code class="computeroutput"><span class="guilabel"><span class="guilabel">nfs-utils</span></span></code> (nfs is a major security risk), </td></tr><tr><td>uncheck <code class="computeroutput"><span class="guilabel"><span class="guilabel">pam-devel</span></span></code> (I don't remember why, but we don't want this), </td></tr><tr><td>uncheck <code class="computeroutput"><span class="guilabel"><span class="guilabel">portmap</span></span></code>, </td></tr><tr><td>uncheck <code class="computeroutput"><span class="guilabel"><span class="guilabel">postfix</span></span></code> (this is an MTA, but we're going to install qmail later), </td></tr><tr><td>check  <code class="computeroutput"><span class="guilabel"><span class="guilabel">postgresql-devel</span></span></code>,</td></tr><tr><td>uncheck <code class="computeroutput"><span class="guilabel"><span class="guilabel">rsh</span></span></code> (rsh is a security hole), </td></tr><tr><td>uncheck <code class="computeroutput"><span class="guilabel"><span class="guilabel">sendmail</span></span></code> (sendmail is an insecure MTA; we're going to install qmail instead later),</td></tr><tr><td>check <code class="computeroutput"><span class="guilabel"><span class="guilabel">tcl</span></span></code> (we need tcl), and </td></tr><tr><td>uncheck <code class="computeroutput"><span class="guilabel"><span class="guilabel">xinetd</span></span></code> (xinetd handles incoming tcp connections.  We'll install a different, more secure program, ucspi-tcp).</td></tr><tr><td>Click <code class="computeroutput"><span class="guibutton"><span class="guibutton"><u><span class="accel">N</span></u>ext</span></span></code></td></tr></table></li><li><p>Red Hat isn't completely happy with the combination
+<tt class="computeroutput"><span class="guilabel"><span class="guilabel"><u><span class="accel">F</span></u>lat
+View</span></span></tt> and wait. In a minute, a
+list of packages will appear.</p><table class="simplelist" border="0" summary="Simple list"><tr><td>uncheck <tt class="computeroutput"><span class="guilabel"><span class="guilabel">apmd</span></span></tt> (monitors power, not very useful for servers), </td></tr><tr><td>check <tt class="computeroutput"><span class="guilabel"><span class="guilabel">ImageMagick</span></span></tt> (required for the <a class="indexterm" name="id2989094"></a>photo-album packages, </td></tr><tr><td>uncheck<tt class="computeroutput"><span class="guilabel"><span class="guilabel">isdn4k-utils</span></span></tt> (unless you are using isdn, this installs a useless daemon), </td></tr><tr><td>check <tt class="computeroutput"><span class="guilabel"><span class="guilabel">mutt</span></span></tt> (a mail program that reads Maildir),</td></tr><tr><td>uncheck <tt class="computeroutput"><span class="guilabel"><span class="guilabel">nfs-utils</span></span></tt> (nfs is a major security risk), </td></tr><tr><td>uncheck <tt class="computeroutput"><span class="guilabel"><span class="guilabel">pam-devel</span></span></tt> (I don't remember why, but we don't want this), </td></tr><tr><td>uncheck <tt class="computeroutput"><span class="guilabel"><span class="guilabel">portmap</span></span></tt>, </td></tr><tr><td>uncheck <tt class="computeroutput"><span class="guilabel"><span class="guilabel">postfix</span></span></tt> (this is an MTA, but we're going to install qmail later), </td></tr><tr><td>check  <tt class="computeroutput"><span class="guilabel"><span class="guilabel">postgresql-devel</span></span></tt>,</td></tr><tr><td>uncheck <tt class="computeroutput"><span class="guilabel"><span class="guilabel">rsh</span></span></tt> (rsh is a security hole), </td></tr><tr><td>uncheck <tt class="computeroutput"><span class="guilabel"><span class="guilabel">sendmail</span></span></tt> (sendmail is an insecure MTA; we're going to install qmail instead later),</td></tr><tr><td>check <tt class="computeroutput"><span class="guilabel"><span class="guilabel">tcl</span></span></tt> (we need tcl), and </td></tr><tr><td>uncheck <tt class="computeroutput"><span class="guilabel"><span class="guilabel">xinetd</span></span></tt> (xinetd handles incoming tcp connections.  We'll install a different, more secure program, ucspi-tcp).</td></tr><tr><td>Click <tt class="computeroutput"><span class="guibutton"><span class="guibutton"><u><span class="accel">N</span></u>ext</span></span></tt></td></tr></table></li><li><p>Red Hat isn't completely happy with the combination
 of packages we've selected, and wants to satisfy some dependencies.
 Don't let it.  On the next screen, choose
-<code class="computeroutput"><span class="guilabel"><span class="guilabel">I<u><span class="accel">g</span></u>nore Package
-Dependencies</span></span></code> and click
-<code class="computeroutput"><span class="guibutton"><span class="guibutton"><u><span class="accel">N</span></u>ext</span></span></code>.
+<tt class="computeroutput"><span class="guilabel"><span class="guilabel">I<u><span class="accel">g</span></u>nore Package
+Dependencies</span></span></tt> and click
+<tt class="computeroutput"><span class="guibutton"><span class="guibutton"><u><span class="accel">N</span></u>ext</span></span></tt>.
 </p></li><li><p>Click
-        <code class="computeroutput"><span class="guibutton"><span class="guibutton"><u><span class="accel">N</span></u>ext</span></span></code>
+        <tt class="computeroutput"><span class="guibutton"><span class="guibutton"><u><span class="accel">N</span></u>ext</span></span></tt>
         to start the copying of files.</p></li><li><p>Wait. Insert Disk 2 when
 asked.</p></li><li><p>Wait. Insert Disk 3 when asked.</p></li><li><p>If you know how to use it, create a boot
         disk.  Since you can also boot into recovery mode with the
         Install CDs, this is less useful than it used to be, and we
-        won't bother.  Select <code class="computeroutput"><span class="guilabel"><span class="guilabel">No,I <u><span class="accel">d</span></u>o not want to create a boot disk</span></span></code> and click <code class="computeroutput"><span class="guibutton"><span class="guibutton"><u><span class="accel">N</span></u>ext</span></span></code>.</p></li><li><p>Click <code class="computeroutput"><span class="guilabel"><span class="guilabel"><u><span class="accel">E</span></u>xit</span></span></code>, remove the CD, and watch the
+        won't bother.  Select <tt class="computeroutput"><span class="guilabel"><span class="guilabel">No,I <u><span class="accel">d</span></u>o not want to create a boot disk</span></span></tt> and click <tt class="computeroutput"><span class="guibutton"><span class="guibutton"><u><span class="accel">N</span></u>ext</span></span></tt>.</p></li><li><p>Click <tt class="computeroutput"><span class="guilabel"><span class="guilabel"><u><span class="accel">E</span></u>xit</span></span></tt>, remove the CD, and watch the
 computer reboot.
 </p></li><li><p>After it finishes rebooting and shows the login
-	  prompt, log in:</p><pre class="screen">yourserver login: <strong class="userinput"><code>root</code></strong>
+	  prompt, log in:</p><pre class="screen">yourserver login: <b class="userinput"><tt>root</tt></b>
 Password:
 [root root]#</pre></li><li><p>Install any security patches.  For example, insert your CD with
-        patches, mount it with <code class="computeroutput">mount
-        /dev/cdrom</code>, then <code class="computeroutput">cd
-        /mnt/cdrom</code>, then <code class="computeroutput">rpm -UVH
-        *rpm</code>.  Both Red Hat 8.0 and 9.0 have had both
+        patches, mount it with <tt class="computeroutput">mount
+        /dev/cdrom</tt>, then <tt class="computeroutput">cd
+        /mnt/cdrom</tt>, then <tt class="computeroutput">rpm -UVH
+        *rpm</tt>.  Both Red Hat 8.0 and 9.0 have had both
         kernel and openssl/openssh root exploits, so you should be
         upgrading all of that.  Since you are upgrading the kernel,
         reboot after this step.
 </p></li><li><p>Lock down SSH</p><div class="orderedlist"><ol type="a"><li><p>
-              <a class="indexterm" name="id1076069"></a>
+              <a class="indexterm" name="id2989508"></a>
               SSH is the protocol we use to connect
               securely to the computer (replacing telnet, which is
               insecure).  sshd is the daemon that listens for incoming
               ssh connections.  As a security precaution, we are now going
               to tell ssh not to allow anyone to connect directly to this
               computer as root.  Type this into the shell:
-            </p><pre class="screen"><strong class="userinput"><code>emacs /etc/ssh/sshd_config</code></strong></pre></li><li><p>Search for the word "root" by typing <strong class="userinput"><code>C-s</code></strong> (that's emacs-speak for control-s) and then <strong class="userinput"><code>root</code></strong>.</p></li><li><p>Make the following changes:</p><table class="simplelist" border="0" summary="Simple list"><tr><td><code class="computeroutput">#Protocol 2,1</code> to
-                <code class="computeroutput">Protocol 2</code> 
-                (this prevents any connections via SSH 1, which is insecure)</td></tr><tr><td><code class="computeroutput">#PermitRootLogin yes</code> to
-                <code class="computeroutput">PermitRootLogin no</code> 
+            </p><pre class="screen"><b class="userinput"><tt>emacs /etc/ssh/sshd_config</tt></b></pre></li><li><p>Search for the word &quot;root&quot; by typing <b class="userinput"><tt>C-s</tt></b> (that's emacs-speak for control-s) and then <b class="userinput"><tt>root</tt></b>.</p></li><li><p>Make the following changes:</p><table class="simplelist" border="0" summary="Simple list"><tr><td><tt class="computeroutput">#Protocol 2,1</tt> to
+                <tt class="computeroutput">Protocol 2</tt> 
+                (this prevents any connections via SSH 1, which is insecure)</td></tr><tr><td><tt class="computeroutput">#PermitRootLogin yes</tt> to
+                <tt class="computeroutput">PermitRootLogin no</tt> 
                 (this prevents the root user from logging in remotely via
                 ssh.  If you do this, be sure to create a remote access
-                account, such as "remadmin", which you can use to get ssh
-                before using "su" to become root)</td></tr><tr><td><code class="computeroutput">#PermitEmptyPasswords no</code> to <code class="computeroutput">PermitEmptyPasswords no</code>
-                (this blocks passwordless accounts) and save and exit by typing <strong class="userinput"><code>C-x C-s C-x C-c</code></strong></td></tr></table></li><li><p>Restart sshd so that the change takes effect.</p><pre class="screen"><strong class="userinput"><code>service sshd restart</code></strong></pre></li></ol></div></li><li><p>
+                account, such as &quot;remadmin&quot;, which you can use to get ssh
+                before using &quot;su&quot; to become root)</td></tr><tr><td><tt class="computeroutput">#PermitEmptyPasswords no</tt> to <tt class="computeroutput">PermitEmptyPasswords no</tt>
+                (this blocks passwordless accounts) and save and exit by typing <b class="userinput"><tt>C-x C-s C-x C-c</tt></b></td></tr></table></li><li><p>Restart sshd so that the change takes effect.</p><pre class="screen"><b class="userinput"><tt>service sshd restart</tt></b></pre></li></ol></div></li><li><p>
          Red Hat still installed a few services we don't need, and
          which can be security holes.  Use the service command to turn
          them off, and then use chkconfig to automatically edit the
@@ -148,34 +149,34 @@
          (The reason for this discrepencies is that, while daemontools
          is better, it's a pain in the ass to deal with and nobody's
          had any trouble leaving PostgreSQL the way it is.)
-       </p><pre class="screen">[root root]# <strong class="userinput"><code>service pcmcia stop</code></strong>
-[root root]# <strong class="userinput"><code>service netfs stop</code></strong>
-[root root]# <strong class="userinput"><code>chkconfig --del pcmcia</code></strong>
-[root root]# <strong class="userinput"><code>chkconfig --del netfs</code></strong>
+       </p><pre class="screen">[root root]# <b class="userinput"><tt>service pcmcia stop</tt></b>
+[root root]# <b class="userinput"><tt>service netfs stop</tt></b>
+[root root]# <b class="userinput"><tt>chkconfig --del pcmcia</tt></b>
+[root root]# <b class="userinput"><tt>chkconfig --del netfs</tt></b>
 [root root]#
 <span class="action"><span class="action">service pcmcia stop
 service netfs stop
 chkconfig --del pcmcia
 chkconfig --del netfs</span></span></pre><p>If you installed PostgreSQL, do also
-<code class="computeroutput">service postgresql start</code> and <code class="computeroutput">chkconfig --add postgresql</code>.</p></li><li><p>Plug in the network cable.</p></li><li><p>Verify that you have connectivity by going to another
+<tt class="computeroutput">service postgresql start</tt> and <tt class="computeroutput">chkconfig --add postgresql</tt>.</p></li><li><p>Plug in the network cable.</p></li><li><p>Verify that you have connectivity by going to another
           computer and ssh'ing to
           <span class="replaceable"><span class="replaceable">yourserver</span></span>, logging in as
-          remadmin, and promoting yourself to root:</p><pre class="screen">[joeuser@someotherserver]$ <strong class="userinput"><code> ssh <span class="replaceable"><span class="replaceable">remadmin@yourserver.test</span></span></code></strong>
+          remadmin, and promoting yourself to root:</p><pre class="screen">[joeuser@someotherserver]$ <b class="userinput"><tt> ssh <span class="replaceable"><span class="replaceable">remadmin@yourserver.test</span></span></tt></b>
 The authenticity of host 'yourserver.test (1.2.3.4)' can't be established.
 DSA key fingerprint is 10:b9:b6:10:79:46:14:c8:2d:65:ae:c1:61:4b:a5:a5.
-Are you sure you want to continue connecting (yes/no)? <strong class="userinput"><code>yes</code></strong>
+Are you sure you want to continue connecting (yes/no)? <b class="userinput"><tt>yes</tt></b>
 Warning: Permanently added 'yourserver.test (1.2.3.4)' (DSA) to the list of known hosts.
 Password:
 Last login: Mon Mar  3 21:15:27 2003 from host-12-01.dsl-sea.seanet.com
-[remadmin remadmin]$ <strong class="userinput"><code>su -</code></strong>
+[remadmin remadmin]$ <b class="userinput"><tt>su -</tt></b>
 Password: 
 [root root]#</pre></li><li><p>If you didn't burn a CD of patches and use it, can still
           download and install the necessary patches.  Here's how to
           do it for the kernel; you should also check for other
           critical packages.</p><p>Upgrade the kernel to fix a security hole.  The default
           Red Hat 8.0 system kernel (2.4.18-14, which you can check
-          with <strong class="userinput"><code>uname -a</code></strong>) has several <a href="https://rhn.redhat.com/errata/RHSA-2003-098.html" target="_top">security problems</a>.  Download the new kernel, install it, and reboot.</p><pre class="screen">[root root]# <strong class="userinput"><code>cd /var/tmp</code></strong>
-[root tmp]# <strong class="userinput"><code>wget http://updates.redhat.com/7.1/en/os/i686/kernel-2.4.18-27.7.x.i686.rpm</code></strong>
+          with <b class="userinput"><tt>uname -a</tt></b>) has several <a href="https://rhn.redhat.com/errata/RHSA-2003-098.html" target="_top">security problems</a>.  Download the new kernel, install it, and reboot.</p><pre class="screen">[root root]# <b class="userinput"><tt>cd /var/tmp</tt></b>
+[root tmp]# <b class="userinput"><tt>wget http://updates.redhat.com/7.1/en/os/i686/kernel-2.4.18-27.7.x.i686.rpm</tt></b>
 --20:39:00--  http://updates.redhat.com/7.1/en/os/i686/kernel-2.4.18-27.7.x.i686.rpm
            =&gt; `kernel-2.4.18-27.7.x.i686.rpm'
 Resolving updates.redhat.com... done.
@@ -187,11 +188,11 @@
 
 20:41:39 (78.38 KB/s) - `kernel-2.4.18-27.7.x.i686.rpm' saved [12736430/12736430]
 
-root@yourserver tmp]# <strong class="userinput"><code>rpm -Uvh kernel-2.4.18-27.7.x.i686.rpm</code></strong>
+root@yourserver tmp]# <b class="userinput"><tt>rpm -Uvh kernel-2.4.18-27.7.x.i686.rpm</tt></b>
 warning: kernel-2.4.18-27.7.x.i686.rpm: V3 DSA signature: NOKEY, key ID db42a60e
 Preparing...                ########################################### [100%]
    1:kernel                 ########################################### [100%]
-[root tmp]# <strong class="userinput"><code>reboot</code></strong>
+[root tmp]# <b class="userinput"><tt>reboot</tt></b>
 
 Broadcast message from root (pts/0) (Sat May  3 20:46:39 2003):
 
Index: openacs-4/packages/acs-core-docs/www/install-resources.html
===================================================================
RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/install-resources.html,v
diff -u -r1.11 -r1.11.4.1
--- openacs-4/packages/acs-core-docs/www/install-resources.html	17 Jul 2006 05:38:31 -0000	1.11
+++ openacs-4/packages/acs-core-docs/www/install-resources.html	3 Feb 2008 12:07:39 -0000	1.11.4.1
@@ -1,6 +1,7 @@
-<html><head><meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"><title>Resources</title><meta name="generator" content="DocBook XSL Stylesheets V1.70.1"><link rel="home" href="index.html" title="OpenACS Core Documentation"><link rel="up" href="credits.html" title="Appendix�C.�Credits"><link rel="previous" href="os-security.html" title="Security Information"><link rel="next" href="acs-package-dev.html" title="Part�III.�For OpenACS Package Developers"><link rel="stylesheet" href="openacs.css" type="text/css"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><a href="http://openacs.org"><img src="/doc/images/alex.jpg" border="0" alt="Alex logo"></a><table width="100%" summary="Navigation header" border="0"><tr><td width="20%" align="left"><a accesskey="p" href="os-security.html">Prev</a> </td><th width="60%" align="center">Appendix�C.�Credits</th><td width="20%" align="right"> <a accesskey="n" href="acs-package-dev.html">Next</a></td></tr></table><hr></div><div class="section" lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="install-resources"></a>Resources</h2></div></div></div><p>
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html><head><meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"><title>Resources</title><meta name="generator" content="DocBook XSL Stylesheets V1.60.1"><link rel="home" href="index.html" title="OpenACS Core Documentation"><link rel="up" href="credits.html" title="Appendix�C.�Credits"><link rel="previous" href="os-security.html" title="Security Information"><link rel="next" href="acs-package-dev.html" title="Part�III.�For OpenACS Package Developers"><link rel="stylesheet" href="openacs.css" type="text/css"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><a href="http://openacs.org"><img src="/doc/images/alex.jpg" border="0" alt="Alex logo"></a><table width="100%" summary="Navigation header" border="0"><tr><td width="20%" align="left"><a accesskey="p" href="os-security.html">Prev</a> </td><th width="60%" align="center">Appendix�C.�Credits</th><td width="20%" align="right"> <a accesskey="n" href="acs-package-dev.html">Next</a></td></tr></table><hr></div><div class="section" lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="install-resources"></a>Resources</h2></div></div><div></div></div><p>
       Here are some resources that OpenACS users have found useful.
-    </p><div class="section" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="install-resources-books"></a>Books</h3></div></div></div><div class="itemizedlist"><ul type="disc"><li><p>
+    </p><div class="section" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="install-resources-books"></a>Books</h3></div></div><div></div></div><div class="itemizedlist"><ul type="disc"><li><p>
 
             <a href="http://www.amazon.com/exec/obidos/ASIN/1558605347/photonetA" target="_top">Philip
             and Alex's Guide to Web Publishing</a> - A very readable
@@ -15,8 +16,8 @@
           </p></li><li><p>
 
             <a href="http://www.amazon.com/exec/obidos/ASIN/0130206016/photonetA" target="_top">UNIX
-            System Administration Handbook</a> (formerly the "red book"
-            - now the "purple" book)
+            System Administration Handbook</a> (formerly the &quot;red book&quot;
+            - now the &quot;purple&quot; book)
 
           </p></li><li><p> 
 
@@ -33,7 +34,7 @@
             <a href="http://www.amazon.com/exec/obidos/ASIN/1565925858/photonetA" target="_top">Linux
               in a Nutshell</a> 
 
-          </p></li></ul></div><div class="section" lang="en"><div class="titlepage"><div><div><h4 class="title"><a name="install-resources-web"></a>Web Sites</h4></div></div></div><div class="itemizedlist"><ul type="disc"><li><p>
+          </p></li></ul></div><div class="section" lang="en"><div class="titlepage"><div><div><h4 class="title"><a name="install-resources-web"></a>Web Sites</h4></div></div><div></div></div><div class="itemizedlist"><ul type="disc"><li><p>
 
             <a href="http://www.geek-girl.com/unix.html" target="_top">The UNIX
               Reference Desk</a>
Index: openacs-4/packages/acs-core-docs/www/install-squirrelmail.html
===================================================================
RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/install-squirrelmail.html,v
diff -u -r1.10 -r1.10.4.1
--- openacs-4/packages/acs-core-docs/www/install-squirrelmail.html	17 Jul 2006 05:38:31 -0000	1.10
+++ openacs-4/packages/acs-core-docs/www/install-squirrelmail.html	3 Feb 2008 12:07:39 -0000	1.10.4.1
@@ -1,10 +1,11 @@
-<html><head><meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"><title>Install Squirrelmail for use as a webmail system for OpenACS</title><meta name="generator" content="DocBook XSL Stylesheets V1.70.1"><link rel="home" href="index.html" title="OpenACS Core Documentation"><link rel="up" href="install-more-software.html" title="Appendix�B.�Install additional supporting software"><link rel="previous" href="install-php.html" title="Install PHP for use in AOLserver"><link rel="next" href="install-pam-radius.html" title="Install PAM Radius for use as external authentication"><link rel="stylesheet" href="openacs.css" type="text/css"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><a href="http://openacs.org"><img src="/doc/images/alex.jpg" border="0" alt="Alex logo"></a><table width="100%" summary="Navigation header" border="0"><tr><td width="20%" align="left"><a accesskey="p" href="install-php.html">Prev</a> </td><th width="60%" align="center">Appendix�B.�Install additional supporting software</th><td width="20%" align="right"> <a accesskey="n" href="install-pam-radius.html">Next</a></td></tr></table><hr></div><div class="sect1" lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="install-squirrelmail"></a>Install Squirrelmail for use as a webmail system for OpenACS</h2></div></div></div><div class="authorblurb"><p>By <a href="mailto:openacs@sussdorff.de" target="_top">Malte Sussdorff</a></p>
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html><head><meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"><title>Install Squirrelmail for use as a webmail system for OpenACS</title><meta name="generator" content="DocBook XSL Stylesheets V1.60.1"><link rel="home" href="index.html" title="OpenACS Core Documentation"><link rel="up" href="install-more-software.html" title="Appendix�B.�Install additional supporting software"><link rel="previous" href="install-php.html" title="Install PHP for use in AOLserver"><link rel="next" href="install-pam-radius.html" title="Install PAM Radius for use as external authentication"><link rel="stylesheet" href="openacs.css" type="text/css"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><a href="http://openacs.org"><img src="/doc/images/alex.jpg" border="0" alt="Alex logo"></a><table width="100%" summary="Navigation header" border="0"><tr><td width="20%" align="left"><a accesskey="p" href="install-php.html">Prev</a> </td><th width="60%" align="center">Appendix�B.�Install additional supporting software</th><td width="20%" align="right"> <a accesskey="n" href="install-pam-radius.html">Next</a></td></tr></table><hr></div><div class="sect1" lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="install-squirrelmail"></a>Install Squirrelmail for use as a webmail system for OpenACS</h2></div></div><div></div></div><div class="authorblurb"><p>By <a href="mailto:openacs@sussdorff.de" target="_top">Malte Sussdorff</a></p>
           OpenACS docs are written by the named authors, and may be edited
           by OpenACS documentation staff.
-        </div><p>This section is work in progress. It will detail how you can install Squirrelmail as a webmail frontend for OpenACS, thereby neglecting the need to have a seperate webmail package within OpenACS</p><pre class="screen">[$OPENACS_SERVICE_NAME $OPENACS_SERVICE_NAME]# <strong class="userinput"><code>cd www</code></strong>
-[$OPENACS_SERVICE_NAME www]# <strong class="userinput"><code>wget http://cesnet.dl.sourceforge.net/sourceforge/squirrelmail/squirrelmail-1.4.4.tar.gz</code></strong>
-[$OPENACS_SERVICE_NAME www]# <strong class="userinput"><code>tar xfz squirrelmail-1.4.4.tar.gz</code></strong>
-[$OPENACS_SERVICE_NAME www]# <strong class="userinput"><code>mv squirrelmail-1.4.4 mail</code></strong>
-[$OPENACS_SERVICE_NAME www]# <strong class="userinput"><code>cd mail/config</code></strong>
-[$OPENACS_SERVICE_NAME www]# <strong class="userinput"><code>./conf.pl</code></strong>
+        </div><p>This section is work in progress. It will detail how you can install Squirrelmail as a webmail frontend for OpenACS, thereby neglecting the need to have a seperate webmail package within OpenACS</p><pre class="screen">[$OPENACS_SERVICE_NAME $OPENACS_SERVICE_NAME]# <b class="userinput"><tt>cd www</tt></b>
+[$OPENACS_SERVICE_NAME www]# <b class="userinput"><tt>wget http://cesnet.dl.sourceforge.net/sourceforge/squirrelmail/squirrelmail-1.4.4.tar.gz</tt></b>
+[$OPENACS_SERVICE_NAME www]# <b class="userinput"><tt>tar xfz squirrelmail-1.4.4.tar.gz</tt></b>
+[$OPENACS_SERVICE_NAME www]# <b class="userinput"><tt>mv squirrelmail-1.4.4 mail</tt></b>
+[$OPENACS_SERVICE_NAME www]# <b class="userinput"><tt>cd mail/config</tt></b>
+[$OPENACS_SERVICE_NAME www]# <b class="userinput"><tt>./conf.pl</tt></b>
       </pre><p>Now you are about to configure Squirrelmail. The configuration heavily depends on your setup, so no instructions are given here.</p></div><div class="navfooter"><hr><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="install-php.html">Prev</a> </td><td width="20%" align="center"><a accesskey="h" href="index.html">Home</a></td><td width="40%" align="right"> <a accesskey="n" href="install-pam-radius.html">Next</a></td></tr><tr><td width="40%" align="left">Install PHP for use in AOLserver </td><td width="20%" align="center"><a accesskey="u" href="install-more-software.html">Up</a></td><td width="40%" align="right"> Install PAM Radius for use as external authentication</td></tr></table><hr><address><a href="mailto:docs@openacs.org">docs@openacs.org</a></address></div><a name="comments"></a><center><a href="http://openacs.org/doc/current/install-squirrelmail.html#comments">View comments on this page at openacs.org</a></center></body></html>
Index: openacs-4/packages/acs-core-docs/www/install-ssl.html
===================================================================
RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/install-ssl.html,v
diff -u -r1.9 -r1.9.4.1
--- openacs-4/packages/acs-core-docs/www/install-ssl.html	17 Jul 2006 05:38:31 -0000	1.9
+++ openacs-4/packages/acs-core-docs/www/install-ssl.html	3 Feb 2008 12:07:39 -0000	1.9.4.1
@@ -1,26 +1,27 @@
-<html><head><meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"><title>Installing SSL Support for an OpenACS service</title><meta name="generator" content="DocBook XSL Stylesheets V1.70.1"><link rel="home" href="index.html" title="OpenACS Core Documentation"><link rel="up" href="maintenance-web.html" title="Chapter�6.�Production Environments"><link rel="previous" href="maintenance-deploy.html" title="Staged Deployment for Production Networks"><link rel="next" href="analog-setup.html" title="Set up Log Analysis Reports"><link rel="stylesheet" href="openacs.css" type="text/css"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><a href="http://openacs.org"><img src="/doc/images/alex.jpg" border="0" alt="Alex logo"></a><table width="100%" summary="Navigation header" border="0"><tr><td width="20%" align="left"><a accesskey="p" href="maintenance-deploy.html">Prev</a> </td><th width="60%" align="center">Chapter�6.�Production Environments</th><td width="20%" align="right"> <a accesskey="n" href="analog-setup.html">Next</a></td></tr></table><hr></div><div class="sect1" lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="install-ssl"></a>Installing SSL Support for an OpenACS service</h2></div></div></div><p>Debian Users: <code class="computeroutput">apt-get install openssl</code> before proceeding.</p><div class="orderedlist"><ol type="1"><li><p>Make sure nsopenssl.so is <a href="install-nsopenssl.html" title="Install nsopenssl">installed</a> for AOLserver.</p></li><li><p>Uncomment this line from <code class="computeroutput">config.tcl</code>.</p><pre class="programlisting">#ns_param   nsopenssl       ${bindir}/nsopenssl.so
-</pre></li><li><p><a name="ssl-certificates"></a>Prepare a certificate directory for the service.</p><pre class="screen">[$OPENACS_SERVICE_NAME etc]$ <strong class="userinput"><code>mkdir /var/lib/aolserver/<span class="replaceable"><span class="replaceable">$OPENACS_SERVICE_NAME</span></span>/etc/certs</code></strong>
-[$OPENACS_SERVICE_NAME etc]$ <strong class="userinput"><code>chmod 700 /var/lib/aolserver/<span class="replaceable"><span class="replaceable">$OPENACS_SERVICE_NAME</span></span>/etc/certs</code></strong>
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html><head><meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"><title>Installing SSL Support for an OpenACS service</title><meta name="generator" content="DocBook XSL Stylesheets V1.60.1"><link rel="home" href="index.html" title="OpenACS Core Documentation"><link rel="up" href="maintenance-web.html" title="Chapter�6.�Production Environments"><link rel="previous" href="maintenance-deploy.html" title="Staged Deployment for Production Networks"><link rel="next" href="analog-setup.html" title="Set up Log Analysis Reports"><link rel="stylesheet" href="openacs.css" type="text/css"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><a href="http://openacs.org"><img src="/doc/images/alex.jpg" border="0" alt="Alex logo"></a><table width="100%" summary="Navigation header" border="0"><tr><td width="20%" align="left"><a accesskey="p" href="maintenance-deploy.html">Prev</a> </td><th width="60%" align="center">Chapter�6.�Production Environments</th><td width="20%" align="right"> <a accesskey="n" href="analog-setup.html">Next</a></td></tr></table><hr></div><div class="sect1" lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="install-ssl"></a>Installing SSL Support for an OpenACS service</h2></div></div><div></div></div><p>Debian Users: <tt class="computeroutput">apt-get install openssl</tt> before proceeding.</p><div class="orderedlist"><ol type="1"><li><p>Make sure nsopenssl.so is <a href="install-nsopenssl.html" title="Install nsopenssl">installed</a> for AOLserver.</p></li><li><p>Uncomment this line from <tt class="computeroutput">config.tcl</tt>.</p><pre class="programlisting">#ns_param   nsopenssl       ${bindir}/nsopenssl.so
+</pre></li><li><p><a name="ssl-certificates"></a>Prepare a certificate directory for the service.</p><pre class="screen">[$OPENACS_SERVICE_NAME etc]$ <b class="userinput"><tt>mkdir /var/lib/aolserver/<span class="replaceable"><span class="replaceable">$OPENACS_SERVICE_NAME</span></span>/etc/certs</tt></b>
+[$OPENACS_SERVICE_NAME etc]$ <b class="userinput"><tt>chmod 700 /var/lib/aolserver/<span class="replaceable"><span class="replaceable">$OPENACS_SERVICE_NAME</span></span>/etc/certs</tt></b>
 [$OPENACS_SERVICE_NAME etc]$ 
 <span class="action"><span class="action">mkdir /var/lib/aolserver/<span class="replaceable"><span class="replaceable">$OPENACS_SERVICE_NAME</span></span>/etc/certs
 chmod 700 /var/lib/aolserver/<span class="replaceable"><span class="replaceable">$OPENACS_SERVICE_NAME</span></span>/etc/certs</span></span></pre></li><li><p>It takes two files to support an SSL connection.  The certificate is the public half of the key pair - the server sends the certificate to browser requesting ssl.  The key is the private half of the key pair.  In addition, the certificate must be signed by Certificate Authority or browsers will protest.  Each web browser ships with a built-in list of acceptable Certificate Authorities (CAs) and their keys.  Only a site certificate signed by a known and approved CA will work smoothly.  Any other certificate will cause browsers to produce some messages or block the site.  Unfortunately, getting a site certificate signed by a CA costs money.  In this section, we'll generate an unsigned certificate which will work in most browsers, albeit with pop-up messages.</p><p>Use an OpenSSL perl script to generate a certificate and key.</p><p>
           Debian users: use /usr/lib/ssl/misc/CA.pl instead of /usr/share/ssl/CA
         </p><p>
           Mac OS X users: use perl /System/Library/OpenSSL/misc/CA.pl -newcert instead of /usr/share/ssl/CA
-        </p><pre class="screen">[$OPENACS_SERVICE_NAME $OPENACS_SERVICE_NAME]$ <strong class="userinput"><code>cd /var/lib/aolserver/$OPENACS_SERVICE_NAME/etc/certs</code></strong>
-[$OPENACS_SERVICE_NAME certs]$ <strong class="userinput"><code>perl /usr/share/ssl/misc/CA -newcert</code></strong>
+        </p><pre class="screen">[$OPENACS_SERVICE_NAME $OPENACS_SERVICE_NAME]$ <b class="userinput"><tt>cd /var/lib/aolserver/$OPENACS_SERVICE_NAME/etc/certs</tt></b>
+[$OPENACS_SERVICE_NAME certs]$ <b class="userinput"><tt>perl /usr/share/ssl/misc/CA -newcert</tt></b>
 Using configuration from /usr/share/ssl/openssl.cnf
 Generating a 1024 bit RSA private key
 ...++++++
 .......++++++
 writing new private key to 'newreq.pem'
 Enter PEM pass phrase:</pre><p>Enter a pass phrase for the CA certificate.  Then, answer the rest of the questions.  At the end you should see this:</p><pre class="screen">Certificate (and private key) is in newreq.pem
-[$OPENACS_SERVICE_NAME certs]$</pre><p><code class="computeroutput">newreq.pem</code> contains our certificate and private key.  The key is protected by a passphrase, which means that we'll have to enter the pass phrase each time the server starts.  This is impractical and unnecessary, so we create an unprotected version of the key.  <span class="emphasis"><em>Security implication</em></span>: if anyone gets access to the file keyfile.pem, they effectively own the key as much as you do.  Mitigation: don't use this key/cert combo for anything besides providing ssl for the web site.</p><pre class="screen">[root misc]# <strong class="userinput"><code>openssl rsa -in newreq.pem -out keyfile.pem</code></strong>
+[$OPENACS_SERVICE_NAME certs]$</pre><p><tt class="computeroutput">newreq.pem</tt> contains our certificate and private key.  The key is protected by a passphrase, which means that we'll have to enter the pass phrase each time the server starts.  This is impractical and unnecessary, so we create an unprotected version of the key.  <span class="emphasis"><em>Security implication</em></span>: if anyone gets access to the file keyfile.pem, they effectively own the key as much as you do.  Mitigation: don't use this key/cert combo for anything besides providing ssl for the web site.</p><pre class="screen">[root misc]# <b class="userinput"><tt>openssl rsa -in newreq.pem -out keyfile.pem</tt></b>
 read RSA key
 Enter PEM pass phrase:
 writing RSA key
-[$OPENACS_SERVICE_NAME certs]$ </pre><p>To create the certificate file, we take the combined file, copy it, and strip out the key.</p><pre class="screen">[$OPENACS_SERVICE_NAME certs]$ <strong class="userinput"><code>cp newreq.pem certfile.pem</code></strong>
-[root misc]# <strong class="userinput"><code>emacs certfile.pem</code></strong></pre><p>Strip out the section that looks like</p><pre class="programlisting">-----BEGIN RSA PRIVATE KEY-----
+[$OPENACS_SERVICE_NAME certs]$ </pre><p>To create the certificate file, we take the combined file, copy it, and strip out the key.</p><pre class="screen">[$OPENACS_SERVICE_NAME certs]$ <b class="userinput"><tt>cp newreq.pem certfile.pem</tt></b>
+[root misc]# <b class="userinput"><tt>emacs certfile.pem</tt></b></pre><p>Strip out the section that looks like</p><pre class="programlisting">-----BEGIN RSA PRIVATE KEY-----
 Proc-Type: 4,ENCRYPTED
 DEK-Info: DES-EDE3-CBC,F3EDE7CA1B404997
 S/Sd2MYA0JVmQuIt5bYowXR1KYKDka1d3DUgtoVTiFepIRUrMkZlCli08mWVjE6T
Index: openacs-4/packages/acs-core-docs/www/install-steps.html
===================================================================
RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/install-steps.html,v
diff -u -r1.28 -r1.28.4.1
--- openacs-4/packages/acs-core-docs/www/install-steps.html	17 Jul 2006 05:38:31 -0000	1.28
+++ openacs-4/packages/acs-core-docs/www/install-steps.html	3 Feb 2008 12:07:39 -0000	1.28.4.1
@@ -1,49 +1,49 @@
-<html><head><meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"><title>Basic Steps</title><meta name="generator" content="DocBook XSL Stylesheets V1.70.1"><link rel="home" href="index.html" title="OpenACS Core Documentation"><link rel="up" href="install-overview.html" title="Chapter�2.�Installation Overview"><link rel="previous" href="install-overview.html" title="Chapter�2.�Installation Overview"><link rel="next" href="individual-programs.html" title="Prerequisite Software"><link rel="stylesheet" href="openacs.css" type="text/css"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><a href="http://openacs.org"><img src="/doc/images/alex.jpg" border="0" alt="Alex logo"></a><table width="100%" summary="Navigation header" border="0"><tr><td width="20%" align="left"><a accesskey="p" href="install-overview.html">Prev</a> </td><th width="60%" align="center">Chapter�2.�Installation Overview</th><td width="20%" align="right"> <a accesskey="n" href="individual-programs.html">Next</a></td></tr></table><hr></div><div class="sect1" lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="install-steps"></a>Basic Steps</h2></div></div></div><p>
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html><head><meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"><title>Basic Steps</title><meta name="generator" content="DocBook XSL Stylesheets V1.60.1"><link rel="home" href="index.html" title="OpenACS Core Documentation"><link rel="up" href="install-overview.html" title="Chapter�2.�Installation Overview"><link rel="previous" href="install-overview.html" title="Chapter�2.�Installation Overview"><link rel="next" href="individual-programs.html" title="Prerequisite Software"><link rel="stylesheet" href="openacs.css" type="text/css"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><a href="http://openacs.org"><img src="/doc/images/alex.jpg" border="0" alt="Alex logo"></a><table width="100%" summary="Navigation header" border="0"><tr><td width="20%" align="left"><a accesskey="p" href="install-overview.html">Prev</a> </td><th width="60%" align="center">Chapter�2.�Installation Overview</th><td width="20%" align="right"> <a accesskey="n" href="individual-programs.html">Next</a></td></tr></table><hr></div><div class="sect1" lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="install-steps"></a>Basic Steps</h2></div></div><div></div></div><p>
     The basic steps for installing OpenACS are:
-  </p><div class="orderedlist"><ol type="1"><li><p>Install an OS and supporting software (see <a href="unix-installation.html">Install a Unix-like OS</a> or <a href="install-redhat.html" title="Appendix�A.�Install Red Hat 8/9">Appendix�A, <i>Install Red Hat 8/9</i></a> for more details).  See the <a href="individual-programs.html#compatibility-matrix" title="Table�2.2.�Version Compatibility Matrix">Table�2.2, &#8220;Version Compatibility Matrix&#8221;</a>.</p></li><li><p>Install a database (see <a href="oracle.html" title="Install Oracle 8.1.7">the section called &#8220;Install Oracle 8.1.7&#8221;</a> or
+  </p><div class="orderedlist"><ol type="1"><li><p>Install an OS and supporting software (see <a href="unix-installation.html">Install a Unix-like OS</a> or <a href="install-redhat.html" title="Appendix�A.�Install Red Hat 8/9">Appendix�A, <i>Install Red Hat 8/9</i></a> for more details).  See the <a href="individual-programs.html#compatibility-matrix" title="Table�2.2.�Version Compatibility Matrix">Table�2.2</a>.</p></li><li><p>Install a database (see <a href="oracle.html" title="Install Oracle 8.1.7">Section�, &#8220;Install Oracle 8.1.7&#8221;</a> or
         <a href="postgres.html">Install PostgreSQL</a>).</p></li><li><p> Install AOLserver (<a href="aolserver4.html">Install AOLserver 4</a>) .</p></li><li><p>Create a unique database and system user.
         Install the OpenACS tarball, start and AOLserver instance, and
         use the OpenACS web pages to complete installation
-        (see <a href="openacs.html">Install OpenACS 5.2.3rc1</a>).</p></li></ol></div><p> Specific instructions are available for Mac OS X and
-    Windows2000 (see <a href="mac-installation.html" title="OpenACS Installation Guide for Mac OS X">the section called &#8220;OpenACS Installation Guide for Mac OS X&#8221;</a> or
-    <a href="win2k-installation.html" title="OpenACS Installation Guide for Windows2000">the section called &#8220;OpenACS Installation Guide for Windows2000&#8221;</a>).</p><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="install-rpms"></a>Binaries and other shortcuts</h3></div></div></div><p>You can try out OpenACS using some binary installers. In
+        (see <a href="openacs.html">Install OpenACS 5.4.0</a>).</p></li></ol></div><p> Specific instructions are available for Mac OS X and
+    Windows2000 (see <a href="mac-installation.html" title="OpenACS Installation Guide for Mac OS X">Section�, &#8220;OpenACS Installation Guide for Mac OS X&#8221;</a> or
+    <a href="win2k-installation.html" title="OpenACS Installation Guide for Windows2000">Section�, &#8220;OpenACS Installation Guide for Windows2000&#8221;</a>).</p><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="install-rpms"></a>Binaries and other shortcuts</h3></div></div><div></div></div><p>You can try out OpenACS using some binary installers. In
     general, they are not yet supported by the community, so they are
     mostly for evaluation purposes. <a href="http://openacs.org/faq/one-faq?faq_id=130897#130917" target="_top">Installing
     OpenACS</a></p><p>You can see a list of <a href="http://openacs.org/projects/openacs/installer" target="_top">current installers</a>.
     </p><div class="orderedlist"><ol type="1"><li><p>
           The packaged version of
           PostgreSQL in Debian, Red Hat, and FreeBSD ports works fine.</p></li><li><p>Once AOLserver and a database are installed, a bash script <a href="openacs.html#install-with-script" title="Installation Option 1: Use automated script">automates the OpenACS checkout and
             installation</a>.
-        </p></li></ol></div></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="install-requirements"></a>System Requirements</h3></div></div></div><p>
+        </p></li></ol></div></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="install-requirements"></a>System Requirements</h3></div></div><div></div></div><p>
       You will need a PC (or equivalent) with at least these minimum
       specifications:
     </p><div class="itemizedlist"><ul type="disc"><li><p>128MB RAM (much more if you want Oracle)</p></li><li><p>1GB free space on your hard drive (much more if you want Oracle)</p></li><li><p>A Unix-like operating system with Tcl, tDOM, and
-          a mail transport agent like sendmail or qmail. (see <a href="individual-programs.html" title="Prerequisite Software">the section called &#8220;Prerequisite Software&#8221;</a>)</p></li></ul></div><p>
+          a mail transport agent like sendmail or qmail. (see <a href="individual-programs.html" title="Prerequisite Software">Section�, &#8220;Prerequisite Software&#8221;</a>)</p></li></ul></div><p>
       All of the software mentioned is open-source and available without direct costs,
       except for Oracle. You can obtain a free copy of Oracle for
       development purposes. This is described in the <a href="oracle.html#install-oracle-getit">Acquire Oracle</a> section.
-    </p></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="how-to-use"></a>How to use this guide</h3></div></div></div><div class="itemizedlist"><ul type="disc"><li><p><code class="computeroutput">This</code> is text you will see on
-          screen, such as a <code class="computeroutput"><span class="guibutton"><span class="guibutton"><u><span class="accel">B</span></u>utton</span></span></code> or <code class="computeroutput"><span class="guilabel"><span class="guilabel"><u><span class="accel">link</span></u></span></span></code>
-          in a radio button list or menu.</p></li><li><p><strong class="userinput"><code>This is text that you will type.</code></strong></p></li><li><p>This is text from a program or file which you may need to
-          examine or edit:</p><pre class="programlisting">if {$database == "oracle"} {
-          set db_password        "mysitepassword"
+    </p></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="how-to-use"></a>How to use this guide</h3></div></div><div></div></div><div class="itemizedlist"><ul type="disc"><li><p><tt class="computeroutput">This</tt> is text you will see on
+          screen, such as a <tt class="computeroutput"><span class="guibutton"><span class="guibutton"><u><span class="accel">B</span></u>utton</span></span></tt> or <tt class="computeroutput"><span class="guilabel"><span class="guilabel"><u><span class="accel">link</span></u></span></span></tt>
+          in a radio button list or menu.</p></li><li><p><b class="userinput"><tt>This is text that you will type.</tt></b></p></li><li><p>This is text from a program or file which you may need to
+          examine or edit:</p><pre class="programlisting">if {$database == &quot;oracle&quot;} {
+          set db_password        &quot;mysitepassword&quot;
 }</pre></li><li><p>This is text that you will
-          <code class="computeroutput">see</code> and <strong class="userinput"><code>type</code></strong> in a command shell, including <span class="replaceable"><span class="replaceable">text you may have to
+          <tt class="computeroutput">see</tt> and <b class="userinput"><tt>type</tt></b> in a command shell, including <span class="replaceable"><span class="replaceable">text you may have to
             change</span></span>.  It is followed by a list of just the commands,
-          which you can copy and paste. The command prompt varies by system; in the examples we use the form<code class="computeroutput">[$OPENACS_SERVICE_NAME aolserver]$</code>, where <code class="computeroutput">$OPENACS_SERVICE_NAME</code> is the current user and <code class="computeroutput">aolserver</code> is the current directory.  The root prompt is shown ending in # and all other prompts in $.</p><pre class="screen">
-[root root]# <strong class="userinput"><code>su - $OPENACS_SERVICE_NAME</code></strong>
-[$OPENACS_SERVICE_NAME aolserver]$ <strong class="userinput"><code>svc -d /service/<span class="replaceable"><span class="replaceable">$OPENACS_SERVICE_NAME</span></span></code></strong>
-[$OPENACS_SERVICE_NAME aolserver]$ <strong class="userinput"><code>dropdb <span class="replaceable"><span class="replaceable">$OPENACS_SERVICE_NAME</span></span></code></strong>
+          which you can copy and paste. The command prompt varies by system; in the examples we use the form<tt class="computeroutput">[$OPENACS_SERVICE_NAME aolserver]$</tt>, where <tt class="computeroutput">$OPENACS_SERVICE_NAME</tt> is the current user and <tt class="computeroutput">aolserver</tt> is the current directory.  The root prompt is shown ending in # and all other prompts in $.</p><pre class="screen">
+[root root]# <b class="userinput"><tt>su - $OPENACS_SERVICE_NAME</tt></b>
+[$OPENACS_SERVICE_NAME aolserver]$ <b class="userinput"><tt>svc -d /service/<span class="replaceable"><span class="replaceable">$OPENACS_SERVICE_NAME</span></span></tt></b>
+[$OPENACS_SERVICE_NAME aolserver]$ <b class="userinput"><tt>dropdb <span class="replaceable"><span class="replaceable">$OPENACS_SERVICE_NAME</span></span></tt></b>
 DROP DATABASE
-[$OPENACS_SERVICE_NAME aolserver]$ <strong class="userinput"><code>createdb <span class="replaceable"><span class="replaceable">$OPENACS_SERVICE_NAME</span></span></code></strong>
+[$OPENACS_SERVICE_NAME aolserver]$ <b class="userinput"><tt>createdb <span class="replaceable"><span class="replaceable">$OPENACS_SERVICE_NAME</span></span></tt></b>
 CREATE DATABASE
 <span class="action"><span class="action">su - $OPENACS_SERVICE_NAME
 svc -d /service/<span class="replaceable"><span class="replaceable">$OPENACS_SERVICE_NAME</span></span>
 dropdb <span class="replaceable"><span class="replaceable">$OPENACS_SERVICE_NAME</span></span>
-createdb <span class="replaceable"><span class="replaceable">$OPENACS_SERVICE_NAME</span></span></span></span></pre><p><a name="cut-and-paste-name-var"></a><b>Setting a global shell variable for cut and paste.�</b>In order to cut and paste the instructions into your shell, you must set the environment variable $OPENACS_SERVICE_NAME.  In order to set it globally so that it works for any new users or special service users you may create, edit the file <code class="computeroutput">/etc/profile</code> ( <code class="computeroutput">/etc/share/skel/dot.profile</code> for FreeBSD) and add this line:</p><pre class="programlisting">export OPENACS_SERVICE_NAME=<span class="replaceable"><span class="replaceable">service0</span></span></pre></li></ul></div></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id996296"></a>Paths and Users</h3></div></div></div><div class="table"><a name="id973625"></a><p class="title"><b>Table�2.1.�Default directories for a standard install</b></p><div class="table-contents"><table summary="Default directories for a standard install" cellspacing="0" width="100%" border="1"><colgroup><col><col></colgroup><tbody><tr><td>Fully qualified domain name of your server</td><td><span class="replaceable"><span class="replaceable">yourserver.test</span></span></td></tr><tr><td>name of administrative access account</td><td>remadmin</td></tr><tr><td>OpenACS service</td><td><a class="indexterm" name="id961309"></a>
-                <span class="replaceable"><span class="replaceable">$OPENACS_SERVICE_NAME</span></span> (set to service0 in default install)</td></tr><tr><td>OpenACS service account</td><td><span class="replaceable"><span class="replaceable">$OPENACS_SERVICE_NAME</span></span></td></tr><tr><td>OpenACS database name</td><td><span class="replaceable"><span class="replaceable">$OPENACS_SERVICE_NAME</span></span></td></tr><tr><td>Root of OpenACS service file tree (SERVERROOT)</td><td><span class="replaceable"><span class="replaceable">/var/lib/aolserver/$OPENACS_SERVICE_NAME</span></span></td></tr><tr><td>Location of source code tarballs for new software</td><td>/var/tmp</td></tr><tr><td>The OpenACS tarball contains some files which
+createdb <span class="replaceable"><span class="replaceable">$OPENACS_SERVICE_NAME</span></span></span></span></pre><p><a name="cut-and-paste-name-var"></a><b>Setting a global shell variable for cut and paste.�</b>In order to cut and paste the instructions into your shell, you must set the environment variable $OPENACS_SERVICE_NAME.  In order to set it globally so that it works for any new users or special service users you may create, edit the file <tt class="computeroutput">/etc/profile</tt> ( <tt class="computeroutput">/etc/share/skel/dot.profile</tt> for FreeBSD) and add this line:</p><pre class="programlisting">export OPENACS_SERVICE_NAME=<span class="replaceable"><span class="replaceable">service0</span></span></pre></li></ul></div></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id2960594"></a>Paths and Users</h3></div></div><div></div></div><div class="table"><a name="id2960601"></a><p class="title"><b>Table�2.1.�Default directories for a standard install</b></p><table summary="Default directories for a standard install" cellspacing="0" width="100%" border="1"><colgroup><col><col></colgroup><tbody><tr><td>Fully qualified domain name of your server</td><td><span class="replaceable"><span class="replaceable">yourserver.test</span></span></td></tr><tr><td>name of administrative access account</td><td>remadmin</td></tr><tr><td>OpenACS service</td><td><a class="indexterm" name="id2960657"></a><span class="replaceable"><span class="replaceable">$OPENACS_SERVICE_NAME</span></span> (set to service0 in default install)</td></tr><tr><td>OpenACS service account</td><td><span class="replaceable"><span class="replaceable">$OPENACS_SERVICE_NAME</span></span></td></tr><tr><td>OpenACS database name</td><td><span class="replaceable"><span class="replaceable">$OPENACS_SERVICE_NAME</span></span></td></tr><tr><td>Root of OpenACS service file tree (SERVERROOT)</td><td><span class="replaceable"><span class="replaceable">/var/lib/aolserver/$OPENACS_SERVICE_NAME</span></span></td></tr><tr><td>Location of source code tarballs for new software</td><td>/var/tmp</td></tr><tr><td>The OpenACS tarball contains some files which
                 are useful while setting up other software.  Those
-                files are located at:</td><td>/var/tmp/openacs-5.2.3rc1/packages/acs-core-docs/www/files</td></tr><tr><td>Database backup directory</td><td><span class="replaceable"><span class="replaceable">/var/lib/aolserver/$OPENACS_SERVICE_NAME/database-backup</span></span></td></tr><tr><td>Service config files</td><td><span class="replaceable"><span class="replaceable">/var/lib/aolserver/$OPENACS_SERVICE_NAME/etc</span></span></td></tr><tr><td>Service log files</td><td><span class="replaceable"><span class="replaceable">/var/lib/aolserver/$OPENACS_SERVICE_NAME/log</span></span></td></tr><tr><td>Compile directory</td><td>/usr/local/src</td></tr><tr><td>PostgreSQL directory</td><td>/usr/local/pgsql</td></tr><tr><td>AOLserver directory</td><td>/usr/local/aolserver</td></tr></tbody></table></div></div><br class="table-break"><p>
+                files are located at:</td><td>/var/tmp/openacs-5.4.0/packages/acs-core-docs/www/files</td></tr><tr><td>Database backup directory</td><td><span class="replaceable"><span class="replaceable">/var/lib/aolserver/$OPENACS_SERVICE_NAME/database-backup</span></span></td></tr><tr><td>Service config files</td><td><span class="replaceable"><span class="replaceable">/var/lib/aolserver/$OPENACS_SERVICE_NAME/etc</span></span></td></tr><tr><td>Service log files</td><td><span class="replaceable"><span class="replaceable">/var/lib/aolserver/$OPENACS_SERVICE_NAME/log</span></span></td></tr><tr><td>Compile directory</td><td>/usr/local/src</td></tr><tr><td>PostgreSQL directory</td><td>/usr/local/pgsql</td></tr><tr><td>AOLserver directory</td><td>/usr/local/aolserver</td></tr></tbody></table></div><p>
       None of these locations are set in stone - they're simply
       the values that we've chosen.  The values that you'll
       probably want to change, such as service name, are
@@ -53,16 +53,16 @@
         Some of the paths and user accounts have been changed from
         those recommended in previous versions of this document to
         improve security and maintainability.  See <a href="http://openacs.org/forums/message-view?message_id=82934" target="_top">this
-	  thread</a> for discussion.</p></div></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="install-stuck"></a>Getting Help during installation</h3></div></div></div><p>
+	  thread</a> for discussion.</p></div></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="install-stuck"></a>Getting Help during installation</h3></div></div><div></div></div><p>
       We'll do our best to assure that following our instructions will get
       you to the promised land. If something goes wrong, don't
       panic. There are plenty of ways to get help. Here are some tips:
     </p><div class="itemizedlist"><ul type="disc"><li><p>
           Keep track of the commands you are run and record their output. I
           like to do my installations in a shell inside of emacs
-          (<code class="computeroutput">M-x shell</code>) so that I can save
+          (<tt class="computeroutput">M-x shell</tt>) so that I can save
           the output if needed. An alternative would be to use the
-          <code class="computeroutput">script</code> command.
+          <tt class="computeroutput">script</tt> command.
         </p></li><li><p>
           We'll point out where the error logs for the various pieces of
           software are. Output from those logs will help us help you. Don't
Index: openacs-4/packages/acs-core-docs/www/install-tclwebtest.html
===================================================================
RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/install-tclwebtest.html,v
diff -u -r1.14 -r1.14.4.1
--- openacs-4/packages/acs-core-docs/www/install-tclwebtest.html	17 Jul 2006 05:38:31 -0000	1.14
+++ openacs-4/packages/acs-core-docs/www/install-tclwebtest.html	3 Feb 2008 12:07:39 -0000	1.14.4.1
@@ -1,4 +1,5 @@
-<html><head><meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"><title>Install tclwebtest.</title><meta name="generator" content="DocBook XSL Stylesheets V1.70.1"><link rel="home" href="index.html" title="OpenACS Core Documentation"><link rel="up" href="install-more-software.html" title="Appendix�B.�Install additional supporting software"><link rel="previous" href="install-nsopenssl.html" title="Install nsopenssl"><link rel="next" href="install-php.html" title="Install PHP for use in AOLserver"><link rel="stylesheet" href="openacs.css" type="text/css"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><a href="http://openacs.org"><img src="/doc/images/alex.jpg" border="0" alt="Alex logo"></a><table width="100%" summary="Navigation header" border="0"><tr><td width="20%" align="left"><a accesskey="p" href="install-nsopenssl.html">Prev</a> </td><th width="60%" align="center">Appendix�B.�Install additional supporting software</th><td width="20%" align="right"> <a accesskey="n" href="install-php.html">Next</a></td></tr></table><hr></div><div class="sect1" lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="install-tclwebtest"></a>Install tclwebtest.</h2></div></div></div><p>Download the <a href="individual-programs.html#source-tclwebtest">tclwebtest
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html><head><meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"><title>Install tclwebtest.</title><meta name="generator" content="DocBook XSL Stylesheets V1.60.1"><link rel="home" href="index.html" title="OpenACS Core Documentation"><link rel="up" href="install-more-software.html" title="Appendix�B.�Install additional supporting software"><link rel="previous" href="install-nsopenssl.html" title="Install nsopenssl"><link rel="next" href="install-php.html" title="Install PHP for use in AOLserver"><link rel="stylesheet" href="openacs.css" type="text/css"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><a href="http://openacs.org"><img src="/doc/images/alex.jpg" border="0" alt="Alex logo"></a><table width="100%" summary="Navigation header" border="0"><tr><td width="20%" align="left"><a accesskey="p" href="install-nsopenssl.html">Prev</a> </td><th width="60%" align="center">Appendix�B.�Install additional supporting software</th><td width="20%" align="right"> <a accesskey="n" href="install-php.html">Next</a></td></tr></table><hr></div><div class="sect1" lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="install-tclwebtest"></a>Install tclwebtest.</h2></div></div><div></div></div><p>Download the <a href="individual-programs.html#source-tclwebtest">tclwebtest
       source</a>, unpack it, and put it an appropriate
       place.  (tclwebtest 1.0 will be required for auto-tests in OpenACS 5.1.  When it exists, the cvs command here will be replaced with http://prdownloads.sourceforge.net/tclwebtest/tclwebtest-0.3.tar.gz?download.) As root:</p><pre class="screen"><span class="action"><span class="action">cd /tmp
 cvs -z3 -d:pserver:anonymous@cvs.sourceforge.net:/cvsroot/tclwebtest co tclwebtest
Index: openacs-4/packages/acs-core-docs/www/ix01.html
===================================================================
RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/ix01.html,v
diff -u -r1.22 -r1.22.4.1
--- openacs-4/packages/acs-core-docs/www/ix01.html	17 Jul 2006 05:38:31 -0000	1.22
+++ openacs-4/packages/acs-core-docs/www/ix01.html	3 Feb 2008 12:07:39 -0000	1.22.4.1
@@ -1,2 +1,3 @@
-<html><head><meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"><title>Index</title><meta name="generator" content="DocBook XSL Stylesheets V1.70.1"><link rel="home" href="index.html" title="OpenACS Core Documentation"><link rel="up" href="index.html" title="OpenACS Core Documentation"><link rel="previous" href="update-translations.html" title="How to Update the translations"><link rel="stylesheet" href="openacs.css" type="text/css"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><a href="http://openacs.org"><img src="/doc/images/alex.jpg" border="0" alt="Alex logo"></a><table width="100%" summary="Navigation header" border="0"><tr><td width="20%" align="left"><a accesskey="p" href="update-translations.html">Prev</a> </td><th width="60%" align="center"></th><td width="20%" align="right"> </td></tr></table><hr></div><div class="index"><div class="titlepage"><div><div><h2 class="title"><a name="id938535"></a>Index</h2></div></div></div><div class="index"><div class="indexdiv"><h3>Symbols</h3><dl><dt>$OPENACS_SERVICE_NAME, <a href="install-steps.html#id996296">Paths and Users</a></dt></dl></div><div class="indexdiv"><h3>A</h3><dl><dt>AOLserver</dt><dd><dl><dt>configuration, <a href="openacs.html#install-from-tarball">Installation Option 2: Install from tarball</a></dt></dl></dd><dt>Automated tests, <a href="tutorial-debug.html#id1148429">Write automated tests</a></dt></dl></div><div class="indexdiv"><h3>C</h3><dl><dt>computeroutput</dt><dd><dl><dt>code, <a href="docbook-primer.html#dbprimer-code">Code</a></dt></dl></dd><dt>cvs</dt><dd><dl><dt>initializing, <a href="install-cvs.html">Initialize CVS (OPTIONAL)</a></dt><dt>setup, <a href="cvs-tips.html">Using CVS with an OpenACS Site</a></dt></dl></dd></dl></div><div class="indexdiv"><h3>D</h3><dl><dt>daemontools</dt><dd><dl><dt>installation, <a href="install-daemontools.html">Install Daemontools (OPTIONAL)</a></dt></dl></dd><dt>docbook</dt><dd><dl><dt>installation, <a href="install-redhat.html">Install Red Hat 8/9</a></dt></dl></dd><dt>DocBook</dt><dd><dl><dt>DTD, <a href="docbook-primer.html#dbprimer-why">OpenACS Documentation Strategy: Why DocBook?</a></dt><dt>emacs configuration for, <a href="psgml-for-emacs.html">Add PSGML commands to emacs init file (OPTIONAL)</a></dt></dl></dd><dt>Document structure, <a href="docbook-primer.html#dbprimer-structure">Document Structure</a></dt></dl></div><div class="indexdiv"><h3>E</h3><dl><dt>emacs</dt><dd><dl><dt>installation, <a href="install-redhat.html">Install Red Hat 8/9</a></dt></dl></dd><dt>emphasis</dt><dd><dl><dt>bold, italics, <a href="docbook-primer.html#dbprimer-emphasis">Emphasis</a></dt></dl></dd></dl></div><div class="indexdiv"><h3>F</h3><dl><dt>full text search</dt><dd><dl><dt>installation, <a href="install-full-text-search-tsearch2.html#install-tsearch2">Install Tsearch2 module</a>, <a href="install-full-text-search-openfts.html#install-openfts">Install OpenFTS module</a>, <a href="install-full-text-search-openfts.html#install-openfts-postgres">Install OpenFTS prerequisites in PostgreSQL instance</a></dt></dl></dd></dl></div><div class="indexdiv"><h3>G</h3><dl><dt>Graphics</dt><dd><dl><dt>Images, <a href="docbook-primer.html#dbprimer-graphics">Graphics</a></dt></dl></dd></dl></div><div class="indexdiv"><h3>I</h3><dl><dt>informaltable</dt><dd><dl><dt>table, <a href="docbook-primer.html#dbprimer-tables">Tables</a></dt></dl></dd></dl></div><div class="indexdiv"><h3>L</h3><dl><dt>language</dt><dd><dl><dt>installation, <a href="install-redhat.html">Install Red Hat 8/9</a></dt></dl></dd><dt>Linking, <a href="docbook-primer.html#dbprimer-links">Links</a></dt><dt>lists, <a href="docbook-primer.html#dbprimer-lists">Lists</a></dt></dl></div><div class="indexdiv"><h3>O</h3><dl><dt>OpenACS Package, <a href="packages.html#packages-looks">What a Package Looks Like</a></dt></dl></div><div class="indexdiv"><h3>P</h3><dl><dt>photo-album</dt><dd><dl><dt>installation (see ImageMagick)</dt></dl></dd><dt>Postgres</dt><dd><dl><dt>Vacuuming, <a href="openacs.html#install-from-tarball">Installation Option 2: Install from tarball</a></dt></dl></dd></dl></div><div class="indexdiv"><h3>Q</h3><dl><dt>qmail</dt><dd><dl><dt>installation, <a href="install-qmail.html">Install qmail (OPTIONAL)</a></dt><dt>Maildir, <a href="install-qmail.html">Install qmail (OPTIONAL)</a></dt><dt>rcpthosts error message, <a href="install-qmail.html">Install qmail (OPTIONAL)</a></dt></dl></dd></dl></div><div class="indexdiv"><h3>S</h3><dl><dt>sect1, <a href="docbook-primer.html#dbprimer-sections">Headlines, Sections</a></dt><dt>sect2, <a href="docbook-primer.html#dbprimer-sections">Headlines, Sections</a></dt><dt>Sections</dt><dd><dl><dt>Headlines, <a href="docbook-primer.html#dbprimer-sections">Headlines, Sections</a></dt></dl></dd><dt>security</dt><dd><dl><dt>definition, <a href="install-redhat.html">Install Red Hat 8/9</a></dt><dt>firewall, <a href="install-redhat.html">Install Red Hat 8/9</a></dt></dl></dd><dt>sendmail</dt><dd><dl><dt>removing, <a href="install-qmail.html">Install qmail (OPTIONAL)</a></dt></dl></dd><dt>ssh, <a href="install-redhat.html">Install Red Hat 8/9</a></dt></dl></div><div class="indexdiv"><h3>T</h3><dl><dt>The publish point for new packages should be
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html><head><meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"><title>Index</title><meta name="generator" content="DocBook XSL Stylesheets V1.60.1"><link rel="home" href="index.html" title="OpenACS Core Documentation"><link rel="up" href="index.html" title="OpenACS Core Documentation"><link rel="previous" href="update-translations.html" title="How to Update the translations"><link rel="stylesheet" href="openacs.css" type="text/css"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><a href="http://openacs.org"><img src="/doc/images/alex.jpg" border="0" alt="Alex logo"></a><table width="100%" summary="Navigation header" border="0"><tr><td width="20%" align="left"><a accesskey="p" href="update-translations.html">Prev</a> </td><th width="60%" align="center"></th><td width="20%" align="right"> </td></tr></table><hr></div><div class="index"><div class="titlepage"><div><div><h2 class="title"><a name="id2836618"></a>Index</h2></div></div><div></div></div><div class="index"><div class="indexdiv"><h3>Symbols</h3><dl><dt>$OPENACS_SERVICE_NAME, <a href="install-steps.html#id2960594">Paths and Users</a></dt></dl></div><div class="indexdiv"><h3>A</h3><dl><dt>AOLserver</dt><dd><dl><dt>configuration, <a href="openacs.html#install-from-tarball">Installation Option 2: Install from tarball</a></dt></dl></dd><dt>Automated tests, <a href="tutorial-debug.html#id3067989">Write automated tests</a></dt></dl></div><div class="indexdiv"><h3>C</h3><dl><dt>computeroutput</dt><dd><dl><dt>code, <a href="docbook-primer.html#dbprimer-code">Code</a></dt></dl></dd><dt>cvs</dt><dd><dl><dt>initializing, <a href="install-cvs.html">Initialize CVS (OPTIONAL)</a></dt></dl></dd></dl></div><div class="indexdiv"><h3>D</h3><dl><dt>daemontools</dt><dd><dl><dt>installation, <a href="install-daemontools.html">Install Daemontools (OPTIONAL)</a></dt></dl></dd><dt>docbook</dt><dd><dl><dt>installation, <a href="install-redhat.html">Install Red Hat 8/9</a></dt></dl></dd><dt>DocBook</dt><dd><dl><dt>DTD, <a href="docbook-primer.html#dbprimer-why">OpenACS Documentation Strategy: Why DocBook?</a></dt><dt>emacs configuration for, <a href="psgml-for-emacs.html">Add PSGML commands to emacs init file (OPTIONAL)</a></dt></dl></dd><dt>Document structure, <a href="docbook-primer.html#dbprimer-structure">Document Structure</a></dt></dl></div><div class="indexdiv"><h3>E</h3><dl><dt>emacs</dt><dd><dl><dt>installation, <a href="install-redhat.html">Install Red Hat 8/9</a></dt></dl></dd><dt>emphasis</dt><dd><dl><dt>bold, italics, <a href="docbook-primer.html#dbprimer-emphasis">Emphasis</a></dt></dl></dd></dl></div><div class="indexdiv"><h3>F</h3><dl><dt>full text search</dt><dd><dl><dt>installation, <a href="install-full-text-search-tsearch2.html#install-tsearch2">Install Tsearch2 module</a>, <a href="install-full-text-search-openfts.html#install-openfts">Install OpenFTS module</a>, <a href="install-full-text-search-openfts.html#install-openfts-postgres">Install OpenFTS prerequisites in PostgreSQL instance</a></dt></dl></dd></dl></div><div class="indexdiv"><h3>G</h3><dl><dt>Graphics</dt><dd><dl><dt>Images, <a href="docbook-primer.html#dbprimer-graphics">Graphics</a></dt></dl></dd></dl></div><div class="indexdiv"><h3>I</h3><dl><dt>informaltable</dt><dd><dl><dt>table, <a href="docbook-primer.html#dbprimer-tables">Tables</a></dt></dl></dd></dl></div><div class="indexdiv"><h3>L</h3><dl><dt>language</dt><dd><dl><dt>installation, <a href="install-redhat.html">Install Red Hat 8/9</a></dt></dl></dd><dt>Linking, <a href="docbook-primer.html#dbprimer-links">Links</a></dt><dt>lists, <a href="docbook-primer.html#dbprimer-lists">Lists</a></dt></dl></div><div class="indexdiv"><h3>O</h3><dl><dt>OpenACS Package, <a href="packages.html#packages-looks">What a Package Looks Like</a></dt></dl></div><div class="indexdiv"><h3>P</h3><dl><dt>photo-album</dt><dd><dl><dt>installation (see ImageMagick)</dt></dl></dd><dt>Postgres</dt><dd><dl><dt>Vacuuming, <a href="openacs.html#install-from-tarball">Installation Option 2: Install from tarball</a></dt></dl></dd></dl></div><div class="indexdiv"><h3>Q</h3><dl><dt>qmail</dt><dd><dl><dt>installation, <a href="install-qmail.html">Install qmail (OPTIONAL)</a></dt><dt>Maildir, <a href="install-qmail.html">Install qmail (OPTIONAL)</a></dt><dt>rcpthosts error message, <a href="install-qmail.html">Install qmail (OPTIONAL)</a></dt></dl></dd></dl></div><div class="indexdiv"><h3>S</h3><dl><dt>sect1, <a href="docbook-primer.html#dbprimer-sections">Headlines, Sections</a></dt><dt>sect2, <a href="docbook-primer.html#dbprimer-sections">Headlines, Sections</a></dt><dt>Sections</dt><dd><dl><dt>Headlines, <a href="docbook-primer.html#dbprimer-sections">Headlines, Sections</a></dt></dl></dd><dt>security</dt><dd><dl><dt>definition, <a href="install-redhat.html">Install Red Hat 8/9</a></dt><dt>firewall, <a href="install-redhat.html">Install Red Hat 8/9</a></dt></dl></dd><dt>sendmail</dt><dd><dl><dt>removing, <a href="install-qmail.html">Install qmail (OPTIONAL)</a></dt></dl></dd><dt>ssh, <a href="install-redhat.html">Install Red Hat 8/9</a></dt></dl></div><div class="indexdiv"><h3>T</h3><dl><dt>The publish point for new packages should be
         fixed., <a href="tutorial-distribute.html">Prepare the package for distribution.</a></dt></dl></div><div class="indexdiv"><h3>U</h3><dl><dt>ulink, <a href="docbook-primer.html#dbprimer-links">Links</a></dt><dt>upgrade</dt><dd><dl><dt>OpenACS 4.5 to 4.6.x</dt><dd><dl><dt>Linux/Unix, <a href="upgrade-4.5-to-4.6.html">Upgrading 4.5 or higher to 4.6.3</a></dt></dl></dd></dl></dd></dl></div><div class="indexdiv"><h3>X</h3><dl><dt>XML guidelines, <a href="docbook-primer.html#dbprimer-why">OpenACS Documentation Strategy: Why DocBook?</a></dt><dt>xref</dt><dd><dl><dt>linkend, <a href="docbook-primer.html#dbprimer-links">Links</a></dt></dl></dd><dt>xreflabel, <a href="docbook-primer.html#dbprimer-sections">Headlines, Sections</a></dt></dl></div></div></div><div class="navfooter"><hr><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="update-translations.html">Prev</a> </td><td width="20%" align="center"><a accesskey="h" href="index.html">Home</a></td><td width="40%" align="right"> </td></tr><tr><td width="40%" align="left">How to Update the translations </td><td width="20%" align="center"><a accesskey="u" href="index.html">Up</a></td><td width="40%" align="right"> </td></tr></table><hr><address><a href="mailto:docs@openacs.org">docs@openacs.org</a></address></div><a name="comments"></a><center><a href="http://openacs.org/doc/current/ix01.html#comments">View comments on this page at openacs.org</a></center></body></html>
Index: openacs-4/packages/acs-core-docs/www/kernel-doc.html
===================================================================
RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/kernel-doc.html,v
diff -u -r1.30 -r1.30.4.1
--- openacs-4/packages/acs-core-docs/www/kernel-doc.html	17 Jul 2006 05:38:31 -0000	1.30
+++ openacs-4/packages/acs-core-docs/www/kernel-doc.html	3 Feb 2008 12:07:39 -0000	1.30.4.1
@@ -1 +1,2 @@
-<html><head><meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"><title>Chapter�15.�Kernel Documentation</title><meta name="generator" content="DocBook XSL Stylesheets V1.70.1"><link rel="home" href="index.html" title="OpenACS Core Documentation"><link rel="up" href="acs-plat-dev.html" title="Part�IV.�For OpenACS Platform Developers"><link rel="previous" href="acs-plat-dev.html" title="Part�IV.�For OpenACS Platform Developers"><link rel="next" href="kernel-overview.html" title="Overview"><link rel="stylesheet" href="openacs.css" type="text/css"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><a href="http://openacs.org"><img src="/doc/images/alex.jpg" border="0" alt="Alex logo"></a><table width="100%" summary="Navigation header" border="0"><tr><td width="20%" align="left"><a accesskey="p" href="acs-plat-dev.html">Prev</a> </td><th width="60%" align="center">Part�IV.�For OpenACS Platform Developers</th><td width="20%" align="right"> <a accesskey="n" href="kernel-overview.html">Next</a></td></tr></table><hr></div><div class="chapter" lang="en"><div class="titlepage"><div><div><h2 class="title"><a name="kernel-doc"></a>Chapter�15.�Kernel Documentation</h2></div></div></div><div class="toc"><p><b>Table of Contents</b></p><dl><dt><span class="sect1"><a href="kernel-overview.html">Overview</a></span></dt><dt><span class="sect1"><a href="object-system-requirements.html">Object Model Requirements</a></span></dt><dt><span class="sect1"><a href="object-system-design.html">Object Model Design</a></span></dt><dt><span class="sect1"><a href="permissions-requirements.html">Permissions Requirements</a></span></dt><dt><span class="sect1"><a href="permissions-design.html">Permissions Design</a></span></dt><dt><span class="sect1"><a href="groups-requirements.html">Groups Requirements</a></span></dt><dt><span class="sect1"><a href="groups-design.html">Groups Design</a></span></dt><dt><span class="sect1"><a href="subsites-requirements.html">Subsites Requirements</a></span></dt><dt><span class="sect1"><a href="subsites-design.html">Subsites Design Document</a></span></dt><dt><span class="sect1"><a href="apm-requirements.html">Package Manager Requirements</a></span></dt><dt><span class="sect1"><a href="apm-design.html">Package Manager Design</a></span></dt><dt><span class="sect1"><a href="db-api-detailed.html">Database Access API</a></span></dt><dt><span class="sect1"><a href="i18n-requirements.html">OpenACS Internationalization Requirements</a></span></dt><dt><span class="sect1"><a href="security-requirements.html">Security Requirements</a></span></dt><dt><span class="sect1"><a href="security-design.html">Security Design</a></span></dt><dt><span class="sect1"><a href="security-notes.html">Security Notes</a></span></dt><dt><span class="sect1"><a href="rp-requirements.html">Request Processor Requirements</a></span></dt><dt><span class="sect1"><a href="rp-design.html">Request Processor Design</a></span></dt><dt><span class="sect1"><a href="tcl-doc.html">Documenting Tcl Files: Page Contracts and Libraries</a></span></dt><dt><span class="sect1"><a href="bootstrap-acs.html">Bootstrapping OpenACS</a></span></dt><dt><span class="sect1"><a href="ext-auth-requirements.html">External Authentication Requirements</a></span></dt></dl></div></div><div class="navfooter"><hr><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="acs-plat-dev.html">Prev</a> </td><td width="20%" align="center"><a accesskey="h" href="index.html">Home</a></td><td width="40%" align="right"> <a accesskey="n" href="kernel-overview.html">Next</a></td></tr><tr><td width="40%" align="left">Part�IV.�For OpenACS Platform Developers </td><td width="20%" align="center"><a accesskey="u" href="acs-plat-dev.html">Up</a></td><td width="40%" align="right"> Overview</td></tr></table><hr><address><a href="mailto:docs@openacs.org">docs@openacs.org</a></address></div><a name="comments"></a><center><a href="http://openacs.org/doc/current/kernel-doc.html#comments">View comments on this page at openacs.org</a></center></body></html>
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html><head><meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"><title>Chapter�15.�Kernel Documentation</title><meta name="generator" content="DocBook XSL Stylesheets V1.60.1"><link rel="home" href="index.html" title="OpenACS Core Documentation"><link rel="up" href="acs-plat-dev.html" title="Part�IV.�For OpenACS Platform Developers"><link rel="previous" href="acs-plat-dev.html" title="Part�IV.�For OpenACS Platform Developers"><link rel="next" href="kernel-overview.html" title="Overview"><link rel="stylesheet" href="openacs.css" type="text/css"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><a href="http://openacs.org"><img src="/doc/images/alex.jpg" border="0" alt="Alex logo"></a><table width="100%" summary="Navigation header" border="0"><tr><td width="20%" align="left"><a accesskey="p" href="acs-plat-dev.html">Prev</a> </td><th width="60%" align="center">Part�IV.�For OpenACS Platform Developers</th><td width="20%" align="right"> <a accesskey="n" href="kernel-overview.html">Next</a></td></tr></table><hr></div><div class="chapter" lang="en"><div class="titlepage"><div><div><h2 class="title"><a name="kernel-doc"></a>Chapter�15.�Kernel Documentation</h2></div></div><div></div></div><div class="toc"><p><b>Table of Contents</b></p><dl><dt><a href="kernel-overview.html">Overview</a></dt><dt><a href="object-system-requirements.html">Object Model Requirements</a></dt><dt><a href="object-system-design.html">Object Model Design</a></dt><dt><a href="permissions-requirements.html">Permissions Requirements</a></dt><dt><a href="permissions-design.html">Permissions Design</a></dt><dt><a href="groups-requirements.html">Groups Requirements</a></dt><dt><a href="groups-design.html">Groups Design</a></dt><dt><a href="subsites-requirements.html">Subsites Requirements</a></dt><dt><a href="subsites-design.html">Subsites Design Document</a></dt><dt><a href="apm-requirements.html">Package Manager Requirements</a></dt><dt><a href="apm-design.html">Package Manager Design</a></dt><dt><a href="db-api-detailed.html">Database Access API</a></dt><dt><a href="i18n-requirements.html">OpenACS Internationalization Requirements</a></dt><dt><a href="security-requirements.html">Security Requirements</a></dt><dt><a href="security-design.html">Security Design</a></dt><dt><a href="security-notes.html">Security Notes</a></dt><dt><a href="rp-requirements.html">Request Processor Requirements</a></dt><dt><a href="rp-design.html">Request Processor Design</a></dt><dt><a href="tcl-doc.html">Documenting Tcl Files: Page Contracts and Libraries</a></dt><dt><a href="bootstrap-acs.html">Bootstrapping OpenACS</a></dt><dt><a href="ext-auth-requirements.html">External Authentication Requirements</a></dt></dl></div></div><div class="navfooter"><hr><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="acs-plat-dev.html">Prev</a> </td><td width="20%" align="center"><a accesskey="h" href="index.html">Home</a></td><td width="40%" align="right"> <a accesskey="n" href="kernel-overview.html">Next</a></td></tr><tr><td width="40%" align="left">Part�IV.�For OpenACS Platform Developers </td><td width="20%" align="center"><a accesskey="u" href="acs-plat-dev.html">Up</a></td><td width="40%" align="right"> Overview</td></tr></table><hr><address><a href="mailto:docs@openacs.org">docs@openacs.org</a></address></div><a name="comments"></a><center><a href="http://openacs.org/doc/current/kernel-doc.html#comments">View comments on this page at openacs.org</a></center></body></html>
Index: openacs-4/packages/acs-core-docs/www/kernel-overview.html
===================================================================
RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/kernel-overview.html,v
diff -u -r1.24 -r1.24.4.1
--- openacs-4/packages/acs-core-docs/www/kernel-overview.html	17 Jul 2006 05:38:31 -0000	1.24
+++ openacs-4/packages/acs-core-docs/www/kernel-overview.html	3 Feb 2008 12:07:39 -0000	1.24.4.1
@@ -1,4 +1,5 @@
-<html><head><meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"><title>Overview</title><meta name="generator" content="DocBook XSL Stylesheets V1.70.1"><link rel="home" href="index.html" title="OpenACS Core Documentation"><link rel="up" href="kernel-doc.html" title="Chapter�15.�Kernel Documentation"><link rel="previous" href="kernel-doc.html" title="Chapter�15.�Kernel Documentation"><link rel="next" href="object-system-requirements.html" title="Object Model Requirements"><link rel="stylesheet" href="openacs.css" type="text/css"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><a href="http://openacs.org"><img src="/doc/images/alex.jpg" border="0" alt="Alex logo"></a><table width="100%" summary="Navigation header" border="0"><tr><td width="20%" align="left"><a accesskey="p" href="kernel-doc.html">Prev</a> </td><th width="60%" align="center">Chapter�15.�Kernel Documentation</th><td width="20%" align="right"> <a accesskey="n" href="object-system-requirements.html">Next</a></td></tr></table><hr></div><div class="sect1" lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="kernel-overview"></a>Overview</h2></div></div></div><div class="itemizedlist"><ul type="disc"><li><p>
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html><head><meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"><title>Overview</title><meta name="generator" content="DocBook XSL Stylesheets V1.60.1"><link rel="home" href="index.html" title="OpenACS Core Documentation"><link rel="up" href="kernel-doc.html" title="Chapter�15.�Kernel Documentation"><link rel="previous" href="kernel-doc.html" title="Chapter�15.�Kernel Documentation"><link rel="next" href="object-system-requirements.html" title="Object Model Requirements"><link rel="stylesheet" href="openacs.css" type="text/css"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><a href="http://openacs.org"><img src="/doc/images/alex.jpg" border="0" alt="Alex logo"></a><table width="100%" summary="Navigation header" border="0"><tr><td width="20%" align="left"><a accesskey="p" href="kernel-doc.html">Prev</a> </td><th width="60%" align="center">Chapter�15.�Kernel Documentation</th><td width="20%" align="right"> <a accesskey="n" href="object-system-requirements.html">Next</a></td></tr></table><hr></div><div class="sect1" lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="kernel-overview"></a>Overview</h2></div></div><div></div></div><div class="itemizedlist"><ul type="disc"><li><p>
               The <span class="emphasis"><em>OpenACS Kernel</em></span>, which
               handles system-wide necessities such as metadata,
               security, users and groups, subsites, and package
Index: openacs-4/packages/acs-core-docs/www/mac-installation.html
===================================================================
RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/mac-installation.html,v
diff -u -r1.36 -r1.36.4.1
--- openacs-4/packages/acs-core-docs/www/mac-installation.html	17 Jul 2006 05:38:31 -0000	1.36
+++ openacs-4/packages/acs-core-docs/www/mac-installation.html	3 Feb 2008 12:07:39 -0000	1.36.4.1
@@ -1,8 +1,9 @@
-<html><head><meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"><title>OpenACS Installation Guide for Mac OS X</title><meta name="generator" content="DocBook XSL Stylesheets V1.70.1"><link rel="home" href="index.html" title="OpenACS Core Documentation"><link rel="up" href="complete-install.html" title="Chapter�3.�Complete Installation"><link rel="previous" href="win2k-installation.html" title="OpenACS Installation Guide for Windows2000"><link rel="next" href="configuring-new-site.html" title="Chapter�4.�Configuring a new OpenACS Site"><link rel="stylesheet" href="openacs.css" type="text/css"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><a href="http://openacs.org"><img src="/doc/images/alex.jpg" border="0" alt="Alex logo"></a><table width="100%" summary="Navigation header" border="0"><tr><td width="20%" align="left"><a accesskey="p" href="win2k-installation.html">Prev</a> </td><th width="60%" align="center">Chapter�3.�Complete Installation</th><td width="20%" align="right"> <a accesskey="n" href="configuring-new-site.html">Next</a></td></tr></table><hr></div><div class="sect1" lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="mac-installation"></a>OpenACS Installation Guide for Mac OS X</h2></div></div></div><p><b>Prerequisites.�</b>Install readline:</p><div class="orderedlist"><ol type="1"><li><p>Download readline from http://ftp.gnu.org/pub/gnu/readline/readline-4.3.tar.gz into /usr/local/src</p></li><li><p>Extract readline in /usr/local/src, configure, compile, and install:</p><pre class="screen"><strong class="userinput"><code>su - root
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html><head><meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"><title>OpenACS Installation Guide for Mac OS X</title><meta name="generator" content="DocBook XSL Stylesheets V1.60.1"><link rel="home" href="index.html" title="OpenACS Core Documentation"><link rel="up" href="complete-install.html" title="Chapter�3.�Complete Installation"><link rel="previous" href="win2k-installation.html" title="OpenACS Installation Guide for Windows2000"><link rel="next" href="configuring-new-site.html" title="Chapter�4.�Configuring a new OpenACS Site"><link rel="stylesheet" href="openacs.css" type="text/css"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><a href="http://openacs.org"><img src="/doc/images/alex.jpg" border="0" alt="Alex logo"></a><table width="100%" summary="Navigation header" border="0"><tr><td width="20%" align="left"><a accesskey="p" href="win2k-installation.html">Prev</a> </td><th width="60%" align="center">Chapter�3.�Complete Installation</th><td width="20%" align="right"> <a accesskey="n" href="configuring-new-site.html">Next</a></td></tr></table><hr></div><div class="sect1" lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="mac-installation"></a>OpenACS Installation Guide for Mac OS X</h2></div></div><div></div></div><p><b>Prerequisites.�</b>Install readline:</p><div class="orderedlist"><ol type="1"><li><p>Download readline from http://ftp.gnu.org/pub/gnu/readline/readline-4.3.tar.gz into /usr/local/src</p></li><li><p>Extract readline in /usr/local/src, configure, compile, and install:</p><pre class="screen"><b class="userinput"><tt>su - root
 cd /usr/local/src
 tar xvfz readline-4.3.tar.gz
 readline-4.3
 ./configure
 make
-make install</code></strong></pre></li><li><p>Proceed with the Unix-like system instructions.  OS X is incompatible with Oracle 8, and Oracle 9i on OSX is not yet verified for OpenACS.  So continue with <a href="postgres.html">Install PostgreSQL</a>.  Additional special steps for OS X are documented inline with the standard Unix-like instructions.</p></li></ol></div><p>Additional resources for installing on OS X.</p><div class="itemizedlist"><ul type="disc"><li><p><a href="http://borkware.com/rants/openacs/" target="_top">OpenACS on Mac OS X Quickstart</a></p></li><li><p><a href="http://openacs.org/forums/message-view?message_id=24887" target="_top">An
+make install</tt></b></pre></li><li><p>Proceed with the Unix-like system instructions.  OS X is incompatible with Oracle 8, and Oracle 9i on OSX is not yet verified for OpenACS.  So continue with <a href="postgres.html">Install PostgreSQL</a>.  Additional special steps for OS X are documented inline with the standard Unix-like instructions.</p></li></ol></div><p>Additional resources for installing on OS X.</p><div class="itemizedlist"><ul type="disc"><li><p><a href="http://borkware.com/rants/openacs/" target="_top">OpenACS on Mac OS X Quickstart</a></p></li><li><p><a href="http://openacs.org/forums/message-view?message_id=24887" target="_top">An
     older forum thread</a></p></li></ul></div><div class="cvstag">($Id$)</div></div><div class="navfooter"><hr><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="win2k-installation.html">Prev</a> </td><td width="20%" align="center"><a accesskey="h" href="index.html">Home</a></td><td width="40%" align="right"> <a accesskey="n" href="configuring-new-site.html">Next</a></td></tr><tr><td width="40%" align="left">OpenACS Installation Guide for Windows2000 </td><td width="20%" align="center"><a accesskey="u" href="complete-install.html">Up</a></td><td width="40%" align="right"> Chapter�4.�Configuring a new OpenACS Site</td></tr></table><hr><address><a href="mailto:docs@openacs.org">docs@openacs.org</a></address></div><a name="comments"></a><center><a href="http://openacs.org/doc/current/mac-installation.html#comments">View comments on this page at openacs.org</a></center></body></html>
Index: openacs-4/packages/acs-core-docs/www/maint-performance.html
===================================================================
RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/maint-performance.html,v
diff -u -r1.22 -r1.22.4.1
--- openacs-4/packages/acs-core-docs/www/maint-performance.html	17 Jul 2006 05:38:31 -0000	1.22
+++ openacs-4/packages/acs-core-docs/www/maint-performance.html	3 Feb 2008 12:07:39 -0000	1.22.4.1
@@ -1,7 +1,8 @@
-<html><head><meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"><title>Diagnosing Performance Problems</title><meta name="generator" content="DocBook XSL Stylesheets V1.70.1"><link rel="home" href="index.html" title="OpenACS Core Documentation"><link rel="up" href="maintenance-web.html" title="Chapter�6.�Production Environments"><link rel="previous" href="uptime.html" title="External uptime validation"><link rel="next" href="database-management.html" title="Chapter�7.�Database Management"><link rel="stylesheet" href="openacs.css" type="text/css"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><a href="http://openacs.org"><img src="/doc/images/alex.jpg" border="0" alt="Alex logo"></a><table width="100%" summary="Navigation header" border="0"><tr><td width="20%" align="left"><a accesskey="p" href="uptime.html">Prev</a> </td><th width="60%" align="center">Chapter�6.�Production Environments</th><td width="20%" align="right"> <a accesskey="n" href="database-management.html">Next</a></td></tr></table><hr></div><div class="sect1" lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="maint-performance"></a>Diagnosing Performance Problems</h2></div></div></div><div class="itemizedlist"><ul type="disc"><li><p>Did performance problems happen overnight, or did they sneak up on
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html><head><meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"><title>Diagnosing Performance Problems</title><meta name="generator" content="DocBook XSL Stylesheets V1.60.1"><link rel="home" href="index.html" title="OpenACS Core Documentation"><link rel="up" href="maintenance-web.html" title="Chapter�6.�Production Environments"><link rel="previous" href="uptime.html" title="External uptime validation"><link rel="next" href="database-management.html" title="Chapter�7.�Database Management"><link rel="stylesheet" href="openacs.css" type="text/css"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><a href="http://openacs.org"><img src="/doc/images/alex.jpg" border="0" alt="Alex logo"></a><table width="100%" summary="Navigation header" border="0"><tr><td width="20%" align="left"><a accesskey="p" href="uptime.html">Prev</a> </td><th width="60%" align="center">Chapter�6.�Production Environments</th><td width="20%" align="right"> <a accesskey="n" href="database-management.html">Next</a></td></tr></table><hr></div><div class="sect1" lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="maint-performance"></a>Diagnosing Performance Problems</h2></div></div><div></div></div><div class="itemizedlist"><ul type="disc"><li><p>Did performance problems happen overnight, or did they sneak up on
     you? Any clue what caused the performance problems (e.g. loading 20K
-    users into .LRN)</p></li><li><p>Is the file system out of space?  Is the machine swapping to disk constantly?</p></li><li><p>Isolating and solving database problems.</p><div class="itemizedlist"><ul type="circle"><li><p>Without daily internal maintenance, most databases slowly degrade in performance.  For PostGreSQL, see <a href="install-next-nightly-vacuum.html" title="Vacuum Postgres nightly">the section called &#8220;Vacuum Postgres nightly&#8221;</a>.  For Oracle, use <code class="computeroutput">exec dbms_stats.gather_schema_stats('SCHEMA_NAME')</code> (<a href="http://www.piskorski.com/docs/oracle.html" target="_top">Andrew Piskorski's Oracle notes</a>).</p></li><li><p>You can track the exact amount of time each database query on a page takes:</p><div class="orderedlist"><ol type="1"><li><p>Go to <a href="/acs-admin/install" target="_top">Main Site : Site-Wide Administration : Install Software</a></p></li><li><p>Click on "Install New Application" in "Install from OpenACS Repository"</p></li><li><p>Choose "ACS Developer Support"&gt;</p></li><li><p>After install is complete, restart the server.</p></li><li><p>Browse to Developer Support, which is automatically mounted at <code class="computeroutput"><a href="/ds" target="_top">/ds</a></code>.
-              </p></li><li><p>Turn on Database statistics</p></li><li><p>Browse directly to a slow page and click "Request Information" at the bottom of the page.</p></li><li><p>This should return a list of database queries on the page, including the exact query (so it can be cut-paste into psql or oracle) and the time each query took.</p><div class="figure"><a name="id1073458"></a><p class="title"><b>Figure�6.8.�Query Analysis example</b></p><div class="figure-contents"><div class="mediaobject"><img src="images/query-duration.png" alt="Query Analysis example"></div></div></div><br class="figure-break"></li></ol></div></li><li><p>Identify a runaway Oracle query: first, use <strong class="userinput"><code>ps aux</code></strong> or <strong class="userinput"><code>top</code></strong> to get the UNIX process ID of a runaway Oracle process.</p><p>Log in to SQL*Plus as the admin:</p><pre class="screen">[<span class="replaceable"><span class="replaceable">$OPENACS_SERVICE_NAME</span></span> ~]$ svrmgrl
+    users into .LRN)</p></li><li><p>Is the file system out of space?  Is the machine swapping to disk constantly?</p></li><li><p>Isolating and solving database problems.</p><div class="itemizedlist"><ul type="circle"><li><p>Without daily internal maintenance, most databases slowly degrade in performance.  For PostGreSQL, see <a href="install-next-nightly-vacuum.html" title="Vacuum Postgres nightly">Section�, &#8220;Vacuum Postgres nightly&#8221;</a>.  For Oracle, use <tt class="computeroutput">exec dbms_stats.gather_schema_stats('SCHEMA_NAME')</tt> (<a href="http://www.piskorski.com/docs/oracle.html" target="_top">Andrew Piskorski's Oracle notes</a>).</p></li><li><p>You can track the exact amount of time each database query on a page takes:</p><div class="orderedlist"><ol type="1"><li><p>Go to <a href="/acs-admin/install" target="_top">Main Site : Site-Wide Administration : Install Software</a></p></li><li><p>Click on &quot;Install New Application&quot; in &quot;Install from OpenACS Repository&quot;</p></li><li><p>Choose &quot;ACS Developer Support&quot;&gt;</p></li><li><p>After install is complete, restart the server.</p></li><li><p>Browse to Developer Support, which is automatically mounted at <tt class="computeroutput"><a href="/ds" target="_top">/ds</a></tt>.
+              </p></li><li><p>Turn on Database statistics</p></li><li><p>Browse directly to a slow page and click &quot;Request Information&quot; at the bottom of the page.</p></li><li><p>This should return a list of database queries on the page, including the exact query (so it can be cut-paste into psql or oracle) and the time each query took.</p><div class="figure"><a name="id2987604"></a><p class="title"><b>Figure�6.8.�Query Analysis example</b></p><div class="mediaobject"><img src="../images/query-duration.png" alt="Query Analysis example"></div></div></li></ol></div></li><li><p>Identify a runaway Oracle query: first, use <b class="userinput"><tt>ps aux</tt></b> or <b class="userinput"><tt>top</tt></b> to get the UNIX process ID of a runaway Oracle process.</p><p>Log in to SQL*Plus as the admin:</p><pre class="screen">[<span class="replaceable"><span class="replaceable">$OPENACS_SERVICE_NAME</span></span> ~]$ svrmgrl
 
 Oracle Server Manager Release 3.1.7.0.0 - Production
 
@@ -11,7 +12,7 @@
 With the Partitioning option
 JServer Release 8.1.7.3.0 - Production
 
-SVRMGR&gt; <strong class="userinput"><code>connect internal</code></strong>	        
+SVRMGR&gt; <b class="userinput"><tt>connect internal</tt></b>	        
 Password:</pre><p>See all of the running queries, and match the UNIX PID:</p><pre class="programlisting">select p.spid  -- The UNIX PID
        ,s.sid  ,s.serial#
        ,p.username  as os_user
@@ -26,7 +27,7 @@
  where sql.address    = s.sql_address
    and sql.hash_value = s.sql_hash_value
  --and upper(s.username) like 'USERNAME%'
- order by s.username ,s.sid ,s.serial# ,sql.piece ;</pre><p>To kill a troubled process:</p><pre class="programlisting">alter system kill session 'SID,SERIAL#';  --substitute values for SID and SERIAL#</pre><p>(See <a href="http://www.piskorski.com/docs/oracle.html" target="_top">Andrew Piskorski's Oracle notes</a>)</p></li><li><p>Identify a runaway Postgres query.  First, logging must be enabled in the database.  This imposes a performance penalty and should not be done in normal operation.</p><p>Edit the file <code class="computeroutput">postgresql.conf</code> - its location depends on the PostGreSQL installation - and change</p><pre class="programlisting">#stats_command_string = false</pre><p>to</p><pre class="programlisting">stats_command_string = true</pre><p>Next, connect to postgres (<code class="computeroutput">psql <span class="replaceable"><span class="replaceable">service0</span></span></code>) and <code class="computeroutput">select * from pg_stat_activity;</code>.  Typical output should look like:</p><pre class="programlisting">
+ order by s.username ,s.sid ,s.serial# ,sql.piece ;</pre><p>To kill a troubled process:</p><pre class="programlisting">alter system kill session 'SID,SERIAL#';  --substitute values for SID and SERIAL#</pre><p>(See <a href="http://www.piskorski.com/docs/oracle.html" target="_top">Andrew Piskorski's Oracle notes</a>)</p></li><li><p>Identify a runaway Postgres query.  First, logging must be enabled in the database.  This imposes a performance penalty and should not be done in normal operation.</p><p>Edit the file <tt class="computeroutput">postgresql.conf</tt> - its location depends on the PostGreSQL installation - and change</p><pre class="programlisting">#stats_command_string = false</pre><p>to</p><pre class="programlisting">stats_command_string = true</pre><p>Next, connect to postgres (<tt class="computeroutput">psql <span class="replaceable"><span class="replaceable">service0</span></span></tt>) and <tt class="computeroutput">select * from pg_stat_activity;</tt>.  Typical output should look like:</p><pre class="programlisting">
   datid   |   datname   | procpid | usesysid | usename |  current_query
 ----------+-------------+---------+----------+---------+-----------------
  64344418 | openacs.org |   14122 |      101 | nsadmin | &lt;IDLE&gt;
@@ -41,7 +42,7 @@
  64344418 | openacs.org |   14311 |      101 | nsadmin | &lt;IDLE&gt;
  64344418 | openacs.org |   14549 |      101 | nsadmin | &lt;IDLE&gt;
 (8 rows)
-openacs.org=&gt;</pre></li></ul></div></li></ul></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="install-oracle-monitoring"></a>Creating an appropriate tuning and monitoring environment</h3></div></div></div><p>
+openacs.org=&gt;</pre></li></ul></div></li></ul></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="install-oracle-monitoring"></a>Creating an appropriate tuning and monitoring environment</h3></div></div><div></div></div><p>
       The first task is to create an appropriate environment for finding out
       what is going on inside Oracle. Oracle provides Statspack, a package to
       monitor and save the state of the v$ performance views. These reports
@@ -57,10 +58,10 @@
       Oracle Support information.
     </p><p>
       To be able to get a overview of how Oracle executes a particular query,
-      install "autotrace". I usually follow the instructions here <a href="http://asktom.oracle.com/~tkyte/article1/autotrace.html" target="_top">http://asktom.oracle.com/~tkyte/article1/autotrace.html</a>.
-    </p><div class="sect3" lang="en"><div class="titlepage"><div><div><h4 class="title"><a name="id1073657"></a>Make sure, that the Oracle CBO works with adequate statistics</h4></div></div></div><p>
+      install &quot;autotrace&quot;. I usually follow the instructions here <a href="http://asktom.oracle.com/~tkyte/article1/autotrace.html" target="_top">http://asktom.oracle.com/~tkyte/article1/autotrace.html</a>.
+    </p><div class="sect3" lang="en"><div class="titlepage"><div><div><h4 class="title"><a name="id2987888"></a>Make sure, that the Oracle CBO works with adequate statistics</h4></div></div><div></div></div><p>
     The Oracle Cost Based optimizer is a piece of software that tries to find
-    the "optimal" execution plan for a given SQL statement. For that it
+    the &quot;optimal&quot; execution plan for a given SQL statement. For that it
     estimates the costs of running a SQL query in a particular way (by default
     up to 80.000 permutations are being tested in a Oracle 8i). To get an
     adequate cost estimate, the CBO needs to have adequate statistics. For
Index: openacs-4/packages/acs-core-docs/www/maintenance-deploy.html
===================================================================
RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/maintenance-deploy.html,v
diff -u -r1.17 -r1.17.4.1
--- openacs-4/packages/acs-core-docs/www/maintenance-deploy.html	17 Jul 2006 05:38:31 -0000	1.17
+++ openacs-4/packages/acs-core-docs/www/maintenance-deploy.html	3 Feb 2008 12:07:39 -0000	1.17.4.1
@@ -1,7 +1,8 @@
-<html><head><meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"><title>Staged Deployment for Production Networks</title><meta name="generator" content="DocBook XSL Stylesheets V1.70.1"><link rel="home" href="index.html" title="OpenACS Core Documentation"><link rel="up" href="maintenance-web.html" title="Chapter�6.�Production Environments"><link rel="previous" href="high-avail.html" title="High Availability/High Performance Configurations"><link rel="next" href="install-ssl.html" title="Installing SSL Support for an OpenACS service"><link rel="stylesheet" href="openacs.css" type="text/css"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><a href="http://openacs.org"><img src="/doc/images/alex.jpg" border="0" alt="Alex logo"></a><table width="100%" summary="Navigation header" border="0"><tr><td width="20%" align="left"><a accesskey="p" href="high-avail.html">Prev</a> </td><th width="60%" align="center">Chapter�6.�Production Environments</th><td width="20%" align="right"> <a accesskey="n" href="install-ssl.html">Next</a></td></tr></table><hr></div><div class="sect1" lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="maintenance-deploy"></a>Staged Deployment for Production Networks</h2></div></div></div><div class="authorblurb"><div class="cvstag">($Id$)</div><p>By <a href="mailto:joel@aufrecht.org" target="_top">Joel Aufrecht</a></p>
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html><head><meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"><title>Staged Deployment for Production Networks</title><meta name="generator" content="DocBook XSL Stylesheets V1.60.1"><link rel="home" href="index.html" title="OpenACS Core Documentation"><link rel="up" href="maintenance-web.html" title="Chapter�6.�Production Environments"><link rel="previous" href="high-avail.html" title="High Availability/High Performance Configurations"><link rel="next" href="install-ssl.html" title="Installing SSL Support for an OpenACS service"><link rel="stylesheet" href="openacs.css" type="text/css"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><a href="http://openacs.org"><img src="/doc/images/alex.jpg" border="0" alt="Alex logo"></a><table width="100%" summary="Navigation header" border="0"><tr><td width="20%" align="left"><a accesskey="p" href="high-avail.html">Prev</a> </td><th width="60%" align="center">Chapter�6.�Production Environments</th><td width="20%" align="right"> <a accesskey="n" href="install-ssl.html">Next</a></td></tr></table><hr></div><div class="sect1" lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="maintenance-deploy"></a>Staged Deployment for Production Networks</h2></div></div><div></div></div><div class="authorblurb"><div class="cvstag">($Id$)</div><p>By <a href="mailto:joel@aufrecht.org" target="_top">Joel Aufrecht</a></p>
           OpenACS docs are written by the named authors, and may be edited
           by OpenACS documentation staff.
-        </div><p>This section describes two minimal-risk methods for deploying changes on a production network.  The important characteristics of a safe change deployment include:  (THIS SECTION IN DEVELOPMENT)</p><div class="itemizedlist"><ul type="disc"><li><p>Control: You know for sure that the change you are making is the change that you intend to make and is the change that you tested.</p></li><li><p>Rollback: If anything goes wrong, you can return to the previous working configuration safely and quickly.</p></li></ul></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id1072593"></a>Method 1: Deployment with CVS</h3></div></div></div><p>With this method, we control the files on a site via
+        </div><p>This section describes two minimal-risk methods for deploying changes on a production network.  The important characteristics of a safe change deployment include:  (THIS SECTION IN DEVELOPMENT)</p><div class="itemizedlist"><ul type="disc"><li><p>Control: You know for sure that the change you are making is the change that you intend to make and is the change that you tested.</p></li><li><p>Rollback: If anything goes wrong, you can return to the previous working configuration safely and quickly.</p></li></ul></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id2986398"></a>Method 1: Deployment with CVS</h3></div></div><div></div></div><p>With this method, we control the files on a site via
       CVS. This example uses one developmental server (service0-dev) and one
       production server (service0). Depending on your needs, you can also
       have a staging server for extensive testing before you go
@@ -41,7 +42,7 @@
 /usr/local/pgsql/bin/psql -f /var/lib/aolserver/service0-dev/packages/acs-kernel/sql/postgresql/postgresql.sql service0
 mv /var/lib/aolserver/service0/database-backup/service0-nightly-backup.dmp.gz /var/lib/aolserver/service0-dev/database-backup/service0-nightly-backup-old.dmp.gz
 /bin/gunzip /var/lib/aolserver/service0-dev/database-backup/service0-nightly-backup.dmp.gz
-/usr/bin/perl -pi -e "s/^\\connect service0$/\\connect service0-dev/" /var/lib/aolserver/service0-dev/database-backup/service0-nightly-backup.dmp
+/usr/bin/perl -pi -e &quot;s/^\\connect service0$/\\connect service0-dev/&quot; /var/lib/aolserver/service0-dev/database-backup/service0-nightly-backup.dmp
 /usr/local/pgsql/bin/psql service0-dev &lt; /var/lib/aolserver/service0-dev/database-backup/service0-nightly-backup.dmp
 /usr/local/bin/svc -u /service/service0-dev
 /bin/gzip /var/lib/aolserver/service0-dev/database-backup/service0-nightly-backup-old.dmp
@@ -58,12 +59,12 @@
 the lines starting &gt; will be added and the lines
 starting &lt; will be removed, when you commit
 if that looks okay, commit with: 
-cvs -m "changing text on front page for February conference" index.adp
-the stuff in -m "service0" is a comment visible only from within cvs commands
+cvs -m &quot;changing text on front page for February conference&quot; index.adp
+the stuff in -m &quot;service0&quot; is a comment visible only from within cvs commands
 </pre><p>To make these changes take place on service0:</p><pre class="programlisting">
 4) update the file on production:
 cd /var/lib/aolserver/service0/www
 cvs up -Pd index.adp</pre><p>If you make changes that require changes to the database,
       test them out first on service0-dev, using either -create.sql or
       upgrade scripts. Once you've tested them, you then update and
-      run the upgrade scripts from the package manager. </p><p>The production site can run "HEAD" from cvs.</p><p>The drawback to using HEAD as the live code is that you cannot commit new work on the development server without erasing the definition of 'working production code.'  So a better method is to use a tag.  This guarantees that, at any time in the future, you can retrieve exactly the same set of code.  This is useful for both of the characteristics of safe change deployment.  For control, you can use tags to define a body of code, test that code, and then know that what you are deploying is exactly that code.  For rollback, you can use return to the last working tag if the new tag (or new, untagged changes) cause problems.  .... example of using tags to follow ...</p></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id1072688"></a>Method 2: A/B Deployment</h3></div></div></div><p>The approach taken in this section is to always create a new service with the desired changes, running in parallel with the existing site.  This guarantees control, at least at the final step of the process: you know what changes you are about to make because you can see them directly.  It does not, by itself, guarantee the entire control chain.  You need additional measures to make sure that the change you are making is exactly and completely the change you intended to make and tested previously, and nothing more.  Those additional measures typically take the form of source control tags and system version numbers.  The parallel-server approach also guarantees rollback because the original working service is not touched; it is merely set aside.</p><p>This approach can has limitations.  If the database or file system regularly receiving new data, you must interrupt this function or risk losing data in the shuffle.  It also requires extra steps if the database will be affected.</p><div class="sect3" lang="en"><div class="titlepage"><div><div><h4 class="title"><a name="id1072704"></a>Simple A/B Deployment: Database is not changed</h4></div></div></div><div class="figure"><a name="id1072710"></a><p class="title"><b>Figure�6.2.�Simple A/B Deployment - Step 1</b></p><div class="figure-contents"><div class="mediaobject" align="center"><img src="images/simple-deploy-1.png" align="middle" alt="Simple A/B Deployment - Step 1"></div></div></div><br class="figure-break"><div class="figure"><a name="id1072732"></a><p class="title"><b>Figure�6.3.�Simple A/B Deployment - Step 2</b></p><div class="figure-contents"><div class="mediaobject" align="center"><img src="images/simple-deploy-2.png" align="middle" alt="Simple A/B Deployment - Step 2"></div></div></div><br class="figure-break"><div class="figure"><a name="id1072754"></a><p class="title"><b>Figure�6.4.�Simple A/B Deployment - Step 3</b></p><div class="figure-contents"><div class="mediaobject" align="center"><img src="images/simple-deploy-3.png" align="middle" alt="Simple A/B Deployment - Step 3"></div></div></div><br class="figure-break"></div><div class="sect3" lang="en"><div class="titlepage"><div><div><h4 class="title"><a name="id1072778"></a>Complex A/B Deployment: Database is changed</h4></div></div></div><div class="figure"><a name="id1072784"></a><p class="title"><b>Figure�6.5.�Complex A/B Deployment - Step 1</b></p><div class="figure-contents"><div class="mediaobject" align="center"><img src="images/complex-deploy-1.png" align="middle" alt="Complex A/B Deployment - Step 1"></div></div></div><br class="figure-break"><div class="figure"><a name="id1072806"></a><p class="title"><b>Figure�6.6.�Complex A/B Deployment - Step 2</b></p><div class="figure-contents"><div class="mediaobject" align="center"><img src="images/complex-deploy-2.png" align="middle" alt="Complex A/B Deployment - Step 2"></div></div></div><br class="figure-break"><div class="figure"><a name="id1072829"></a><p class="title"><b>Figure�6.7.�Complex A/B Deployment - Step 3</b></p><div class="figure-contents"><div class="mediaobject" align="center"><img src="images/complex-deploy-3.png" align="middle" alt="Complex A/B Deployment - Step 3"></div></div></div><br class="figure-break"></div></div></div><div class="navfooter"><hr><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="high-avail.html">Prev</a> </td><td width="20%" align="center"><a accesskey="h" href="index.html">Home</a></td><td width="40%" align="right"> <a accesskey="n" href="install-ssl.html">Next</a></td></tr><tr><td width="40%" align="left">High Availability/High Performance Configurations </td><td width="20%" align="center"><a accesskey="u" href="maintenance-web.html">Up</a></td><td width="40%" align="right"> Installing SSL Support for an OpenACS service</td></tr></table><hr><address><a href="mailto:docs@openacs.org">docs@openacs.org</a></address></div><a name="comments"></a><center><a href="http://openacs.org/doc/current/maintenance-deploy.html#comments">View comments on this page at openacs.org</a></center></body></html>
+      run the upgrade scripts from the package manager. </p><p>The production site can run &quot;HEAD&quot; from cvs.</p><p>The drawback to using HEAD as the live code is that you cannot commit new work on the development server without erasing the definition of 'working production code.'  So a better method is to use a tag.  This guarantees that, at any time in the future, you can retrieve exactly the same set of code.  This is useful for both of the characteristics of safe change deployment.  For control, you can use tags to define a body of code, test that code, and then know that what you are deploying is exactly that code.  For rollback, you can use return to the last working tag if the new tag (or new, untagged changes) cause problems.  .... example of using tags to follow ...</p></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id2986569"></a>Method 2: A/B Deployment</h3></div></div><div></div></div><p>The approach taken in this section is to always create a new service with the desired changes, running in parallel with the existing site.  This guarantees control, at least at the final step of the process: you know what changes you are about to make because you can see them directly.  It does not, by itself, guarantee the entire control chain.  You need additional measures to make sure that the change you are making is exactly and completely the change you intended to make and tested previously, and nothing more.  Those additional measures typically take the form of source control tags and system version numbers.  The parallel-server approach also guarantees rollback because the original working service is not touched; it is merely set aside.</p><p>This approach can has limitations.  If the database or file system regularly receiving new data, you must interrupt this function or risk losing data in the shuffle.  It also requires extra steps if the database will be affected.</p><div class="sect3" lang="en"><div class="titlepage"><div><div><h4 class="title"><a name="id2986602"></a>Simple A/B Deployment: Database is not changed</h4></div></div><div></div></div><div class="figure"><a name="id2986610"></a><p class="title"><b>Figure�6.2.�Simple A/B Deployment - Step 1</b></p><div class="mediaobject" align="center"><img src="../images/simple-deploy-1.png" align="middle" alt="Simple A/B Deployment - Step 1"></div></div><div class="figure"><a name="id2986641"></a><p class="title"><b>Figure�6.3.�Simple A/B Deployment - Step 2</b></p><div class="mediaobject" align="center"><img src="../images/simple-deploy-2.png" align="middle" alt="Simple A/B Deployment - Step 2"></div></div><div class="figure"><a name="id2986672"></a><p class="title"><b>Figure�6.4.�Simple A/B Deployment - Step 3</b></p><div class="mediaobject" align="center"><img src="../images/simple-deploy-3.png" align="middle" alt="Simple A/B Deployment - Step 3"></div></div></div><div class="sect3" lang="en"><div class="titlepage"><div><div><h4 class="title"><a name="id2986704"></a>Complex A/B Deployment: Database is changed</h4></div></div><div></div></div><div class="figure"><a name="id2986711"></a><p class="title"><b>Figure�6.5.�Complex A/B Deployment - Step 1</b></p><div class="mediaobject" align="center"><img src="../images/complex-deploy-1.png" align="middle" alt="Complex A/B Deployment - Step 1"></div></div><div class="figure"><a name="id2986742"></a><p class="title"><b>Figure�6.6.�Complex A/B Deployment - Step 2</b></p><div class="mediaobject" align="center"><img src="../images/complex-deploy-2.png" align="middle" alt="Complex A/B Deployment - Step 2"></div></div><div class="figure"><a name="id2986773"></a><p class="title"><b>Figure�6.7.�Complex A/B Deployment - Step 3</b></p><div class="mediaobject" align="center"><img src="../images/complex-deploy-3.png" align="middle" alt="Complex A/B Deployment - Step 3"></div></div></div></div></div><div class="navfooter"><hr><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="high-avail.html">Prev</a> </td><td width="20%" align="center"><a accesskey="h" href="index.html">Home</a></td><td width="40%" align="right"> <a accesskey="n" href="install-ssl.html">Next</a></td></tr><tr><td width="40%" align="left">High Availability/High Performance Configurations </td><td width="20%" align="center"><a accesskey="u" href="maintenance-web.html">Up</a></td><td width="40%" align="right"> Installing SSL Support for an OpenACS service</td></tr></table><hr><address><a href="mailto:docs@openacs.org">docs@openacs.org</a></address></div><a name="comments"></a><center><a href="http://openacs.org/doc/current/maintenance-deploy.html#comments">View comments on this page at openacs.org</a></center></body></html>
Index: openacs-4/packages/acs-core-docs/www/maintenance-web.html
===================================================================
RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/maintenance-web.html,v
diff -u -r1.34 -r1.34.4.1
--- openacs-4/packages/acs-core-docs/www/maintenance-web.html	17 Jul 2006 05:38:31 -0000	1.34
+++ openacs-4/packages/acs-core-docs/www/maintenance-web.html	3 Feb 2008 12:07:40 -0000	1.34.4.1
@@ -1,4 +1,5 @@
-<html><head><meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"><title>Chapter�6.�Production Environments</title><meta name="generator" content="DocBook XSL Stylesheets V1.70.1"><link rel="home" href="index.html" title="OpenACS Core Documentation"><link rel="up" href="acs-admin.html" title="Part�II.�Administrator's Guide"><link rel="previous" href="upgrade-supporting.html" title="Upgrading Platform components"><link rel="next" href="install-openacs-keepalive.html" title="Starting and Stopping an OpenACS instance."><link rel="stylesheet" href="openacs.css" type="text/css"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><a href="http://openacs.org"><img src="/doc/images/alex.jpg" border="0" alt="Alex logo"></a><table width="100%" summary="Navigation header" border="0"><tr><td width="20%" align="left"><a accesskey="p" href="upgrade-supporting.html">Prev</a> </td><th width="60%" align="center">Part�II.�Administrator's Guide</th><td width="20%" align="right"> <a accesskey="n" href="install-openacs-keepalive.html">Next</a></td></tr></table><hr></div><div class="chapter" lang="en"><div class="titlepage"><div><div><h2 class="title"><a name="maintenance-web"></a>Chapter�6.�Production Environments</h2></div></div></div><div class="toc"><p><b>Table of Contents</b></p><dl><dt><span class="sect1"><a href="install-openacs-keepalive.html">Starting and Stopping an OpenACS instance.</a></span></dt><dt><span class="sect1"><a href="install-openacs-inittab.html">AOLserver keepalive with inittab</a></span></dt><dt><span class="sect1"><a href="install-next-add-server.html">Running multiple services on one machine</a></span></dt><dt><span class="sect1"><a href="high-avail.html">High Availability/High Performance Configurations</a></span></dt><dt><span class="sect1"><a href="maintenance-deploy.html">Staged Deployment for Production Networks</a></span></dt><dt><span class="sect1"><a href="install-ssl.html">Installing SSL Support for an OpenACS service</a></span></dt><dt><span class="sect1"><a href="analog-setup.html">Set up Log Analysis Reports</a></span></dt><dt><span class="sect1"><a href="uptime.html">External uptime validation</a></span></dt><dt><span class="sect1"><a href="maint-performance.html">Diagnosing Performance Problems</a></span></dt></dl></div><div class="authorblurb"><p>by <a href="mailto:joel@aufrecht.org" target="_top">Joel Aufrecht</a></p>
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html><head><meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"><title>Chapter�6.�Production Environments</title><meta name="generator" content="DocBook XSL Stylesheets V1.60.1"><link rel="home" href="index.html" title="OpenACS Core Documentation"><link rel="up" href="acs-admin.html" title="Part�II.�Administrator's Guide"><link rel="previous" href="upgrade-supporting.html" title="Upgrading Platform components"><link rel="next" href="install-openacs-keepalive.html" title="Starting and Stopping an OpenACS instance."><link rel="stylesheet" href="openacs.css" type="text/css"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><a href="http://openacs.org"><img src="/doc/images/alex.jpg" border="0" alt="Alex logo"></a><table width="100%" summary="Navigation header" border="0"><tr><td width="20%" align="left"><a accesskey="p" href="upgrade-supporting.html">Prev</a> </td><th width="60%" align="center">Part�II.�Administrator's Guide</th><td width="20%" align="right"> <a accesskey="n" href="install-openacs-keepalive.html">Next</a></td></tr></table><hr></div><div class="chapter" lang="en"><div class="titlepage"><div><div><h2 class="title"><a name="maintenance-web"></a>Chapter�6.�Production Environments</h2></div></div><div></div></div><div class="toc"><p><b>Table of Contents</b></p><dl><dt><a href="install-openacs-keepalive.html">Starting and Stopping an OpenACS instance.</a></dt><dt><a href="install-openacs-inittab.html">AOLserver keepalive with inittab</a></dt><dt><a href="install-next-add-server.html">Running multiple services on one machine</a></dt><dt><a href="high-avail.html">High Availability/High Performance Configurations</a></dt><dt><a href="maintenance-deploy.html">Staged Deployment for Production Networks</a></dt><dt><a href="install-ssl.html">Installing SSL Support for an OpenACS service</a></dt><dt><a href="analog-setup.html">Set up Log Analysis Reports</a></dt><dt><a href="uptime.html">External uptime validation</a></dt><dt><a href="maint-performance.html">Diagnosing Performance Problems</a></dt></dl></div><div class="authorblurb"><p>by <a href="mailto:joel@aufrecht.org" target="_top">Joel Aufrecht</a></p>
           OpenACS docs are written by the named authors, and may be edited
           by OpenACS documentation staff.
         </div></div><div class="navfooter"><hr><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="upgrade-supporting.html">Prev</a> </td><td width="20%" align="center"><a accesskey="h" href="index.html">Home</a></td><td width="40%" align="right"> <a accesskey="n" href="install-openacs-keepalive.html">Next</a></td></tr><tr><td width="40%" align="left">Upgrading Platform components </td><td width="20%" align="center"><a accesskey="u" href="acs-admin.html">Up</a></td><td width="40%" align="right"> Starting and Stopping an OpenACS instance.</td></tr></table><hr><address><a href="mailto:docs@openacs.org">docs@openacs.org</a></address></div><a name="comments"></a><center><a href="http://openacs.org/doc/current/maintenance-web.html#comments">View comments on this page at openacs.org</a></center></body></html>
Index: openacs-4/packages/acs-core-docs/www/nxml-mode.html
===================================================================
RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/nxml-mode.html,v
diff -u -r1.11 -r1.11.4.1
--- openacs-4/packages/acs-core-docs/www/nxml-mode.html	17 Jul 2006 05:38:31 -0000	1.11
+++ openacs-4/packages/acs-core-docs/www/nxml-mode.html	3 Feb 2008 12:07:40 -0000	1.11.4.1
@@ -1,4 +1,5 @@
-<html><head><meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"><title>Using nXML mode in Emacs</title><meta name="generator" content="DocBook XSL Stylesheets V1.70.1"><link rel="home" href="index.html" title="OpenACS Core Documentation"><link rel="up" href="doc-standards.html" title="Chapter�13.�Documentation Standards"><link rel="previous" href="psgml-mode.html" title="Using PSGML mode in Emacs"><link rel="next" href="filename.html" title="Detailed Design Documentation Template"><link rel="stylesheet" href="openacs.css" type="text/css"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><a href="http://openacs.org"><img src="/doc/images/alex.jpg" border="0" alt="Alex logo"></a><table width="100%" summary="Navigation header" border="0"><tr><td width="20%" align="left"><a accesskey="p" href="psgml-mode.html">Prev</a> </td><th width="60%" align="center">Chapter�13.�Documentation Standards</th><td width="20%" align="right"> <a accesskey="n" href="filename.html">Next</a></td></tr></table><hr></div><div class="sect1" lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="nxml-mode"></a>Using nXML mode in Emacs</h2></div></div></div><div class="authorblurb"><p>By Jeff Davis</p>
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html><head><meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"><title>Using nXML mode in Emacs</title><meta name="generator" content="DocBook XSL Stylesheets V1.60.1"><link rel="home" href="index.html" title="OpenACS Core Documentation"><link rel="up" href="doc-standards.html" title="Chapter�13.�Documentation Standards"><link rel="previous" href="psgml-mode.html" title="Using PSGML mode in Emacs"><link rel="next" href="filename.html" title="Detailed Design Documentation Template"><link rel="stylesheet" href="openacs.css" type="text/css"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><a href="http://openacs.org"><img src="/doc/images/alex.jpg" border="0" alt="Alex logo"></a><table width="100%" summary="Navigation header" border="0"><tr><td width="20%" align="left"><a accesskey="p" href="psgml-mode.html">Prev</a> </td><th width="60%" align="center">Chapter�13.�Documentation Standards</th><td width="20%" align="right"> <a accesskey="n" href="filename.html">Next</a></td></tr></table><hr></div><div class="sect1" lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="nxml-mode"></a>Using nXML mode in Emacs</h2></div></div><div></div></div><div class="authorblurb"><p>By Jeff Davis</p>
           OpenACS docs are written by the named authors, and may be edited
           by OpenACS documentation staff.
         </div><p>
Index: openacs-4/packages/acs-core-docs/www/object-identity.html
===================================================================
RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/object-identity.html,v
diff -u -r1.42 -r1.42.4.1
--- openacs-4/packages/acs-core-docs/www/object-identity.html	17 Jul 2006 05:38:31 -0000	1.42
+++ openacs-4/packages/acs-core-docs/www/object-identity.html	3 Feb 2008 12:07:40 -0000	1.42.4.1
@@ -1,18 +1,19 @@
-<html><head><meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"><title>Object Identity</title><meta name="generator" content="DocBook XSL Stylesheets V1.70.1"><link rel="home" href="index.html" title="OpenACS Core Documentation"><link rel="up" href="dev-guide.html" title="Chapter�11.�Development Reference"><link rel="previous" href="permissions-tediously-explained.html" title="OpenACS Permissions Tediously Explained"><link rel="next" href="programming-with-aolserver.html" title="Programming with AOLserver"><link rel="stylesheet" href="openacs.css" type="text/css"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><a href="http://openacs.org"><img src="/doc/images/alex.jpg" border="0" alt="Alex logo"></a><table width="100%" summary="Navigation header" border="0"><tr><td width="20%" align="left"><a accesskey="p" href="permissions-tediously-explained.html">Prev</a> </td><th width="60%" align="center">Chapter�11.�Development Reference</th><td width="20%" align="right"> <a accesskey="n" href="programming-with-aolserver.html">Next</a></td></tr></table><hr></div><div class="sect1" lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="object-identity"></a>Object Identity</h2></div></div></div><div class="authorblurb"><p>By <a href="http://planitia.org" target="_top">Rafael H. Schloming</a></p>
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html><head><meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"><title>Object Identity</title><meta name="generator" content="DocBook XSL Stylesheets V1.60.1"><link rel="home" href="index.html" title="OpenACS Core Documentation"><link rel="up" href="dev-guide.html" title="Chapter�11.�Development Reference"><link rel="previous" href="permissions-tediously-explained.html" title="OpenACS Permissions Tediously Explained"><link rel="next" href="programming-with-aolserver.html" title="Programming with AOLserver"><link rel="stylesheet" href="openacs.css" type="text/css"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><a href="http://openacs.org"><img src="/doc/images/alex.jpg" border="0" alt="Alex logo"></a><table width="100%" summary="Navigation header" border="0"><tr><td width="20%" align="left"><a accesskey="p" href="permissions-tediously-explained.html">Prev</a> </td><th width="60%" align="center">Chapter�11.�Development Reference</th><td width="20%" align="right"> <a accesskey="n" href="programming-with-aolserver.html">Next</a></td></tr></table><hr></div><div class="sect1" lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="object-identity"></a>Object Identity</h2></div></div><div></div></div><div class="authorblurb"><p>By <a href="http://planitia.org" target="_top">Rafael H. Schloming</a></p>
           OpenACS docs are written by the named authors, and may be edited
           by OpenACS documentation staff.
-        </div><p>One of the major design features of OpenACS 5.2.3rc1 is the explicit representation
-of <span class="emphasis"><em>object identity</em></span>. The reason I say "explicit
-representation" is because the concept of object identity has been
+        </div><p>One of the major design features of OpenACS 5.4.0 is the explicit representation
+of <span class="emphasis"><em>object identity</em></span>. The reason I say &quot;explicit
+representation&quot; is because the concept of object identity has been
 around forever. It is inherent to our problem domain. Consider the example of
 3.x style scoping. The 3.x data models use the triple (user_id, group_id,
-scope) to <span class="emphasis"><em>identify</em></span> an <span class="emphasis"><em>object</em></span>. In the 5.2.3rc1 data model this
+scope) to <span class="emphasis"><em>identify</em></span> an <span class="emphasis"><em>object</em></span>. In the 5.4.0 data model this
 object is <span class="emphasis"><em>explicitly represented</em></span> by a single party_id.</p><p>Another good example of this is can be found in the user groups data
 model. The 3.x user groups data model contains another example of an
 <span class="emphasis"><em>implied identity</em></span>. Every mapping between a user and a group could
 have an arbitrary number of attached values (user_group_member_fields, etc.).
 In this case it is the pair (group_id, user_id) that implicitly refers to an
-object (the person's membership in a group). In the 5.2.3rc1 data model this
+object (the person's membership in a group). In the 5.4.0 data model this
 object identity is made explicit by adding an integer primary key to the
 table that maps users to groups.</p><p>Coming from a purely relational world, this might seem slightly weird at
 first. The pair (group_id, user_id) is sufficient to uniquely identify the
Index: openacs-4/packages/acs-core-docs/www/object-system-design.html
===================================================================
RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/object-system-design.html,v
diff -u -r1.28 -r1.28.4.1
--- openacs-4/packages/acs-core-docs/www/object-system-design.html	17 Jul 2006 05:38:31 -0000	1.28
+++ openacs-4/packages/acs-core-docs/www/object-system-design.html	3 Feb 2008 12:07:40 -0000	1.28.4.1
@@ -1,21 +1,22 @@
-<html><head><meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"><title>Object Model Design</title><meta name="generator" content="DocBook XSL Stylesheets V1.70.1"><link rel="home" href="index.html" title="OpenACS Core Documentation"><link rel="up" href="kernel-doc.html" title="Chapter�15.�Kernel Documentation"><link rel="previous" href="object-system-requirements.html" title="Object Model Requirements"><link rel="next" href="permissions-requirements.html" title="Permissions Requirements"><link rel="stylesheet" href="openacs.css" type="text/css"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><a href="http://openacs.org"><img src="/doc/images/alex.jpg" border="0" alt="Alex logo"></a><table width="100%" summary="Navigation header" border="0"><tr><td width="20%" align="left"><a accesskey="p" href="object-system-requirements.html">Prev</a> </td><th width="60%" align="center">Chapter�15.�Kernel Documentation</th><td width="20%" align="right"> <a accesskey="n" href="permissions-requirements.html">Next</a></td></tr></table><hr></div><div class="sect1" lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="object-system-design"></a>Object Model Design</h2></div></div></div><div class="authorblurb"><p>By Pete Su, Michael Yoon, Richard Li, Rafael Schloming</p>
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html><head><meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"><title>Object Model Design</title><meta name="generator" content="DocBook XSL Stylesheets V1.60.1"><link rel="home" href="index.html" title="OpenACS Core Documentation"><link rel="up" href="kernel-doc.html" title="Chapter�15.�Kernel Documentation"><link rel="previous" href="object-system-requirements.html" title="Object Model Requirements"><link rel="next" href="permissions-requirements.html" title="Permissions Requirements"><link rel="stylesheet" href="openacs.css" type="text/css"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><a href="http://openacs.org"><img src="/doc/images/alex.jpg" border="0" alt="Alex logo"></a><table width="100%" summary="Navigation header" border="0"><tr><td width="20%" align="left"><a accesskey="p" href="object-system-requirements.html">Prev</a> </td><th width="60%" align="center">Chapter�15.�Kernel Documentation</th><td width="20%" align="right"> <a accesskey="n" href="permissions-requirements.html">Next</a></td></tr></table><hr></div><div class="sect1" lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="object-system-design"></a>Object Model Design</h2></div></div><div></div></div><div class="authorblurb"><p>By Pete Su, Michael Yoon, Richard Li, Rafael Schloming</p>
           OpenACS docs are written by the named authors, and may be edited
           by OpenACS documentation staff.
-        </div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="object-system-design-essentials"></a>Essentials</h3></div></div></div><div class="sect3" lang="en"><div class="titlepage"><div><div><h4 class="title"><a name="objects-design-data-model"></a>Data Model</h4></div></div></div><div class="itemizedlist"><ul type="disc"><li><p><a href="/doc/sql/display-sql?url=acs-metadata-create.sql&amp;package_key=acs-kernel" target="_top">
+        </div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="object-system-design-essentials"></a>Essentials</h3></div></div><div></div></div><div class="sect3" lang="en"><div class="titlepage"><div><div><h4 class="title"><a name="objects-design-data-model"></a>Data Model</h4></div></div><div></div></div><div class="itemizedlist"><ul type="disc"><li><p><a href="/doc/sql/display-sql?url=acs-metadata-create.sql&amp;package_key=acs-kernel" target="_top">
 acs-metadata-create.sql</a></p></li><li><p><a href="/doc/sql/display-sql?url=acs-objects-create.sql&amp;package_key=acs-kernel" target="_top">
 acs-objects-create.sql</a></p></li><li><p><a href="/doc/sql/display-sql?url=acs-relationships-create.sql&amp;package_key=acs-kernel" target="_top">
-acs-relationships-create.sql</a></p></li></ul></div></div><div class="sect3" lang="en"><div class="titlepage"><div><div><h4 class="title"><a name="objects-design-tcl-files"></a>Tcl Files</h4></div></div></div><p><span class="emphasis"><em>Not yet linked.</em></span></p></div><div class="sect3" lang="en"><div class="titlepage"><div><div><h4 class="title"><a name="objects-design-requirements"></a>Requirements</h4></div></div></div><div class="itemizedlist"><ul type="disc"><li><p><a href="object-system-requirements.html" title="Object Model Requirements">Object Model
+acs-relationships-create.sql</a></p></li></ul></div></div><div class="sect3" lang="en"><div class="titlepage"><div><div><h4 class="title"><a name="objects-design-tcl-files"></a>Tcl Files</h4></div></div><div></div></div><p><span class="emphasis"><em>Not yet linked.</em></span></p></div><div class="sect3" lang="en"><div class="titlepage"><div><div><h4 class="title"><a name="objects-design-requirements"></a>Requirements</h4></div></div><div></div></div><div class="itemizedlist"><ul type="disc"><li><p><a href="object-system-requirements.html" title="Object Model Requirements">Object Model
 Requirements</a></p></li><li><p><a href="groups-requirements.html" title="Groups Requirements">Groups
 Requirements</a></p></li><li><p><a href="permissions-requirements.html" title="Permissions Requirements">Permissions
-Requirements</a></p></li></ul></div></div></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="object-system-design-introduction"></a>Introduction</h3></div></div></div><p>Before OpenACS 4, software developers writing OpenACS applications or modules
+Requirements</a></p></li></ul></div></div></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="object-system-design-introduction"></a>Introduction</h3></div></div><div></div></div><p>Before OpenACS 4, software developers writing OpenACS applications or modules
 would develop each data model separately. However, many applications built on
 OpenACS share certain characteristics or require certain common services.
 Examples of such services include:</p><div class="itemizedlist"><ul type="disc"><li><p>User comments</p></li><li><p>Storage of user-defined or extensible sets of attributes</p></li><li><p>Access control</p></li><li><p>General auditing and bookkeeping (e.g. creation date, IP addresses, and
 so forth)</p></li><li><p>Presentation tools (e.g. how to display a field in a form or on a
 page)</p></li></ul></div><p>All of these services involve relating additional service-related
 information to application data objects. Examples of application objects
 include:</p><div class="itemizedlist"><ul type="disc"><li><p>forum messages</p></li><li><p>A user home page</p></li><li><p>A ticket in the ticket tracker</p></li></ul></div><p>In the past, developers had to use ad-hoc and inconsistent schemes to
-interface to various "general" services. OpenACS 4 defines a central
+interface to various &quot;general&quot; services. OpenACS 4 defines a central
 data model that keeps track of the application objects that we wish to
 manage, and serves as a primary store of <span class="emphasis"><em>metadata</em></span>. By
 <span class="emphasis"><em>metadata</em></span>, we mean data stored on behalf of an application
@@ -32,54 +33,54 @@
 object type (e.g. users) to instances of another object type (e.g.
 groups).
 </p></li></ul></div><p>The next section will explore these facilities in the context of the the
-particular programming idioms that we wish to generalize.</p><p><span class="strong"><strong>Related Links</strong></span></p><p>This design document should be read along with the design documents for <a href="groups-design.html" title="Groups Design">the new groups system</a>, <a href="subsites-design.html" title="Subsites Design Document">subsites</a> and <a href="permissions-design.html" title="Permissions Design">the permissions system</a></p></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="object-system-design-history"></a>History</h3></div></div></div><p>The motivation for most of the facilities in the OpenACS 4 Object Model can be
+particular programming idioms that we wish to generalize.</p><p><span class="strong">Related Links</span></p><p>This design document should be read along with the design documents for <a href="groups-design.html" title="Groups Design">the new groups system</a>, <a href="subsites-design.html" title="Subsites Design Document">subsites</a> and <a href="permissions-design.html" title="Permissions Design">the permissions system</a></p></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="object-system-design-history"></a>History</h3></div></div><div></div></div><p>The motivation for most of the facilities in the OpenACS 4 Object Model can be
 understood in the context of the 3.x code base and the kinds of programming
-idioms that evolved there. These are listed and discussed below.</p><div class="sect3" lang="en"><div class="titlepage"><div><div><h4 class="title"><a name="objects-design-object-ident"></a>Object Identification</h4></div></div></div><p>Object identification is a central mechanism in OpenACS 4. Every application
+idioms that evolved there. These are listed and discussed below.</p><div class="sect3" lang="en"><div class="titlepage"><div><div><h4 class="title"><a name="objects-design-object-ident"></a>Object Identification</h4></div></div><div></div></div><p>Object identification is a central mechanism in OpenACS 4. Every application
 object in OpenACS 4 has a unique ID which is mapped to a row in a central table
-called <code class="computeroutput">acs_objects</code>. Developers that wish to use OpenACS 4 services
+called <tt class="computeroutput">acs_objects</tt>. Developers that wish to use OpenACS 4 services
 need only take a few simple steps to make sure that their application objects
 appear in this table. The fact that every object has a known unique
 identifier means that the core can deal with all objects in a generic way. In
 other words, we use object identifiers to enable centralized services in a
 global and uniform manner.</p><p><span class="emphasis"><em>Implicit Object Identifiers in OpenACS 3.x</em></span></p><p>The motivation for implementing general object identifiers comes from
 several observations of data models in OpenACS 3.x. Many modules use a
-<code class="computeroutput">(user_id, group_id, scope)</code> column-triple for the purpose of
+<tt class="computeroutput">(user_id, group_id, scope)</tt> column-triple for the purpose of
 recording ownership information on objects, for access control. User/groups
-also uses <code class="computeroutput">(user_id, group_id)</code> pairs in its
-<code class="computeroutput">user_group_map</code> table as a way to identify data associated with a
+also uses <tt class="computeroutput">(user_id, group_id)</tt> pairs in its
+<tt class="computeroutput">user_group_map</tt> table as a way to identify data associated with a
 single membership relation.</p><p>Also, in OpenACS 3.x many utility modules exist that do nothing more than
 attach some extra attributes to existing application data. For example,
-general comments maintains a table that maps application "page"
+general comments maintains a table that maps application &quot;page&quot;
 data (static or dynamic pages on the website) to one or more user comments on
 that page. It does so by constructing a unique identifier for each page,
 usually a combination of the table in which the data is stored, and the value
 of the primary key value for the particular page. This idiom is referred to
-as the "(on_which_table + on_what_id)" method for identifying
+as the &quot;(on_which_table + on_what_id)&quot; method for identifying
 application data. In particular, general comments stores its map from pages
-to comments using a "(on_which_table + on_what_id)" key plus the ID
+to comments using a &quot;(on_which_table + on_what_id)&quot; key plus the ID
 of the comment itself.</p><p>All of these composite key constructions are implicit object identifiers -
 they build a unique ID out of other pieces of the data model. The problem is
 that their definition and use is ad-hoc and inconsistent, making the
 construction of generic application-independent services unnecessarily
 difficult.</p><p><span class="emphasis"><em>Object Identifiers in OpenACS 4</em></span></p><p>The OpenACS 4 Object Model defines a single mechanism that applications use to
 attach unique identifiers to application data. This identifier is the primary
-key of the <code class="computeroutput">acs_objects</code> table. This table forms the core of what
+key of the <tt class="computeroutput">acs_objects</tt> table. This table forms the core of what
 we need to provide generic services like access control, general attribute
 storage, general presentation and forms tools, and generalized administrative
 interfaces. In addition, the object system provides an API that makes it easy
 to create new objects when creating application data. All an application must
 do to take advantage of general services in OpenACS 4 is to use the new API to
 make sure every object the system is to manage is associated with a row in
-<code class="computeroutput">acs_objects</code>. More importantly, if they do this, new services
+<tt class="computeroutput">acs_objects</tt>. More importantly, if they do this, new services
 like general comments can be created without requiring existing applications
-to "hook into" them via new metadata.</p><p><span class="strong"><strong>Note:</strong></span> Object identifiers are a good example of metadata
-in the new system. Each row in <code class="computeroutput">acs_objects</code> stores information
+to &quot;hook into&quot; them via new metadata.</p><p><span class="strong">Note:</span> Object identifiers are a good example of metadata
+in the new system. Each row in <tt class="computeroutput">acs_objects</tt> stores information
 <span class="emphasis"><em>about</em></span> the application object, but not the application object itself.
 This becomes more clear if you skip ahead and look at the SQL schema code
-that defines this table.</p></div><div class="sect3" lang="en"><div class="titlepage"><div><div><h4 class="title"><a name="objects-design-obj-context"></a>Object Context and Access Control</h4></div></div></div><p>Until the implementation of the general permissions system, every OpenACS
+that defines this table.</p></div><div class="sect3" lang="en"><div class="titlepage"><div><div><h4 class="title"><a name="objects-design-obj-context"></a>Object Context and Access Control</h4></div></div><div></div></div><p>Until the implementation of the general permissions system, every OpenACS
 application had to manage access control to its data separately. Later on, a
-notion of "scoping" was introduced into the core data model.</p><p>"Scope" is a term best explained by example. Consider some
-hypothetical rows in the <code class="computeroutput">address_book</code> table:</p><div class="informaltable"><table cellspacing="0" border="1"><colgroup><col><col><col><col><col></colgroup><tbody><tr><td><span class="strong"><strong>...</strong></span></td><td><span class="strong"><strong><code class="computeroutput">scope</code></strong></span></td><td><span class="strong"><strong><code class="computeroutput">user_id</code></strong></span></td><td><span class="strong"><strong><code class="computeroutput">group_id</code></strong></span></td><td><span class="strong"><strong>...</strong></span></td></tr><tr><td>...</td><td><code class="computeroutput">user</code></td><td><code class="computeroutput">123</code></td><td> </td><td>...</td></tr><tr><td>...</td><td><code class="computeroutput">group</code></td><td> </td><td><code class="computeroutput">456</code></td><td>...</td></tr><tr><td>...</td><td><code class="computeroutput">public</code></td><td> </td><td> </td><td>...</td></tr></tbody></table></div><p>The first row represents an entry in User 123's personal address book,
+notion of &quot;scoping&quot; was introduced into the core data model.</p><p>&quot;Scope&quot; is a term best explained by example. Consider some
+hypothetical rows in the <tt class="computeroutput">address_book</tt> table:</p><div class="informaltable"><table cellspacing="0" border="1"><colgroup><col><col><col><col><col></colgroup><tbody><tr><td><span class="strong">...</span></td><td><span class="strong"><tt class="computeroutput">scope</tt></span></td><td><span class="strong"><tt class="computeroutput">user_id</tt></span></td><td><span class="strong"><tt class="computeroutput">group_id</tt></span></td><td><span class="strong">...</span></td></tr><tr><td>...</td><td><tt class="computeroutput">user</tt></td><td><tt class="computeroutput">123</tt></td><td>�</td><td>...</td></tr><tr><td>...</td><td><tt class="computeroutput">group</tt></td><td>�</td><td><tt class="computeroutput">456</tt></td><td>...</td></tr><tr><td>...</td><td><tt class="computeroutput">public</tt></td><td>�</td><td>�</td><td>...</td></tr></tbody></table></div><p>The first row represents an entry in User 123's personal address book,
 the second row represents an entry in User Group 456's shared address
 book, and the third row represents an entry in the site's public address
 book.</p><p>In this way, the scoping columns identify the security context in which a
@@ -93,29 +94,29 @@
 forum message would probably list a forum topic as its context, and a
 forum topic might list a subsite as its context. Thus, contexts make it
 easier to break the site up into security domains according to its natural
-structure. An object's context is stored in the <code class="computeroutput">context_id</code>
-column of the <code class="computeroutput">acs_objects</code> table.</p><p>We use an object's context to provide a default answer to questions
-regarding access control. Whenever we ask a question of the form "can
-user X perform action Y on object Z", the OpenACS security model will defer
+structure. An object's context is stored in the <tt class="computeroutput">context_id</tt>
+column of the <tt class="computeroutput">acs_objects</tt> table.</p><p>We use an object's context to provide a default answer to questions
+regarding access control. Whenever we ask a question of the form &quot;can
+user X perform action Y on object Z&quot;, the OpenACS security model will defer
 to an object's context if there is no information about user X's
 permission to perform action Y on object Z.</p><p>The context system forms the basis for the rest of the OpenACS access control
 system, which is described in in two separate documents: one for the <a href="permissions-design.html" title="Permissions Design">permissions system</a> and another for the
 <a href="groups-design.html" title="Groups Design">party groups</a> system. The context system
-is also used to implement <a href="subsites-design.html" title="Subsites Design Document">subsites</a>.</p></div><div class="sect3" lang="en"><div class="titlepage"><div><div><h4 class="title"><a name="objects-design-obj-types"></a>Object Types</h4></div></div></div><p>As mentioned above, many OpenACS modules provide extensible data models, and
+is also used to implement <a href="subsites-design.html" title="Subsites Design Document">subsites</a>.</p></div><div class="sect3" lang="en"><div class="titlepage"><div><div><h4 class="title"><a name="objects-design-obj-types"></a>Object Types</h4></div></div><div></div></div><p>As mentioned above, many OpenACS modules provide extensible data models, and
 need to use application specific mechanisms to keep track of user defined
 attributes and to map application data to these attributes. In the past,
 modules either used user/groups or their own ad hoc data model to provide
 this functionality.</p><p><span class="emphasis"><em>User/Groups in OpenACS 3.x</em></span></p><p>The user/group system allowed developers to define <span class="emphasis"><em>group types</em></span>
 along with attributes to be stored with each instance of a group type. Each
 group type could define a helper table that stored attributes on each
 instance of the group type. This table was called the
-"<code class="computeroutput">_info</code>" table because the name was generated by
-appending <code class="computeroutput">_info</code> to the name of the group type.</p><p>The user/groups data model also provided the
-<code class="computeroutput">user_group_type_member_fields</code> and
-<code class="computeroutput">user_group_member_fields</code> tables to define attributes for members
+&quot;<tt class="computeroutput">_info</tt>&quot; table because the name was generated by
+appending <tt class="computeroutput">_info</tt> to the name of the group type.</p><p>The user/groups data model also provided the
+<tt class="computeroutput">user_group_type_member_fields</tt> and
+<tt class="computeroutput">user_group_member_fields</tt> tables to define attributes for members
 of groups of a specific type and for members of a specific group,
-respectively. The <code class="computeroutput">user_group_member_field_map</code> table stored
-values for both categories of attributes in its <code class="computeroutput">field_value</code>
+respectively. The <tt class="computeroutput">user_group_member_field_map</tt> table stored
+values for both categories of attributes in its <tt class="computeroutput">field_value</tt>
 column. These tables allowed developers and users to define custom sets of
 attributes to store on groups and group members without changing the data
 model at the code level.</p><p>Many applications in OpenACS 3.x and earlier used the group type mechanism in
@@ -130,39 +131,39 @@
 The motivation for subtypes comes from the need for OpenACS to be more
 extensible. In OpenACS 3.x, many applications extended the core data models by
 directly adding more columns, in order to provide convenient access to new
-information. This resulted in core data tables that were too "fat",
+information. This resulted in core data tables that were too &quot;fat&quot;,
 containing a hodge podge of unrelated information that should have been
 normalized away. The canonical example of this is the explosion of the
-<code class="computeroutput">users</code> table in OpenACS 3.x. In addition to being sloppy technically,
+<tt class="computeroutput">users</tt> table in OpenACS 3.x. In addition to being sloppy technically,
 these fat tables have a couple of other problems:</p><div class="itemizedlist"><ul type="disc"><li><p>They degrade performance.</p></li><li><p>Denormalization can make it hard to maintain consistency constraints on
 the data.</p></li></ul></div><p>Object subtypes provide a way to factor the data model while still keeping
 track of the fact that each member of a subtype (i.e. for each row in the
 subtype's table), is also a member of the parent type (i.e. there is a
 corresponding row in the parent type table). Therefore, applications an use
 this mechanism without worrying about this bookkeeping themselves, and we
 avoid having applications pollute the core data model with their specific
-information.</p></div><div class="sect3" lang="en"><div class="titlepage"><div><div><h4 class="title"><a name="objects-design-attributes"></a>Object Attributes, Skinny Tables</h4></div></div></div><p>As we described above, the OpenACS 3.x user/groups system stored object
+information.</p></div><div class="sect3" lang="en"><div class="titlepage"><div><div><h4 class="title"><a name="objects-design-attributes"></a>Object Attributes, Skinny Tables</h4></div></div><div></div></div><p>As we described above, the OpenACS 3.x user/groups system stored object
 attributes in two ways. The first was to use columns in the helper table. The
 second consisted of two tables, one describing attributes and one storing
 values, to provide a flexible means for attaching attributes to metadata
 objects. This style of attribute storage is used in several other parts of
-OpenACS 3.x, and we will refer to it as "skinny tables". For
-example:</p><div class="itemizedlist"><ul type="disc"><li><p>In the Ecommerce data model, the <code class="computeroutput">ec_custom_product_fields</code>
+OpenACS 3.x, and we will refer to it as &quot;skinny tables&quot;. For
+example:</p><div class="itemizedlist"><ul type="disc"><li><p>In the Ecommerce data model, the <tt class="computeroutput">ec_custom_product_fields</tt>
 table defines attributes for catalog products, and the
-<code class="computeroutput">ec_custom_product_field_values</code> table stores values for those
-attributes.</p></li><li><p>In the Photo DB data model, the <code class="computeroutput">ph_custom_photo_fields</code> table
+<tt class="computeroutput">ec_custom_product_field_values</tt> table stores values for those
+attributes.</p></li><li><p>In the Photo DB data model, the <tt class="computeroutput">ph_custom_photo_fields</tt> table
 defines attributes for the photographs owned by a specific user, and tables
 named according to the convention
-"<code class="computeroutput">ph_user_&lt;user_id&gt;_custom_info</code>" are used to
+&quot;<tt class="computeroutput">ph_user_&lt;user_id&gt;_custom_info</tt>&quot; are used to
 store values for those attributes.</p></li></ul></div><p>In addition, there are some instances where we are not using this model
-but <span class="emphasis"><em>should</em></span>, e.g. the <code class="computeroutput">users_preferences</code> table, which
+but <span class="emphasis"><em>should</em></span>, e.g. the <tt class="computeroutput">users_preferences</tt> table, which
 stores preferences for registered users in columns such as
-<code class="computeroutput">prefer_text_only_p</code> and <code class="computeroutput">dont_spam_me_p</code>. The
-"standard" way for an OpenACS 3.x-based application to add to the list
-of user preferences is to add a column to the <code class="computeroutput">users_preferences</code>
+<tt class="computeroutput">prefer_text_only_p</tt> and <tt class="computeroutput">dont_spam_me_p</tt>. The
+&quot;standard&quot; way for an OpenACS 3.x-based application to add to the list
+of user preferences is to add a column to the <tt class="computeroutput">users_preferences</tt>
 table (exactly the kind of data model change that has historically
 complicated the process of upgrading to a more recent OpenACS version).</p><p>The Objet Model generalizes the scheme used in the old OpenACS 3.x user/groups
-system. It defines a table called <code class="computeroutput">acs_attributes</code> that record
+system. It defines a table called <tt class="computeroutput">acs_attributes</tt> that record
 what attributes belong to which object types, and how the attributes are
 stored. As before, attributes can either be stored in helper tables, or in a
 single central skinny table. The developer makes this choice on a case by
@@ -172,53 +173,53 @@
 skinny tables because doing so allows developers and users to dynamically
 update the set of attributes stored on an object without updating the data
 model at the code level. The bottom line: Helper tables are more functional
-and more efficient, skinny tables are more flexible but limited.</p></div><div class="sect3" lang="en"><div class="titlepage"><div><div><h4 class="title"><a name="objects-design-relation-types"></a>Relation Types</h4></div></div></div><p>Many OpenACS 3.x modules use <span class="emphasis"><em>mapping tables</em></span> to model relationships
+and more efficient, skinny tables are more flexible but limited.</p></div><div class="sect3" lang="en"><div class="titlepage"><div><div><h4 class="title"><a name="objects-design-relation-types"></a>Relation Types</h4></div></div><div></div></div><p>Many OpenACS 3.x modules use <span class="emphasis"><em>mapping tables</em></span> to model relationships
 between application objects. Again, the 3.x user/groups system provides the
 canonical example of this design style. In that system, there was a single
-table called <code class="computeroutput">user_group_map</code> that kept track of which users
+table called <tt class="computeroutput">user_group_map</tt> that kept track of which users
 belonged to what groups. In addition, as we discussed in the previous
-section, the system used the <code class="computeroutput">user_group_member_fields</code> and
-<code class="computeroutput">user_group_member_fields_map</code> tables to allow developers to
+section, the system used the <tt class="computeroutput">user_group_member_fields</tt> and
+<tt class="computeroutput">user_group_member_fields_map</tt> tables to allow developers to
 attach custom attributes to group members. In fact, these attributes were not
 really attached to the users, but to the fact that a user was a member of a
 particular group - a subtle but important distinction.</p><p>In OpenACS 4, <span class="emphasis"><em>relation types</em></span> generalize this mechanism. Relation
 types allow developers to define general mappings from objects of a given
 type T, to other objects of a given type R. Each relation type is a subtype
-of <code class="computeroutput">acs_object</code>, extended with extra attributes that store
+of <tt class="computeroutput">acs_object</tt>, extended with extra attributes that store
 constraints on the relation, and the types of objects the relation actually
 maps. In turn, each instance of a relation type is an object that represents
-a single fact of the form "the object t of type T is related to the
-object r of type R." That is, each instance of a relation type is
+a single fact of the form &quot;the object t of type T is related to the
+object r of type R.&quot; That is, each instance of a relation type is
 essentially just a pair of objects.</p><p>Relation types generalize mapping tables. For example, the 3.x user/groups
 data model can be largely duplicated using a single relation type describing
-the "group membership" relation. Group types would then be subtypes
+the &quot;group membership&quot; relation. Group types would then be subtypes
 of this membership relation type. Group type attributes would be attached to
 the relation type itself. Group member attributes would be attached to
 instances of the membership relation. Finally, the mapping table would be
 replaced by a central skinny table that the relation type system defines.</p><p>Relation types should be used when you want to be able to attach data to
-the "fact" that object X and object Y are related to each other. On
+the &quot;fact&quot; that object X and object Y are related to each other. On
 the face of it, they seem like a redundant mechanism however, since one could
 easily create a mapping table to do the same thing. The advantage of
 registering this table as a relation type is that in principle the OpenACS 4
 object system could use the meta data in the types table to do useful things
 in a generic way on all relation types. But this mechanism doesn't really
 exist yet.</p><p>Relation types are a somewhat abstract idea. To get a better feel for
-them, you should just skip to the <a href="object-system-design.html#object-system-design-relsmodel">data model</a>.</p></div></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="object-system-design-summary"></a>Summary and Design Considerations</h3></div></div></div><p>The OpenACS 4 Object Model is designed to generalize and unify the following
+them, you should just skip to the <a href="object-system-design.html#object-system-design-relsmodel">data model</a>.</p></div></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="object-system-design-summary"></a>Summary and Design Considerations</h3></div></div><div></div></div><p>The OpenACS 4 Object Model is designed to generalize and unify the following
 mechanisms that are repeatedly implemented in OpenACS-based systems to manage
-generic and application specific metadata:</p><div class="sect3" lang="en"><div class="titlepage"><div><div><h4 class="title"><a name="objects-design-why-not-objdb"></a>Why not Object Databases?</h4></div></div></div><p>The presence of a framework for subtyping and inheritance always brings up
+generic and application specific metadata:</p><div class="sect3" lang="en"><div class="titlepage"><div><div><h4 class="title"><a name="objects-design-why-not-objdb"></a>Why not Object Databases?</h4></div></div><div></div></div><p>The presence of a framework for subtyping and inheritance always brings up
 the question of why we don't just use an object database. The main reason
 is that all of the major object database vendors ship products that are
 effectively tied to some set of object oriented programming languages. Their
 idea is to provide tight language-level integration to lower the
-"impedance mismatch" between the database and the language.
+&quot;impedance mismatch&quot; between the database and the language.
 Therefore, database objects and types are generally directly modeled on
 language level objects and types. Of course, this makes it nearly impossible
 to interact with the database from a language that does not have this tight
 coupling, and it limits the data models that we can write to ideas that are
 expressible in the host language. In particular, we lose many of the best
 features of the relational database model. This is a disaster from an ease of
 use standpoint.
-	  </p><p>The "Object relational" systems provide an interesting
+	  </p><p>The &quot;Object relational&quot; systems provide an interesting
 alternative. Here, some notion of subtyping is embedded into an existing SQL
 or SQL-like database engine. Examples of systems like this include the new
 Informix, PostgreSQL 7, and Oracle has something like this too. The main
@@ -229,7 +230,7 @@
 practice. Finally, object databases are not as widely used as traditional
 relational systems. They have not been tested as extensively and their
 scalability to very large databases is not proven (though some will disagree
-with this statement).</p></div><div class="sect3" lang="en"><div class="titlepage"><div><div><h4 class="title"><a name="objects-design-oracle"></a>Oracle</h4></div></div></div><p>The conclusion: the best design is to add a limited notion of subtyping to
+with this statement).</p></div><div class="sect3" lang="en"><div class="titlepage"><div><div><h4 class="title"><a name="objects-design-oracle"></a>Oracle</h4></div></div><div></div></div><p>The conclusion: the best design is to add a limited notion of subtyping to
 our existing relational data model. By doing this, we retain all the power of
 the relational data model while gaining the object oriented features we need
 most.</p><p>In the context of OpenACS 4, this means using the object model to make our
@@ -240,9 +241,9 @@
 the more limited domain of the metadata model, this is acceptable since the
 type hierarchy is fairly small. But the object system data model is not
 designed to support, for example, a huge type tree like the Java runtime
-libraries might define.</p><p>This last point cannot be over-stressed: <span class="strong"><strong>the object model is not
-meant to be used for large scale application data storage</strong></span>. It is
-meant to represent and store metadata, not application data.</p></div></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="object-system-design-datamodel"></a>Data Model</h3></div></div></div><p>Like most data models, the OpenACS Core data model has two levels:</p><div class="orderedlist"><ol type="1"><li><p>The <span class="emphasis"><em>knowledge level</em></span> (i.e. the metadata model)</p></li><li><p>The <span class="emphasis"><em>operational level</em></span> (i.e. the concrete data model)</p></li></ol></div><p>
+libraries might define.</p><p>This last point cannot be over-stressed: <span class="strong">the object model is not
+meant to be used for large scale application data storage</span>. It is
+meant to represent and store metadata, not application data.</p></div></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="object-system-design-datamodel"></a>Data Model</h3></div></div><div></div></div><p>Like most data models, the OpenACS Core data model has two levels:</p><div class="orderedlist"><ol type="1"><li><p>The <span class="emphasis"><em>knowledge level</em></span> (i.e. the metadata model)</p></li><li><p>The <span class="emphasis"><em>operational level</em></span> (i.e. the concrete data model)</p></li></ol></div><p>
 You can browse the data models themselves from here: 
 </p><div class="itemizedlist"><ul type="disc"><li><p><a href="/doc/sql/display-sql?url=acs-metadata-create.sql&amp;package_key=acs-kernel" target="_top">
 acs-metadata-create.sql</a></p></li><li><p><a href="/doc/sql/display-sql?url=acs-objects-create.sql&amp;package_key=acs-kernel" target="_top">
@@ -253,12 +254,12 @@
 the SQL definitions of many tables. Generally, these match the actual
 definitions in the existing data model but they are meant to reflect design
 information, not implementation. Some less relevant columns may be left out,
-and things like constraint names are not included.</p><div class="sect3" lang="en"><div class="titlepage"><div><div><h4 class="title"><a name="objects-design-knowledge-level"></a>Knowledge-Level Model</h4></div></div></div><p>The knowledge level data model for OpenACS objects centers around three tables
+and things like constraint names are not included.</p><div class="sect3" lang="en"><div class="titlepage"><div><div><h4 class="title"><a name="objects-design-knowledge-level"></a>Knowledge-Level Model</h4></div></div><div></div></div><p>The knowledge level data model for OpenACS objects centers around three tables
 that keep track of object types, attributes, and relation types. The first
-table is <code class="computeroutput">acs_object_types</code>, shown here in an abbreviated
+table is <tt class="computeroutput">acs_object_types</tt>, shown here in an abbreviated
 form:</p><pre class="programlisting">
 
-<code class="computeroutput">create table acs_object_types (
+<tt class="computeroutput">create table acs_object_types (
         object_type          varchar(100) not null primary key,
         supertype            references acs_object_types (object_type),
         abstract_p           char(1) default 'f' not null
@@ -269,26 +270,26 @@
         name_method          varchar(30),
         type_extension_table varchar(30)
 );
-</code>
+</tt>
 
 </pre><p>This table contains one row for every object type in the system. The key
 things to note about this table are:</p><div class="itemizedlist"><ul type="disc"><li><p>For every type, we store metadata for how to display this type in certain
-contexts (<code class="computeroutput">pretty_name</code> and <code class="computeroutput">pretty_plural</code>).</p></li><li><p>If the type is a subtype, then its parent type is stored in the column
-<code class="computeroutput">supertype</code>.</p></li><li><p>We support a notion of "abstract" types that contain no
+contexts (<tt class="computeroutput">pretty_name</tt> and <tt class="computeroutput">pretty_plural</tt>).</p></li><li><p>If the type is a subtype, then its parent type is stored in the column
+<tt class="computeroutput">supertype</tt>.</p></li><li><p>We support a notion of &quot;abstract&quot; types that contain no
 instances (as of 9/2000 this is not actually used). These types exist only to
-be subtyped. An example might be a type representing "shapes" that
+be subtyped. An example might be a type representing &quot;shapes&quot; that
 contains common characteristics of all shapes, but which is only used to
 create subtypes that represent real, concrete shapes like circles, squares,
 and so on.</p></li><li><p>Every type defines a table in which one can find one row for every
-instance of this type (<code class="computeroutput">table_name</code>, <code class="computeroutput">id_column</code>).</p></li><li><p><code class="computeroutput">type_extension_table</code> is for naming a table that stores extra
-generic attributes.</p></li></ul></div><p>The second table we use to describe types is <code class="computeroutput">acs_attributes</code>.
+instance of this type (<tt class="computeroutput">table_name</tt>, <tt class="computeroutput">id_column</tt>).</p></li><li><p><tt class="computeroutput">type_extension_table</tt> is for naming a table that stores extra
+generic attributes.</p></li></ul></div><p>The second table we use to describe types is <tt class="computeroutput">acs_attributes</tt>.
 Each row in this table represents a single attribute on a specific object
-type (e.g. the "password" attribute of the "user" type).
+type (e.g. the &quot;password&quot; attribute of the &quot;user&quot; type).
 Again, here is an abbreviated version of what this table looks like. The
 actual table used in the implementation is somewhat different and is
 discussed in a separate document.</p><pre class="programlisting">
 
-<code class="computeroutput">create table acs_attributes (
+<tt class="computeroutput">create table acs_attributes (
         attribute_id    integer not null primary key
         object_type     not null references acs_object_types (object_type),
         attribute_name  varchar(100) not null,
@@ -304,38 +305,38 @@
         max_n_values    integer default 1 not null,
         static_p        varchar(1)
 );
-</code>
+</tt>
 
 </pre><p>The following points are important about this table:</p><div class="itemizedlist"><ul type="disc"><li><p>Every attribute has a unique identifier.</p></li><li><p>Every attribute is associated with an object type.</p></li><li><p>We store various things about each attribute for presentation
-(<code class="computeroutput">pretty_name</code>, <code class="computeroutput">sort_order</code>).</p></li><li><p>The <code class="computeroutput">data_type</code> column stores type information on this
+(<tt class="computeroutput">pretty_name</tt>, <tt class="computeroutput">sort_order</tt>).</p></li><li><p>The <tt class="computeroutput">data_type</tt> column stores type information on this
 attribute. This is not the SQL type of the attribute; it is just a human
 readable name for the type of data we think the attribute holds (e.g.
-"String", or "Money"). This might be used later to
-generate a user interface.</p></li><li><p>The <code class="computeroutput">sort_order</code> column stores information about how to sort
-the attribute values.</p></li><li><p>Attributes can either be stored explicitly in a table ("type
-specific storage") or in a skinny table ("generic storage").
+&quot;String&quot;, or &quot;Money&quot;). This might be used later to
+generate a user interface.</p></li><li><p>The <tt class="computeroutput">sort_order</tt> column stores information about how to sort
+the attribute values.</p></li><li><p>Attributes can either be stored explicitly in a table (&quot;type
+specific storage&quot;) or in a skinny table (&quot;generic storage&quot;).
 In most cases, an attribute maps directly to a column in the table identified
-by the <code class="computeroutput">table_name</code> of the corresponding object type, although, as
+by the <tt class="computeroutput">table_name</tt> of the corresponding object type, although, as
 mentioned above, we sometimes store attribute values as key-value pairs in a
-"skinny" table. However, when you ask the question "What are
-the attributes of this type of object?", you don't really care about
+&quot;skinny&quot; table. However, when you ask the question &quot;What are
+the attributes of this type of object?&quot;, you don't really care about
 how the values for each attribute are stored (in a column or as key-value
-pairs); you expect to receive the complete list of all attributes.</p></li><li><p>The <code class="computeroutput">max_n_values</code> and <code class="computeroutput">min_n_values</code> columns
+pairs); you expect to receive the complete list of all attributes.</p></li><li><p>The <tt class="computeroutput">max_n_values</tt> and <tt class="computeroutput">min_n_values</tt> columns
 encode information about the number of values an attribute may hold.
-Attributes can be defined to hold 0 or more total values.</p></li><li><p>The <code class="computeroutput">static_p</code> flag indicates whether this attribute value is
+Attributes can be defined to hold 0 or more total values.</p></li><li><p>The <tt class="computeroutput">static_p</tt> flag indicates whether this attribute value is
 shard by all instances of a type, as with static member fields in C++. Static
 attribute are like group level attributes in OpenACS 3.x.</p></li></ul></div><p>The final part of the knowledge level model keeps track of relationship
 types. We said above that object relationships are used to generalize the 3.x
 notion of <span class="emphasis"><em>group member fields</em></span>. These were fields that a developer
 could store on each member of a group, but which were contextualized to the
-membership relation. That is, they were really "attached" to the
+membership relation. That is, they were really &quot;attached&quot; to the
 fact that a user was a member of a particular group, and not really attached
 to the user. This is a subtle but important distinction, because it allowed
 the 3.x system to store multiple sets of attributes on a given user, one set
 for each group membership relation in which they participated.</p><p>In OpenACS 4, this sort of data can be stored as a relationship type, in <a name="object-system-design-relsmodel"></a>
-<code class="computeroutput">acs_rel_types</code>. The key parts of this table look like this:</p><pre class="programlisting">
+<tt class="computeroutput">acs_rel_types</tt>. The key parts of this table look like this:</p><pre class="programlisting">
 
-<code class="computeroutput">create table acs_rel_types (
+<tt class="computeroutput">create table acs_rel_types (
         rel_type        varchar(100) not null
                         references acs_object_types(object_type),
         object_type_one not null
@@ -349,31 +350,31 @@
         min_n_rels_two  integer default 0 not null,
         max_n_rels_two  integer
 );
-</code>
+</tt>
 
 </pre><p>Things to note about this table:</p><div class="itemizedlist"><ul type="disc"><li><p>The main part of this table records the fact that the relation is between
-instances of <code class="computeroutput">object_type_one</code> and instances of
-<code class="computeroutput">object_type_two</code>. Therefore, each instance of this relation type
-will be a pair of objects of the appropriate types.</p></li><li><p>The <code class="computeroutput">role</code> columns store human readable names for the roles
-played by each object in the relation (e.g. "employee" and
-"employer"). Each role must appear in the
-<code class="computeroutput">acs_rel_roles</code>.</p></li><li><p>The <code class="computeroutput">min_n_rels_one</code> column, and its three friends allow the
+instances of <tt class="computeroutput">object_type_one</tt> and instances of
+<tt class="computeroutput">object_type_two</tt>. Therefore, each instance of this relation type
+will be a pair of objects of the appropriate types.</p></li><li><p>The <tt class="computeroutput">role</tt> columns store human readable names for the roles
+played by each object in the relation (e.g. &quot;employee&quot; and
+&quot;employer&quot;). Each role must appear in the
+<tt class="computeroutput">acs_rel_roles</tt>.</p></li><li><p>The <tt class="computeroutput">min_n_rels_one</tt> column, and its three friends allow the
 programmer to specify constraints on how many objects any given object can be
-related to on either side of the relation.</p></li></ul></div><p>This table is easier to understand if you also know how the <a href="object-system-design.html#object-system-design-acs-rels"><code class="computeroutput">acs_rels</code> table</a> works.</p><p>To summarize, the <code class="computeroutput">acs_object_types</code> and
-<code class="computeroutput">acs_attributes</code> tables store metadata that describes every object
+related to on either side of the relation.</p></li></ul></div><p>This table is easier to understand if you also know how the <a href="object-system-design.html#object-system-design-acs-rels"><tt class="computeroutput">acs_rels</tt> table</a> works.</p><p>To summarize, the <tt class="computeroutput">acs_object_types</tt> and
+<tt class="computeroutput">acs_attributes</tt> tables store metadata that describes every object
 type and attribute in the system. These tables generalize the group types
-data model in OpenACS 3.x. The <code class="computeroutput">acs_rel_types</code> table stores
+data model in OpenACS 3.x. The <tt class="computeroutput">acs_rel_types</tt> table stores
 information about relation types.</p><p>This part of the data model is somewhat analogous to the data dictionary
 in Oracle. The information stored here is primarily metadata that describes
 the data stored in the <a href="object-system-design.html#objects-design-op-level" title="Operational-level Data Model">operational level</a> of the data
-model, which is discussed next.</p></div><div class="sect3" lang="en"><div class="titlepage"><div><div><h4 class="title"><a name="objects-design-op-level"></a>Operational-level Data Model</h4></div></div></div><p>The operational level data model centers around the
-<code class="computeroutput">acs_objects</code> table. This table contains a single row for every
-instance of the type <code class="computeroutput">acs_object</code>. The table contains the
+model, which is discussed next.</p></div><div class="sect3" lang="en"><div class="titlepage"><div><div><h4 class="title"><a name="objects-design-op-level"></a>Operational-level Data Model</h4></div></div><div></div></div><p>The operational level data model centers around the
+<tt class="computeroutput">acs_objects</tt> table. This table contains a single row for every
+instance of the type <tt class="computeroutput">acs_object</tt>. The table contains the
 object's unique identifier, a reference to its type, security
 information, and generic auditing information. Here is what the table looks
 like:</p><pre class="programlisting">
 
-<code class="computeroutput">create table acs_objects (
+<tt class="computeroutput">create table acs_objects (
         object_id               integer not null,
         object_type             not null
                                 references acs_object_types (object_type),
@@ -387,32 +388,32 @@
         modifying_user          integer,
         modifying_ip            varchar(50)
 );
-</code>
+</tt>
 
 </pre><p>As we said in Section III, security contexts are hierarchical and also
 modeled as objects. There is another table called
-<code class="computeroutput">acs_object_context_index</code> that stores the context hierarchy.</p><p>Other tables in the core data model store additional information related
-to objects. The table <code class="computeroutput">acs_attribute_values</code> and
-<code class="computeroutput">acs_static_attr_values</code> are used to store attribute values that
+<tt class="computeroutput">acs_object_context_index</tt> that stores the context hierarchy.</p><p>Other tables in the core data model store additional information related
+to objects. The table <tt class="computeroutput">acs_attribute_values</tt> and
+<tt class="computeroutput">acs_static_attr_values</tt> are used to store attribute values that
 are not stored in a helper table associated with the object's type. The
 former is used for instance attributes while the latter is used for
-class-wide "static" values. These tables have the same basic form,
+class-wide &quot;static&quot; values. These tables have the same basic form,
 so we'll only show the first:</p><pre class="programlisting">
 
-<code class="computeroutput">create table acs_attribute_values (
+<tt class="computeroutput">create table acs_attribute_values (
         object_id       not null
                         references acs_objects (object_id) on delete cascade,
         attribute_id    not null
                         references acs_attributes (attribute_id),
         attr_value      varchar(4000),
         primary key     (object_id, attribute_id)
 );
-</code>
+</tt>
 
-</pre><p>Finally, the table <code class="computeroutput">acs_rels</code> <a name="object-system-design-acs-rels"></a>is used to store object pairs
+</pre><p>Finally, the table <tt class="computeroutput">acs_rels</tt> <a name="object-system-design-acs-rels"></a>is used to store object pairs
 that are instances of a relation type.</p><pre class="programlisting">
 
-<code class="computeroutput">create table acs_rels (
+<tt class="computeroutput">create table acs_rels (
         rel_id          not null
                         references acs_objects (object_id)
                         primary key
@@ -424,33 +425,33 @@
                         references acs_objects (object_id),
         unique (rel_type, object_id_one, object_id_two)
 );
-</code>
+</tt>
 
-</pre><p>This table is somewhat subtle:</p><div class="itemizedlist"><ul type="disc"><li><p><code class="computeroutput">rel_id</code> is the ID of an <span class="emphasis"><em>instance</em></span> of some relation
+</pre><p>This table is somewhat subtle:</p><div class="itemizedlist"><ul type="disc"><li><p><tt class="computeroutput">rel_id</tt> is the ID of an <span class="emphasis"><em>instance</em></span> of some relation
 type. We do this so we can store all the mapping tables in this one
-table.</p></li><li><p><code class="computeroutput">rel_type</code> is the ID of the relation type to which this object
+table.</p></li><li><p><tt class="computeroutput">rel_type</tt> is the ID of the relation type to which this object
 belongs.</p></li><li><p>The next two object IDs are the IDs of the objects being mapped.</p></li></ul></div><p>All this table does is store one row for every pair of objects that
 we'd like to attach with a relation. Any additional attributes that
 we'd like to attach to this pair of objects is specified in the
 attributes of the relation type, and could be stored in any number of places.
 As in the 3.x user/groups system, these places include helper tables or
-generic skinny tables.</p><p>This table, along with <code class="computeroutput">acs_attributes</code> and
-<code class="computeroutput">acs_attribute_values</code> generalize the old user/group tables
-<code class="computeroutput">user_group_map</code>, <code class="computeroutput">user_group_member_fields_map</code> and
-<code class="computeroutput">user_group_member_fields</code>.</p></div><div class="sect3" lang="en"><div class="titlepage"><div><div><h4 class="title"><a name="objects-design-discussion"></a>Summary and Discussion</h4></div></div></div><p>The core tables in the OpenACS 4 data model store information about instances
-of object types and relation types. The <code class="computeroutput">acs_object</code> table
+generic skinny tables.</p><p>This table, along with <tt class="computeroutput">acs_attributes</tt> and
+<tt class="computeroutput">acs_attribute_values</tt> generalize the old user/group tables
+<tt class="computeroutput">user_group_map</tt>, <tt class="computeroutput">user_group_member_fields_map</tt> and
+<tt class="computeroutput">user_group_member_fields</tt>.</p></div><div class="sect3" lang="en"><div class="titlepage"><div><div><h4 class="title"><a name="objects-design-discussion"></a>Summary and Discussion</h4></div></div><div></div></div><p>The core tables in the OpenACS 4 data model store information about instances
+of object types and relation types. The <tt class="computeroutput">acs_object</tt> table
 provides the central location that contains a single row for every object in
 the system. Services can use this table along with the metadata in stored in
 the knowledge level data model to create, manage, query and manipulate
-objects in a uniform manner. The <code class="computeroutput">acs_rels</code> table has an analogous
+objects in a uniform manner. The <tt class="computeroutput">acs_rels</tt> table has an analogous
 role in storing information on relations.</p><p>These are all the tables that we'll discuss in this document. The rest
 of the Kernel data model is described in the documents for <a href="subsites-design.html" title="Subsites Design Document">subsites</a>, the <a href="permissions-design.html" title="Permissions Design">permissions</a> system and for the <a href="groups-design.html" title="Groups Design">groups</a> system.</p><p>Some examples of how these tables are used in the system can be found in
-the discussion of the API, which comes next.</p></div></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="object-system-design-api"></a>API</h3></div></div></div><p>Now we'll examine each piece of the API in detail. Bear in mind that
-the Object Model API is defined primarily through PL/SQL packages.</p><div class="sect3" lang="en"><div class="titlepage"><div><div><h4 class="title"><a name="objects-design-object-types"></a>Object Types and Attributes</h4></div></div></div><p>The object system provides an API for creating new object types and then
-attaching attributes to them. The procedures <code class="computeroutput">create_type</code> and
-<code class="computeroutput">drop_type</code> are used to create and delete type definitions.</p><p>The two calls show up in the package <code class="computeroutput">acs_object_type</code>.</p><pre class="programlisting">
+the discussion of the API, which comes next.</p></div></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="object-system-design-api"></a>API</h3></div></div><div></div></div><p>Now we'll examine each piece of the API in detail. Bear in mind that
+the Object Model API is defined primarily through PL/SQL packages.</p><div class="sect3" lang="en"><div class="titlepage"><div><div><h4 class="title"><a name="objects-design-object-types"></a>Object Types and Attributes</h4></div></div><div></div></div><p>The object system provides an API for creating new object types and then
+attaching attributes to them. The procedures <tt class="computeroutput">create_type</tt> and
+<tt class="computeroutput">drop_type</tt> are used to create and delete type definitions.</p><p>The two calls show up in the package <tt class="computeroutput">acs_object_type</tt>.</p><pre class="programlisting">
 
-<code class="computeroutput">  procedure create_type (
+<tt class="computeroutput">  procedure create_type (
     object_type         in acs_object_types.object_type%TYPE,
     pretty_name         in acs_object_types.pretty_name%TYPE,
     pretty_plural       in acs_object_types.pretty_plural%TYPE,
@@ -469,13 +470,13 @@
     object_type         in acs_object_types.object_type%TYPE,
     cascade_p           in char default 'f'
   );
-</code>
+</tt>
 
-</pre><p>Here the <code class="computeroutput">cascade_p</code> argument indicates whether dropping a type
+</pre><p>Here the <tt class="computeroutput">cascade_p</tt> argument indicates whether dropping a type
 should also remove all its subtypes from the system.</p><p>We define a similar interface for defining attributes in the package
-<code class="computeroutput">acs_attribute</code>:</p><pre class="programlisting">
+<tt class="computeroutput">acs_attribute</tt>:</p><pre class="programlisting">
 
-<code class="computeroutput">  function create_attribute (
+<tt class="computeroutput">  function create_attribute (
     object_type         in acs_attributes.object_type%TYPE,
     attribute_name      in acs_attributes.attribute_name%TYPE,
     datatype            in acs_attributes.datatype%TYPE,
@@ -496,12 +497,12 @@
     attribute_name in varchar
   );
 
-</code>
+</tt>
 
 </pre><p>In addition, the following two calls are available for attaching extra
 annotations onto attributes:</p><pre class="programlisting">
 
-<code class="computeroutput">  procedure add_description (
+<tt class="computeroutput">  procedure add_description (
     object_type         in acs_attribute_descriptions.object_type%TYPE,
     attribute_name      in acs_attribute_descriptions.attribute_name%TYPE,
     description_key     in acs_attribute_descriptions.description_key%TYPE,
@@ -513,30 +514,30 @@
     attribute_name      in acs_attribute_descriptions.attribute_name%TYPE,
     description_key     in acs_attribute_descriptions.description_key%TYPE
   );
-</code>
+</tt>
 
 </pre><p>At this point, what you must do to hook into the object system from your
-own data model becomes clear:</p><div class="itemizedlist"><ul type="disc"><li><p>Create a table that will store the instances of the new type.</p></li><li><p>Call <code class="computeroutput">acs_object_type.create_type()</code> to fill in the metadata
+own data model becomes clear:</p><div class="itemizedlist"><ul type="disc"><li><p>Create a table that will store the instances of the new type.</p></li><li><p>Call <tt class="computeroutput">acs_object_type.create_type()</tt> to fill in the metadata
 table on this new type. If you want your objects to appear in the
-<code class="computeroutput">acs_objects</code> table, then your new type must be a subtype of
-<code class="computeroutput">acs_object</code>.</p></li><li><p>Call <code class="computeroutput">acs_attribute.create_attribute()</code> to fill in information
+<tt class="computeroutput">acs_objects</tt> table, then your new type must be a subtype of
+<tt class="computeroutput">acs_object</tt>.</p></li><li><p>Call <tt class="computeroutput">acs_attribute.create_attribute()</tt> to fill in information
 on the attributes that this type defines.</p></li></ul></div><p>So, suppose we are writing a new version of the ticket tracker for 4.0. We
 probably define a table to store tickets in, and each ticket might have an ID
 and a description. If we want each ticket to be an object, then
-<code class="computeroutput">ticket_id</code> must reference the <code class="computeroutput">object_id</code> column in
-<code class="computeroutput">acs_objects</code>:</p><pre class="programlisting">
+<tt class="computeroutput">ticket_id</tt> must reference the <tt class="computeroutput">object_id</tt> column in
+<tt class="computeroutput">acs_objects</tt>:</p><pre class="programlisting">
 
-<code class="computeroutput">create table tickets ( 
+<tt class="computeroutput">create table tickets ( 
     ticket_id references acs_objects (object_id),
     description varchar(512), 
     ... 
 ) ;
-</code>
+</tt>
 
 </pre><p>In addition to defining the table, we need this extra PL/SQL code to hook
 into the object type tables:</p><pre class="programlisting">
 
-<code class="computeroutput">declare
+<tt class="computeroutput">declare
  attr_id acs_attributes.attribute_id%TYPE;
 begin
  acs_object_type.create_type (
@@ -561,25 +562,25 @@
 
 commit;
 end;
-</code>
+</tt>
 
 </pre><p>Thus, with a small amount of extra code, the new ticket tracker will now
 automatically be hooked into every generic object service that exists. Better
 still, this code need not be changed as new services are added. As an aside,
 the most important service that requires you to subtype
-<code class="computeroutput">acs_object</code> is <a href="permissions-design.html" title="Permissions Design">permissions</a>.</p></div><div class="sect3" lang="en"><div class="titlepage"><div><div><h4 class="title"><a name="objects-design-objects"></a>Objects</h4></div></div></div><p>The next important piece of the API is defined in the
-<code class="computeroutput">acs_object</code> package, and is concerned with creating and managing
+<tt class="computeroutput">acs_object</tt> is <a href="permissions-design.html" title="Permissions Design">permissions</a>.</p></div><div class="sect3" lang="en"><div class="titlepage"><div><div><h4 class="title"><a name="objects-design-objects"></a>Objects</h4></div></div><div></div></div><p>The next important piece of the API is defined in the
+<tt class="computeroutput">acs_object</tt> package, and is concerned with creating and managing
 objects. This part of the API is designed to take care of the mundane
 bookkeeping needed to create objects and query their attributes.
 Realistically however, limitations in PL/SQL and Oracle will make it hard to
 build generic procedures for doing large scale queries in the object system,
 so developers who need to do this will probably have to be fairly familiar
-with the data model at a lower level.</p><p>The function <code class="computeroutput">acs_object.new()</code> makes a new object for you. The
-function <code class="computeroutput">acs_object.del()</code> deletes an object. As before, this
+with the data model at a lower level.</p><p>The function <tt class="computeroutput">acs_object.new()</tt> makes a new object for you. The
+function <tt class="computeroutput">acs_object.del()</tt> deletes an object. As before, this
 is an abbreviated interface with all the long type specs removed. See the
 data model or developer's guide for the full interface.</p><pre class="programlisting">
 
-<code class="computeroutput"> function new (
+<tt class="computeroutput"> function new (
   object_id     in acs_objects.object_id%TYPE default null,
   object_type   in acs_objects.object_type%TYPE
                            default 'acs_object',
@@ -594,28 +595,28 @@
  procedure delete (
   object_id     in acs_objects.object_id%TYPE
  );
-</code>
+</tt>
 
 </pre><p>Next, we define some generic functions to manipulate attributes. Again,
 these interfaces are useful to an extent, but for large scale queries,
 it's likely that developers would have to query the data model directly,
-and then encapsulate their queries in procedures.</p><p>For names, the <code class="computeroutput">default_name</code> function is used if you don't
+and then encapsulate their queries in procedures.</p><p>For names, the <tt class="computeroutput">default_name</tt> function is used if you don't
 want to define your own name function.</p><pre class="programlisting">
 
-<code class="computeroutput"> function name (
+<tt class="computeroutput"> function name (
   object_id     in acs_objects.object_id%TYPE
  ) return varchar;
 
  function default_name (
   object_id     in acs_objects.object_id%TYPE
  ) return varchar;
 
-</code>
+</tt>
 
 </pre><p>The following functions tell you where attributes are stored, and fetch
 single attributes for you.</p><pre class="programlisting">
 
-<code class="computeroutput"> procedure get_attribute_storage ( 
+<tt class="computeroutput"> procedure get_attribute_storage ( 
    object_id_in      in  acs_objects.object_id%TYPE,
    attribute_name_in in  acs_attributes.attribute_name%TYPE,
    v_column          out varchar2,
@@ -633,17 +634,17 @@
    attribute_name_in in  acs_attributes.attribute_name%TYPE,
    value_in          in  varchar2
  );
-</code>
+</tt>
 
-</pre><p>The main use of the <code class="computeroutput">acs_object</code> package is to create
+</pre><p>The main use of the <tt class="computeroutput">acs_object</tt> package is to create
 application objects and make them available for services via the
-<code class="computeroutput">acs_objects</code> table. To do this, you just have to make sure you
-call <code class="computeroutput">acs_object.new()</code> on objects that you wish to appear in the
-<code class="computeroutput">acs_objects</code> table. In addition, all such objects must be
-instances of some subtype of <code class="computeroutput">acs_object</code>.</p><p>Continuing the ticket example, we might define the following sort of
+<tt class="computeroutput">acs_objects</tt> table. To do this, you just have to make sure you
+call <tt class="computeroutput">acs_object.new()</tt> on objects that you wish to appear in the
+<tt class="computeroutput">acs_objects</tt> table. In addition, all such objects must be
+instances of some subtype of <tt class="computeroutput">acs_object</tt>.</p><p>Continuing the ticket example, we might define the following sort of
 procedure for creating a new ticket:</p><pre class="programlisting">
 
-<code class="computeroutput"> function new_ticket (
+<tt class="computeroutput"> function new_ticket (
   package_id        in tickets.ticket_id%TYPE 
             default null,
   description       in tickets.description%TYPE default '',
@@ -663,42 +664,42 @@
     (v_ticket_id, description);
     return v_ticket_id;
   end new_ticket;
-</code>
+</tt>
 
 </pre><p>This function will typically be defined in the context of a PL/SQL
 package, but we've left it stand-alone here for simplicity.</p><p>To summarize: in order to take advantage of OpenACS 4 services, a new
 application need only do three things:</p><div class="itemizedlist"><ul type="disc"><li><p>Define a data model to describe application objects. This can just be a
 normal SQL table.</p></li><li><p>Create an object type, using code like in the example from the previous
 section.</p></li><li><p>Make sure application objects are created using
-<code class="computeroutput">acs_object.new()</code> in addition to whatever SQL code is needed to
+<tt class="computeroutput">acs_object.new()</tt> in addition to whatever SQL code is needed to
 insert a new row into the application data model.</p></li></ul></div><p>One of the design goals of OpenACS 4 was to provide a straightforward and
 consistent mechanism to provide applications with general services. What we
 have seen here is that three simple steps and minimal changes in the
 application data model are sufficient to make sure that application objects
-are represented in the <code class="computeroutput">acs_objects</code> table. Subsequently, all of
+are represented in the <tt class="computeroutput">acs_objects</tt> table. Subsequently, all of
 the general services in OpenACS 4 (i.e. permissions, general comments, and so on)
-are written to work with any object that appears in <code class="computeroutput">acs_objects</code>.
+are written to work with any object that appears in <tt class="computeroutput">acs_objects</tt>.
 Therefore, in general these three steps are sufficient to make OpenACS 4 services
-available to your application.</p></div><div class="sect3" lang="en"><div class="titlepage"><div><div><h4 class="title"><a name="objects-design-relat-types"></a>Relation Types</h4></div></div></div><p>The relations system defines two packages: <code class="computeroutput">acs_rel_type</code> for
-creating and managing relation types, and <code class="computeroutput">acs_rel</code> for relating
+available to your application.</p></div><div class="sect3" lang="en"><div class="titlepage"><div><div><h4 class="title"><a name="objects-design-relat-types"></a>Relation Types</h4></div></div><div></div></div><p>The relations system defines two packages: <tt class="computeroutput">acs_rel_type</tt> for
+creating and managing relation types, and <tt class="computeroutput">acs_rel</tt> for relating
 objects.</p><p>These two procedures just insert and remove roles from the
-<code class="computeroutput">acs_rel_roles</code> table. This table stores the legal relationship
-"roles" that can be used when creating relation types. Examples of
-roles are, say, "member", or "employer".</p><pre class="programlisting">
+<tt class="computeroutput">acs_rel_roles</tt> table. This table stores the legal relationship
+&quot;roles&quot; that can be used when creating relation types. Examples of
+roles are, say, &quot;member&quot;, or &quot;employer&quot;.</p><pre class="programlisting">
 
-<code class="computeroutput"> procedure create_role (
+<tt class="computeroutput"> procedure create_role (
     role        in acs_rel_roles.role%TYPE
   );
 
   procedure drop_role (
     role        in acs_rel_roles.role%TYPE
   );
-</code>
+</tt>
 
-</pre><p>The main functions in the <code class="computeroutput">acs_rel_type</code> package are used to
+</pre><p>The main functions in the <tt class="computeroutput">acs_rel_type</tt> package are used to
 create and drop relation types.</p><pre class="programlisting">
 
-<code class="computeroutput">  procedure create_type (
+<tt class="computeroutput">  procedure create_type (
     rel_type            in acs_rel_types.rel_type%TYPE,
     pretty_name         in acs_object_types.pretty_name%TYPE,
     pretty_plural       in acs_object_types.pretty_plural%TYPE,
@@ -724,12 +725,12 @@
     rel_type            in acs_rel_types.rel_type%TYPE,
     cascade_p           in char default 'f'
   );
-</code>
+</tt>
 
-</pre><p>Finally, the <code class="computeroutput">acs_rel</code> package provides an API that you use to
+</pre><p>Finally, the <tt class="computeroutput">acs_rel</tt> package provides an API that you use to
 create and destroy instances of a relation type:</p><pre class="programlisting">
 
-<code class="computeroutput">  function new (
+<tt class="computeroutput">  function new (
     rel_id              in acs_rels.rel_id%TYPE default null,
     rel_type            in acs_rels.rel_type%TYPE default 'relationship',
     object_id_one       in acs_rels.object_id_one%TYPE,
@@ -742,15 +743,15 @@
   procedure delete (
     rel_id      in acs_rels.rel_id%TYPE
   );
-</code>
+</tt>
 
 </pre><p>A good example of how to use relation types appears in the OpenACS 4 data
 model for <span class="emphasis"><em>groups</em></span>. As in 3.x, group membership is modeled using a
 mapping table, but now we create this mapping using relation types instead of
 explicitly creating a table. First, we create a helper table to store state
 on each membership fact:</p><pre class="programlisting">
 
-<code class="computeroutput">create table membership_rels (
+<tt class="computeroutput">create table membership_rels (
         rel_id          constraint membership_rel_rel_id_fk
                         references acs_rels (rel_id)
                         constraint membership_rel_rel_id_pk
@@ -760,11 +761,11 @@
                         check (member_state in ('approved', 'banned',
                                                 'rejected', 'deleted'))
 );
-</code>
+</tt>
 
 </pre><p>Then, we create a new object type to describe groups.</p><pre class="programlisting">
 
-<code class="computeroutput"> acs_object_type.create_type (
+<tt class="computeroutput"> acs_object_type.create_type (
    object_type =&gt; 'group',
    pretty_name =&gt; 'Group',
    pretty_plural =&gt; 'Groups',
@@ -773,18 +774,18 @@
    type_extension_table =&gt; 'group_types',
    name_method =&gt; 'acs_group.name'
  );
-</code>
+</tt>
 
 </pre><p>In this example, we've made groups a subtype of
-<code class="computeroutput">acs_object</code> to make the code simpler. The actual data model is
+<tt class="computeroutput">acs_object</tt> to make the code simpler. The actual data model is
 somewhat different. Also, we've assumed that there is a helper table
-called <code class="computeroutput">groups</code> to store information on groups, and that there is
-a helper table called <code class="computeroutput">group_types</code> that has been defined to store
-extra attributes on groups.</p><p>Now, assuming we have another object type called <code class="computeroutput">person</code> to
+called <tt class="computeroutput">groups</tt> to store information on groups, and that there is
+a helper table called <tt class="computeroutput">group_types</tt> that has been defined to store
+extra attributes on groups.</p><p>Now, assuming we have another object type called <tt class="computeroutput">person</tt> to
 represent objects that can be group members, we define the following
 relationship type for group membership:</p><pre class="programlisting">
 
-<code class="computeroutput"> acs_rel_type.create_role ('member');
+<tt class="computeroutput"> acs_rel_type.create_role ('member');
 
  acs_rel_type.create_type (
    rel_type =&gt; 'membership_rel',
@@ -797,16 +798,16 @@
    object_type_two =&gt; 'person', role_two =&gt; 'member',
    min_n_rels_two =&gt; 0, max_n_rels_two =&gt; null
  );
-</code>
+</tt>
 
 </pre><p>Now we can define the following procedure to add a new member to a group.
 All this function does is create a new instance of the membership relation
 type and then insert the membership state into the helper table that we
 define above. In the actual implementation, this function is implemented in
-the <code class="computeroutput">membership_rel</code> package. Here we just define an independent
+the <tt class="computeroutput">membership_rel</tt> package. Here we just define an independent
 function:</p><pre class="programlisting">
 
-<code class="computeroutput">function member_add (
+<tt class="computeroutput">function member_add (
     rel_id              in membership_rels.rel_id%TYPE default null,
     rel_type            in acs_rels.rel_type%TYPE default 'membership_rel',
     group               in acs_rels.object_id_one%TYPE,
@@ -833,12 +834,12 @@
     value
      (v_rel_id, new.member_state);
   end;
-</code>
+</tt>
 
 </pre><p>Another simple function can be defined to remove a member from a
 group:</p><pre class="programlisting">
 
-<code class="computeroutput">  procedure member_delete (
+<tt class="computeroutput">  procedure member_delete (
     rel_id  in membership_rels.rel_id%TYPE
   )
   is
@@ -848,13 +849,13 @@
 
     acs_rel.del(rel_id);
   end;
-</code>
+</tt>
 
-</pre></div><div class="sect3" lang="en"><div class="titlepage"><div><div><h4 class="title"><a name="objects-design-discuss"></a>Summary and Discussion</h4></div></div></div><p>The Object Model's API and data model provides a small set of simple
+</pre></div><div class="sect3" lang="en"><div class="titlepage"><div><div><h4 class="title"><a name="objects-design-discuss"></a>Summary and Discussion</h4></div></div><div></div></div><p>The Object Model's API and data model provides a small set of simple
 procedures that allow applications to create object types, object instances,
 and object relations. Most of the data model is straightforward; the relation
 type mechanism is a bit more complex, but in return it provides functionality
-on par with the old user/groups system in a more general way.</p></div></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="object-system-design-future"></a>Future Improvements/Areas of Likely Change</h3></div></div></div><p>Nothing here yet.</p></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="object-system-design-authors"></a>Authors</h3></div></div></div><p>Pete Su generated this document
+on par with the old user/groups system in a more general way.</p></div></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="object-system-design-future"></a>Future Improvements/Areas of Likely Change</h3></div></div><div></div></div><p>Nothing here yet.</p></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="object-system-design-authors"></a>Authors</h3></div></div><div></div></div><p>Pete Su generated this document
 from material culled from other documents by Michael Yoon, Richard Li and Rafael Schloming. But, any remaining lies
-are his and his alone.</p></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="object-system-design-revision-hist"></a>Revision History</h3></div></div></div><div class="informaltable"><table cellspacing="0" border="1"><colgroup><col><col><col><col></colgroup><tbody><tr><td><span class="strong"><strong>Document Revision #</strong></span></td><td><span class="strong"><strong>Action Taken, Notes</strong></span></td><td><span class="strong"><strong>When?</strong></span></td><td><span class="strong"><strong>By Whom?</strong></span></td></tr><tr><td>0.1</td><td>Creation</td><td>9/09/2000</td><td>Pete Su</td></tr><tr><td>0.2</td><td>Edited for ACS 4 Beta</td><td>9/30/2000</td><td>Kai Wu</td></tr><tr><td>0.3</td><td>Edited for ACS 4.0.1, fixed some mistakes, removed use of term
-"OM"</td><td>11/07/2000</td><td>Pete Su</td></tr></tbody></table></div></div></div><div class="navfooter"><hr><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="object-system-requirements.html">Prev</a> </td><td width="20%" align="center"><a accesskey="h" href="index.html">Home</a></td><td width="40%" align="right"> <a accesskey="n" href="permissions-requirements.html">Next</a></td></tr><tr><td width="40%" align="left">Object Model Requirements </td><td width="20%" align="center"><a accesskey="u" href="kernel-doc.html">Up</a></td><td width="40%" align="right"> Permissions Requirements</td></tr></table><hr><address><a href="mailto:docs@openacs.org">docs@openacs.org</a></address></div><a name="comments"></a><center><a href="http://openacs.org/doc/current/object-system-design.html#comments">View comments on this page at openacs.org</a></center></body></html>
+are his and his alone.</p></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="object-system-design-revision-hist"></a>Revision History</h3></div></div><div></div></div><div class="informaltable"><table cellspacing="0" border="1"><colgroup><col><col><col><col></colgroup><tbody><tr><td><span class="strong">Document Revision #</span></td><td><span class="strong">Action Taken, Notes</span></td><td><span class="strong">When?</span></td><td><span class="strong">By Whom?</span></td></tr><tr><td>0.1</td><td>Creation</td><td>9/09/2000</td><td>Pete Su</td></tr><tr><td>0.2</td><td>Edited for ACS 4 Beta</td><td>9/30/2000</td><td>Kai Wu</td></tr><tr><td>0.3</td><td>Edited for ACS 4.0.1, fixed some mistakes, removed use of term
+&quot;OM&quot;</td><td>11/07/2000</td><td>Pete Su</td></tr></tbody></table></div></div></div><div class="navfooter"><hr><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="object-system-requirements.html">Prev</a> </td><td width="20%" align="center"><a accesskey="h" href="index.html">Home</a></td><td width="40%" align="right"> <a accesskey="n" href="permissions-requirements.html">Next</a></td></tr><tr><td width="40%" align="left">Object Model Requirements </td><td width="20%" align="center"><a accesskey="u" href="kernel-doc.html">Up</a></td><td width="40%" align="right"> Permissions Requirements</td></tr></table><hr><address><a href="mailto:docs@openacs.org">docs@openacs.org</a></address></div><a name="comments"></a><center><a href="http://openacs.org/doc/current/object-system-design.html#comments">View comments on this page at openacs.org</a></center></body></html>
Index: openacs-4/packages/acs-core-docs/www/object-system-requirements.html
===================================================================
RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/object-system-requirements.html,v
diff -u -r1.27 -r1.27.4.1
--- openacs-4/packages/acs-core-docs/www/object-system-requirements.html	17 Jul 2006 05:38:31 -0000	1.27
+++ openacs-4/packages/acs-core-docs/www/object-system-requirements.html	3 Feb 2008 12:07:40 -0000	1.27.4.1
@@ -1,55 +1,56 @@
-<html><head><meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"><title>Object Model Requirements</title><meta name="generator" content="DocBook XSL Stylesheets V1.70.1"><link rel="home" href="index.html" title="OpenACS Core Documentation"><link rel="up" href="kernel-doc.html" title="Chapter�15.�Kernel Documentation"><link rel="previous" href="kernel-overview.html" title="Overview"><link rel="next" href="object-system-design.html" title="Object Model Design"><link rel="stylesheet" href="openacs.css" type="text/css"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><a href="http://openacs.org"><img src="/doc/images/alex.jpg" border="0" alt="Alex logo"></a><table width="100%" summary="Navigation header" border="0"><tr><td width="20%" align="left"><a accesskey="p" href="kernel-overview.html">Prev</a> </td><th width="60%" align="center">Chapter�15.�Kernel Documentation</th><td width="20%" align="right"> <a accesskey="n" href="object-system-design.html">Next</a></td></tr></table><hr></div><div class="sect1" lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="object-system-requirements"></a>Object Model Requirements</h2></div></div></div><div class="authorblurb"><p>By Pete Su</p>
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html><head><meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"><title>Object Model Requirements</title><meta name="generator" content="DocBook XSL Stylesheets V1.60.1"><link rel="home" href="index.html" title="OpenACS Core Documentation"><link rel="up" href="kernel-doc.html" title="Chapter�15.�Kernel Documentation"><link rel="previous" href="kernel-overview.html" title="Overview"><link rel="next" href="object-system-design.html" title="Object Model Design"><link rel="stylesheet" href="openacs.css" type="text/css"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><a href="http://openacs.org"><img src="/doc/images/alex.jpg" border="0" alt="Alex logo"></a><table width="100%" summary="Navigation header" border="0"><tr><td width="20%" align="left"><a accesskey="p" href="kernel-overview.html">Prev</a> </td><th width="60%" align="center">Chapter�15.�Kernel Documentation</th><td width="20%" align="right"> <a accesskey="n" href="object-system-design.html">Next</a></td></tr></table><hr></div><div class="sect1" lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="object-system-requirements"></a>Object Model Requirements</h2></div></div><div></div></div><div class="authorblurb"><p>By Pete Su</p>
           OpenACS docs are written by the named authors, and may be edited
           by OpenACS documentation staff.
-        </div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="object-system-requirements-"></a>I. Introduction</h3></div></div></div><p>A major goal in OpenACS 4 is to unify and normalize many of the core services
+        </div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="object-system-requirements-"></a>I. Introduction</h3></div></div><div></div></div><p>A major goal in OpenACS 4 is to unify and normalize many of the core services
 of the system into a coherent common data model and API. In the past, these
 services were provided to applications in an ad-hoc and irregular fashion.
 Examples of such services include:</p><div class="itemizedlist"><ul type="disc"><li><p>General Comments</p></li><li><p>User/groups</p></li><li><p>Attribute storage in user/groups</p></li><li><p>General Permissions</p></li><li><p>Site wide search</p></li><li><p>General Auditing</p></li></ul></div><p>All of these services involve relating extra information and services to
 application data objects, examples of which include:</p><div class="itemizedlist"><ul type="disc"><li><p>Bboard messages</p></li><li><p>A user home page</p></li><li><p>A ticket in the Ticket Tracker</p></li><li><p>A photograph in the PhotoDB</p></li></ul></div><p>In the past, developers had to use ad-hoc and inconsistent schemes to
-interface to the various "general" services mentioned above. Since
+interface to the various &quot;general&quot; services mentioned above. Since
 each service used its own scheme for storing its metadata and mapping this
 data to application objects, we could not implement any kind of centralized
 management system or consistent administrative pages for all the services.
 Consequently, a large amount of duplicate code appeared throughout the system
-for dealing with these services.</p><p>Unifying and "normalizing" these interfaces, to minimize the
+for dealing with these services.</p><p>Unifying and &quot;normalizing&quot; these interfaces, to minimize the
 amount of code repetition in applications, is a primary goal of OpenACS 4. Thus
 the Object Model (OM, also referred to later as the object system) is
 concerned primarily with the storage and management of <span class="emphasis"><em>metadata</em></span>, on
-any object within a given instance of OpenACS 4. The term "metadata"
+any object within a given instance of OpenACS 4. The term &quot;metadata&quot;
 refers to any extra data the OM stores on behalf of the application - outside
 of the application's data model - in order to enable certain generic
-services. The term "object" refers to any entity being represented
+services. The term &quot;object&quot; refers to any entity being represented
 within the OpenACS, and typically corresponds to a single row within the
-relational database.</p></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="object-system-requirements-vision"></a>Vision Statement</h3></div></div></div><p>The OpenACS 4 Object Model must address five high-level requirements that
+relational database.</p></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="object-system-requirements-vision"></a>Vision Statement</h3></div></div><div></div></div><p>The OpenACS 4 Object Model must address five high-level requirements that
 repeatedly exhibit themselves in the context of existing services in OpenACS 3.x,
-as described below.</p><p><span class="strong"><strong>Object Identifiers for General Services</strong></span></p><p>Generic services require a single unambiguous way of identifying
+as described below.</p><p><span class="strong">Object Identifiers for General Services</span></p><p>Generic services require a single unambiguous way of identifying
 application objects that they manage or manipulate. In OpenACS 3.x, there are
 several different idioms that construct object identifiers from other data.
-Many modules use a <code class="computeroutput">(user_id, group_id, scope)</code> triple combination
+Many modules use a <tt class="computeroutput">(user_id, group_id, scope)</tt> triple combination
 for the purpose of recording ownership information on objects for access
-control. User/groups also uses <code class="computeroutput">(user_id, group_id)</code> pairs in its
-<code class="computeroutput">user_group_map</code> table as a way to identify data associated with a
+control. User/groups also uses <tt class="computeroutput">(user_id, group_id)</tt> pairs in its
+<tt class="computeroutput">user_group_map</tt> table as a way to identify data associated with a
 single membership relation.</p><p>Also in OpenACS 3.x, many utility modules exist that do nothing more than
 attach some extra attributes to existing application data. For example,
 general comments maintains a mapping table that maps application
-"page" data (static or dynamic) to one or more user comments on the
+&quot;page&quot; data (static or dynamic) to one or more user comments on the
 page, by constructing a unique identifier for each page. This identifier is
 usually a combination of the table in which the data is stored, and the value
 of the primary key value for the particular page. This idiom is referred to
-as the "(on_which_table + on_what_id)" method for identifying
+as the &quot;(on_which_table + on_what_id)&quot; method for identifying
 application data. General comments stores its map from pages to comments
-using a "(on_which_table + on_what_id)" key, plus the id of the
+using a &quot;(on_which_table + on_what_id)&quot; key, plus the id of the
 comment itself.</p><p>All of these composite key constructions are implicit object identifiers:
 they build a unique ID out of other pieces of the data model. The problem is
 that their definition and use is ad-hoc and inconsistent. This makes the
 construction of generic application-independent services difficult.
 Therefore, the OpenACS 4 Object Model should provide a centralized and uniform
-mechanism for tagging application objects with unique identifiers.</p><p><span class="strong"><strong>Support for Unified Access Control</strong></span></p><p>Access control should be as transparent as possible to the application
+mechanism for tagging application objects with unique identifiers.</p><p><span class="strong">Support for Unified Access Control</span></p><p>Access control should be as transparent as possible to the application
 developer. Until the implementation of the general permissions system, every
 OpenACS application had to manage access control to its data separately. Later
-on, a notion of "scoping" was introduced into the core data
-model.</p><p>"Scope" is a term best explained by example. Consider some
-hypothetical rows in the <code class="computeroutput">address_book</code> table:</p><div class="informaltable"><table cellspacing="0" border="1"><colgroup><col><col><col><col></colgroup><tbody><tr><td><span class="strong"><strong>...</strong></span></td><td><span class="strong"><strong><code class="computeroutput">scope</code></strong></span></td><td><span class="strong"><strong><code class="computeroutput">user_id</code></strong></span></td><td><span class="strong"><strong><code class="computeroutput">group_id</code></strong></span></td><td><span class="strong"><strong>...</strong></span></td></tr><tr><td>...</td><td><code class="computeroutput">user</code></td><td><code class="computeroutput">123</code></td><td> </td><td>...</td></tr><tr><td>...</td><td><code class="computeroutput">group</code></td><td> </td><td><code class="computeroutput">456</code></td><td>...</td></tr><tr><td>...</td><td><code class="computeroutput">public</code></td><td> </td><td> </td><td>...</td></tr></tbody></table></div><p>The first row represents an entry in User 123's personal address book,
+on, a notion of &quot;scoping&quot; was introduced into the core data
+model.</p><p>&quot;Scope&quot; is a term best explained by example. Consider some
+hypothetical rows in the <tt class="computeroutput">address_book</tt> table:</p><div class="informaltable"><table cellspacing="0" border="1"><colgroup><col><col><col><col></colgroup><tbody><tr><td><span class="strong">...</span></td><td><span class="strong"><tt class="computeroutput">scope</tt></span></td><td><span class="strong"><tt class="computeroutput">user_id</tt></span></td><td><span class="strong"><tt class="computeroutput">group_id</tt></span></td><td><span class="strong">...</span></td></tr><tr><td>...</td><td><tt class="computeroutput">user</tt></td><td><tt class="computeroutput">123</tt></td><td>�</td><td>...</td></tr><tr><td>...</td><td><tt class="computeroutput">group</tt></td><td>�</td><td><tt class="computeroutput">456</tt></td><td>...</td></tr><tr><td>...</td><td><tt class="computeroutput">public</tt></td><td>�</td><td>�</td><td>...</td></tr></tbody></table></div><p>The first row represents an entry in User 123's personal address book,
 the second row represents an entry in User Group 456's shared address
 book, and the third row represents an entry in the site's public address
 book.</p><p>In this way, the scoping columns identify the security context in which a
@@ -63,9 +64,9 @@
 page, a security problem could result.</p><p>Thus the OpenACS 4 Object Model must support a more general access control
 system that allows access control domains to be hierarchical, and specifiable
 with a single piece of data, instead of the old composite keys described
-above.</p><p><span class="strong"><strong>Extensible Data Models</strong></span></p><p>Another problem with previous OpenACS data models is that many of the central
+above.</p><p><span class="strong">Extensible Data Models</span></p><p>Another problem with previous OpenACS data models is that many of the central
 tables in the system became bloated as they were extended to support an
-increasing number of modules. The <code class="computeroutput">users</code> table is the best case
+increasing number of modules. The <tt class="computeroutput">users</tt> table is the best case
 in point: it became full of columns that exist for various special
 applications (e.g. user portraits), but that aren't really related to
 each other in any way except that they store information on users, i.e. the
@@ -81,33 +82,33 @@
 custom extensions to the existing data models, and the OM does the
 bookkeeping necessary to make this easier, providing a generic API for object
 creation that automatically keeps track of the location and relationships
-between data.</p><p><span class="strong"><strong>Design Note:</strong></span> While this doesn't really belong in a
+between data.</p><p><span class="strong">Design Note:</span> While this doesn't really belong in a
 requirements document, the fact that we are constrained to using relational
 databases means that certain constraints on the overall design of the object
-data model exist, which you can read about in <a href="object-system-design.html#object-system-design-summary">Summary and Design Considerations</a>.</p><p><span class="strong"><strong>Modifiable Data Models</strong></span></p><p>Another recurring applications problem is how to store a modifiable data
+data model exist, which you can read about in <a href="object-system-design.html#object-system-design-summary">Summary and Design Considerations</a>.</p><p><span class="strong">Modifiable Data Models</span></p><p>Another recurring applications problem is how to store a modifiable data
 model, or how to store information that may change extensively between
 releases or in different client installations. Furthermore, we want to avoid
 changes to an application's database queries in the face of any custom
 extensions, since such changes are difficult or dangerous to make at runtime,
 and can make updating the system difficult. Some example applications in OpenACS
 3.x with modifiable data models include:</p><div class="itemizedlist"><ul type="disc"><li><p>User/groups: developers and users can attach custom data to group types,
-groups, and members of groups.</p></li><li><p>In the Ecommerce data model, the <code class="computeroutput">ec_custom_product_fields</code>
+groups, and members of groups.</p></li><li><p>In the Ecommerce data model, the <tt class="computeroutput">ec_custom_product_fields</tt>
 table defines attributes for catalog products, and the
-<code class="computeroutput">ec_custom_product_field_values</code> table stores values for those
-attributes.</p></li><li><p>In the PhotoDB data model, the <code class="computeroutput">ph_custom_photo_fields</code> table
+<tt class="computeroutput">ec_custom_product_field_values</tt> table stores values for those
+attributes.</p></li><li><p>In the PhotoDB data model, the <tt class="computeroutput">ph_custom_photo_fields</tt> table
 defines attributes for the photographs owned by a specific user, and tables
 named according to the convention
-"<code class="computeroutput">ph_user_&lt;user_id&gt;_custom_info</code>" are used to
+&quot;<tt class="computeroutput">ph_user_&lt;user_id&gt;_custom_info</tt>&quot; are used to
 store values for those attributes.</p></li></ul></div><p>Thus the Object Model must provide a general mechanism for applications
 and developers to modify or extend data models, without requiring changes to
 the SQL schema of the system. This ensures that all applications use the same
-base schema, resulting in a uniform and more maintainable system.</p><p><span class="strong"><strong>Generic Relations</strong></span></p><p>Many OpenACS applications define simple relationships between application
+base schema, resulting in a uniform and more maintainable system.</p><p><span class="strong">Generic Relations</span></p><p>Many OpenACS applications define simple relationships between application
 objects, and tag those relationships with extra data. In OpenACS 3.x, this was
 done using <span class="emphasis"><em>mapping tables</em></span>. The user/groups module has the most
 highly developed data model for this purpose, using a single table called
-<code class="computeroutput">user_group_map</code> that mapped users to groups. In addition, it uses
-the the <code class="computeroutput">user_group_member_fields</code> and
-<code class="computeroutput">user_group_member_fields_map</code> tables to allow developers to
+<tt class="computeroutput">user_group_map</tt> that mapped users to groups. In addition, it uses
+the the <tt class="computeroutput">user_group_member_fields</tt> and
+<tt class="computeroutput">user_group_member_fields_map</tt> tables to allow developers to
 attach custom attributes to group members. In fact, these custom attributes
 were not really attached to the users, but to the fact that a user was a
 member of a particular group - a subtle but important distinction. As a
@@ -119,17 +120,17 @@
 Relation types are themselves object types that do nothing but represent
 relations. They can be used by applications that previously used user/groups
 for the same purpose, but without the extraneous, artificial
-dependencies.</p></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="object-system-requirements-system-overview"></a>System Overview</h3></div></div></div><p>The Object Model package is a combination of data model and a procedural
+dependencies.</p></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="object-system-requirements-system-overview"></a>System Overview</h3></div></div><div></div></div><p>The Object Model package is a combination of data model and a procedural
 API for manipulating application objects within an OpenACS instance. The OM
 allows developers to describe a hierarchical system of <span class="emphasis"><em>object types</em></span>
 that store metadata on application objects. The object type system supports
 subtyping with inheritance, so new object types can be defined in terms of
 existing object types.</p><p>The OM data model forms the main part of the OpenACS 4 Kernel data model. The
-other parts of the Kernel data model include:</p><div class="itemizedlist"><ul type="disc"><li><p>Parties and Groups</p></li><li><p>Permissions</p></li></ul></div><p>Each of these is documented elsewhere at length.</p></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="object-system-requirements-use-cases"></a>Use-cases and User-scenarios</h3></div></div></div><p>(Pending as of 8/27/00)</p></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="object-system-requirements-links"></a>Related Links</h3></div></div></div><div class="itemizedlist"><ul type="disc"><li><p><a href="object-system-design.html">OpenACS 4 Object Model Design</a></p></li><li><p><a href="objects.html">OpenACS Data Models and the Object System</a></p></li></ul></div></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="object-system-requirements-data-model"></a>Requirements: Data Model</h3></div></div></div><p>The data model for the object system provides support for the following
-kinds of schema patterns that are used by many existing OpenACS modules:</p><div class="variablelist"><dl><dt><span class="term"><span class="strong"><strong>10.0 Object Identification and Storage</strong></span></span></dt><dd><p>Object identification is a central mechanism in the new metadata system.
+other parts of the Kernel data model include:</p><div class="itemizedlist"><ul type="disc"><li><p>Parties and Groups</p></li><li><p>Permissions</p></li></ul></div><p>Each of these is documented elsewhere at length.</p></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="object-system-requirements-use-cases"></a>Use-cases and User-scenarios</h3></div></div><div></div></div><p>(Pending as of 8/27/00)</p></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="object-system-requirements-links"></a>Related Links</h3></div></div><div></div></div><div class="itemizedlist"><ul type="disc"><li><p><a href="object-system-design.html">OpenACS 4 Object Model Design</a></p></li><li><p><a href="objects.html">OpenACS Data Models and the Object System</a></p></li></ul></div></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="object-system-requirements-data-model"></a>Requirements: Data Model</h3></div></div><div></div></div><p>The data model for the object system provides support for the following
+kinds of schema patterns that are used by many existing OpenACS modules:</p><div class="variablelist"><dl><dt><span class="term"><span class="strong">10.0 Object Identification and Storage</span></span></dt><dd><p>Object identification is a central mechanism in the new metadata system.
 The fact that every object has a known unique identifier means that the core
 can deal with all objects in a generic way. Thus the only action required of
-an application to obtain any general service is to "hook into" the
+an application to obtain any general service is to &quot;hook into&quot; the
 object system.</p><p>In OpenACS 3.x, modules use ad-hoc means to construct unique identifiers for
 objects that they manage. Generally, these unique IDs are built from other
 IDs that happen to be in the data model. Because there is no consistency in
@@ -147,15 +148,15 @@
 application data. More importantly, object identifiers will enable developers
 to readily build and use generic services that work globally across a
 system.</p><p>The object identifiers should be subject to the following
-requirements:</p><p><span class="strong"><strong>10.10 Uniqueness</strong></span></p><p>The object ID should be unique among all the IDs in the entire OpenACS system
-in which the object lives.</p><p><span class="strong"><strong>10.20 Useful as a Reference</strong></span></p><p>Applications should be able to use the unique object ID as a reference,
-with which they can fetch any or all of the object's attributes.</p><p><span class="strong"><strong>10.30 Storable</strong></span></p><p>Object IDs should be storable in tables. e.g. you should be able to use
+requirements:</p><p><span class="strong">10.10 Uniqueness</span></p><p>The object ID should be unique among all the IDs in the entire OpenACS system
+in which the object lives.</p><p><span class="strong">10.20 Useful as a Reference</span></p><p>Applications should be able to use the unique object ID as a reference,
+with which they can fetch any or all of the object's attributes.</p><p><span class="strong">10.30 Storable</span></p><p>Object IDs should be storable in tables. e.g. you should be able to use
 them to implement mapping tables between objects, to represent
-relationships.</p><p><span class="strong"><strong>10.40 Moveable</strong></span></p><p>Objects should be mobile between databases. That is, information will
+relationships.</p><p><span class="strong">10.40 Moveable</span></p><p>Objects should be mobile between databases. That is, information will
 often need to be moved between multiple servers (development, staging, and
 production), so a mechanism for moving this data is necessary. In addition, a
 mechanism for tagging these objects in a way similar to CVS would be useful
-in determining which objects need to be synchronized.</p></dd><dt><span class="term"><span class="strong"><strong>20.0 Object Types</strong></span></span></dt><dd><p>An <span class="emphasis"><em>object type</em></span> refers to a specification of one or more
+in determining which objects need to be synchronized.</p></dd><dt><span class="term"><span class="strong">20.0 Object Types</span></span></dt><dd><p>An <span class="emphasis"><em>object type</em></span> refers to a specification of one or more
 attributes to be managed along with a piece of application data.</p><p>The object system should provide a data model for describing and
 representing object types. This data model is somewhat analogous to the
 Oracle data dictionary, which stores information about all user defined
@@ -168,33 +169,33 @@
 is meant to be a generalization of this mechanism. The data model should
 allow developers to at least do everything they used to with user/groups, but
 without its administrative hassles.</p><p>Therefore, the data model must be able to represent object types that have
-the following characteristics:</p><p><span class="strong"><strong>20.10 Type Name</strong></span></p><p>A human readable name for the object type.</p><p><span class="strong"><strong>20.20 Type Attributes</strong></span></p><p>Attributes whose values are shared by all instances of the object
-type.</p><p><span class="strong"><strong>20.30 Object Attributes</strong></span></p><p>Attributes that are specific to each particular object belonging to a
-given type.</p><p>The data model must also enforce certain constraints on object types:</p><p><span class="strong"><strong>20.40 Type Uniqueness</strong></span></p><p>Object type names must be unique.</p><p><span class="strong"><strong>20.50 Attribute Name Uniqueness</strong></span></p><p>Attribute names must be unique in the scope of a single object type and
-any of its parent types.</p></dd><dt><span class="term"><span class="strong"><strong>30.0 Type Extension</strong></span></span></dt><dd><p>The Object Model must support the definition of object types that are
+the following characteristics:</p><p><span class="strong">20.10 Type Name</span></p><p>A human readable name for the object type.</p><p><span class="strong">20.20 Type Attributes</span></p><p>Attributes whose values are shared by all instances of the object
+type.</p><p><span class="strong">20.30 Object Attributes</span></p><p>Attributes that are specific to each particular object belonging to a
+given type.</p><p>The data model must also enforce certain constraints on object types:</p><p><span class="strong">20.40 Type Uniqueness</span></p><p>Object type names must be unique.</p><p><span class="strong">20.50 Attribute Name Uniqueness</span></p><p>Attribute names must be unique in the scope of a single object type and
+any of its parent types.</p></dd><dt><span class="term"><span class="strong">30.0 Type Extension</span></span></dt><dd><p>The Object Model must support the definition of object types that are
 subtypes of existing types. A subtype inherits all the attributes of its
 parent type, and defines some attributes of its own. A critical aspect of the
 OM is parent types may be altered, and any such change must propagate to
 child subtypes.</p><p>The OM data model must enforce constraints on subtypes that are similar to
-the ones on general object types.</p><p><span class="strong"><strong>30.10 Subtype Uniqueness</strong></span></p><p>Subtype names must be unique (this parallels requirement 10.40).</p><p><span class="strong"><strong>30.20 Subtype Attribute Name Uniqueness</strong></span></p><p>Attribute names must be unique in the scope of a single object
-subtype.</p><p><span class="strong"><strong>30.30 Parent Type Prerequisite</strong></span></p><p>Subtypes must be defined in terms of parent types that, in fact, already
-exist.</p><p><span class="strong"><strong>30.40</strong></span></p><p>The extended attribute names in a subtype must not be the same as those in
-its parent type.</p></dd><dt><span class="term"><span class="strong"><strong>35.0 Methods</strong></span></span></dt><dd><p><span class="strong"><strong>35.10 Method and Type Association</strong></span></p><p>The OM data model should define a mechanism for associating procedural
+the ones on general object types.</p><p><span class="strong">30.10 Subtype Uniqueness</span></p><p>Subtype names must be unique (this parallels requirement 10.40).</p><p><span class="strong">30.20 Subtype Attribute Name Uniqueness</span></p><p>Attribute names must be unique in the scope of a single object
+subtype.</p><p><span class="strong">30.30 Parent Type Prerequisite</span></p><p>Subtypes must be defined in terms of parent types that, in fact, already
+exist.</p><p><span class="strong">30.40</span></p><p>The extended attribute names in a subtype must not be the same as those in
+its parent type.</p></dd><dt><span class="term"><span class="strong">35.0 Methods</span></span></dt><dd><p><span class="strong">35.10 Method and Type Association</span></p><p>The OM data model should define a mechanism for associating procedural
 code, called <span class="emphasis"><em>methods</em></span>, with objects of a given type. Methods are
 associated with the each object <span class="emphasis"><em>type</em></span> - not each object
-<span class="emphasis"><em>instance</em></span>.</p><p><span class="strong"><strong>35.20 Method Sharing</strong></span></p><p>All instances of a given object type should share the same set of defined
-methods for that type.</p></dd><dt><span class="term"><span class="strong"><strong>40.0 Object Attribute Value Storage</strong></span></span></dt><dd><p>In addition to information on types, the OM data model provides for the
+<span class="emphasis"><em>instance</em></span>.</p><p><span class="strong">35.20 Method Sharing</span></p><p>All instances of a given object type should share the same set of defined
+methods for that type.</p></dd><dt><span class="term"><span class="strong">40.0 Object Attribute Value Storage</span></span></dt><dd><p>In addition to information on types, the OM data model provides for the
 centralized storage of object attribute values. This facility unifies the
 many ad-hoc attribute/value tables that exist in various OpenACS 3.x data models,
 such as:</p><div class="itemizedlist"><ul type="disc"><li><p>User groups: Each instance of a group type can have custom data.</p></li><li><p>Photo DB: Users can define their own custom metadata to attach to
 photograph objects.</p></li><li><p>Ecommerce: Vendors can attach custom fields to the data model describing
-their products.</p></li></ul></div><p><span class="strong"><strong>40.10 Generic Retrieval</strong></span></p><p>Attributes should be stored so that they are retrievable in a way that is
+their products.</p></li></ul></div><p><span class="strong">40.10 Generic Retrieval</span></p><p>Attributes should be stored so that they are retrievable in a way that is
 independent of the type of the object that they belong to. That is, the only
 data needed to retrieve an attribute should be the system-wide ID of an
-object (see requirement 10.20 above) and the attribute name.</p><p><span class="strong"><strong>40.20 Inherited Attributes</strong></span></p><p>The system should allow for the automatic retrieval of inherited attribute
-values, for an object belonging to a subtype.</p><p><span class="strong"><strong>40.30. Constraints on Attributes</strong></span></p><p>The system should allow the developer to put down constraints on the
+object (see requirement 10.20 above) and the attribute name.</p><p><span class="strong">40.20 Inherited Attributes</span></p><p>The system should allow for the automatic retrieval of inherited attribute
+values, for an object belonging to a subtype.</p><p><span class="strong">40.30. Constraints on Attributes</span></p><p>The system should allow the developer to put down constraints on the
 values that an attribute may hold, for the purposes of maintaining
-application specific integrity rules.</p></dd><dt><span class="term"><span class="strong"><strong>50.0 Object Contexts</strong></span></span></dt><dd><p>In OpenACS 3.x, there was a notion of "scope" for application
+application specific integrity rules.</p></dd><dt><span class="term"><span class="strong">50.0 Object Contexts</span></span></dt><dd><p>In OpenACS 3.x, there was a notion of &quot;scope&quot; for application
 objects. An object could be belong to one of three scopes: public, group or
 user. This provided a crude way to associate objects with particular scopes
 in the system, but it was awkward to use and limited in flexibility.</p><p>The OpenACS 4 Object Model provides a generalized notion of scope that allows
@@ -203,64 +204,64 @@
 object has no explicit permissions attached to it, then it inherits
 permissions from its context.</p><p>The context data model also forms the basis of the <a href="subsites-requirements.html" title="Subsites Requirements">subsites system</a>, and is
 a basic part of the <a href="permissions-requirements.html" title="Permissions Requirements">permissions system</a>,
-described in separate documents.</p><p>The context data model should provide the following facilities:</p><p><span class="strong"><strong>50.10 Unique ID</strong></span></p><p>Every context should have a unique ID in the system.</p><p><span class="strong"><strong>50.20 Tree Structure</strong></span></p><p>The data model should support a tree structured organization of contexts.
-That is, contexts can be logically "contained" within other
+described in separate documents.</p><p>The context data model should provide the following facilities:</p><p><span class="strong">50.10 Unique ID</span></p><p>Every context should have a unique ID in the system.</p><p><span class="strong">50.20 Tree Structure</span></p><p>The data model should support a tree structured organization of contexts.
+That is, contexts can be logically &quot;contained&quot; within other
 contexts (i.e. contexts have parents) and contexts can contain other contexts
-(i.e. contexts can have children).</p><p><span class="strong"><strong>50.30 Data Model Constraints</strong></span></p><p>All objects must have a context ID. This ID must refer to an existing
+(i.e. contexts can have children).</p><p><span class="strong">50.30 Data Model Constraints</span></p><p>All objects must have a context ID. This ID must refer to an existing
 context or be NULL. The meaning of a NULL context is determined by the
-implementation.</p><p><span class="strong"><strong>Note:</strong></span></p><p>The current system interprets the NULL context as meaning the default
-"site-wide" context in some sense. I wanted to note this fact for
+implementation.</p><p><span class="strong">Note:</span></p><p>The current system interprets the NULL context as meaning the default
+&quot;site-wide&quot; context in some sense. I wanted to note this fact for
 others, but there is no need to make this a requirement of the system. I
 think it would be reasonable to have a NULL context be an error (psu
-8/24/2000).</p></dd><dt><span class="term"><span class="strong"><strong>55.0 Object Relations</strong></span></span></dt><dd><p>The data model should include a notion of pair-wise relations between
+8/24/2000).</p></dd><dt><span class="term"><span class="strong">55.0 Object Relations</span></span></dt><dd><p>The data model should include a notion of pair-wise relations between
 objects. Relations should be able to record simple facts of the form
-"object X is related to object Y by relationship R," and also be
-able to attach attributes to these facts.</p></dd></dl></div></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="object-system-requirements-api"></a>Requirements: API</h3></div></div></div><p>The API should let programmers accomplish the following actions:</p><div class="variablelist"><dl><dt><span class="term"><span class="strong"><strong>60.0 Object Type Creation</strong></span></span></dt><dd><p><span class="strong"><strong>60.10 Create a New Object Type</strong></span></p><p>The object system API should provide a procedure call that creates a new
+&quot;object X is related to object Y by relationship R,&quot; and also be
+able to attach attributes to these facts.</p></dd></dl></div></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="object-system-requirements-api"></a>Requirements: API</h3></div></div><div></div></div><p>The API should let programmers accomplish the following actions:</p><div class="variablelist"><dl><dt><span class="term"><span class="strong">60.0 Object Type Creation</span></span></dt><dd><p><span class="strong">60.10 Create a New Object Type</span></p><p>The object system API should provide a procedure call that creates a new
 object type by running the appropriate transactions on the object system data
 model. This API call is subject to the constraints laid out in the data
-model. We call this operation "instantiating" an object.</p><p><span class="strong"><strong>60.20 Create a New Object Subtype</strong></span></p><p>The object system API should provide a procedure call for creating
+model. We call this operation &quot;instantiating&quot; an object.</p><p><span class="strong">60.20 Create a New Object Subtype</span></p><p>The object system API should provide a procedure call for creating
 subtypes of a given type. Operationally, this API is the same as requirement
 60.10. Instances of subtypes automatically contain all attributes of the
 parent type in addition to all attributes of the subtype. This API is subject
-to the constraints laid out in the data model.</p><p><span class="strong"><strong>60.30 Create a New Relation Type</strong></span></p><p>There should be an API call to create a new type of object relation.
+to the constraints laid out in the data model.</p><p><span class="strong">60.30 Create a New Relation Type</span></p><p>There should be an API call to create a new type of object relation.
 Relation types can be modeled as object types. The API below for manipulating
-attributes can then be used to add attributes to relation types.</p></dd><dt><span class="term"><span class="strong"><strong>70.0 Update an Object Type</strong></span></span></dt><dd><p>The object system API must allow the programmer to modify, add, and delete
+attributes can then be used to add attributes to relation types.</p></dd><dt><span class="term"><span class="strong">70.0 Update an Object Type</span></span></dt><dd><p>The object system API must allow the programmer to modify, add, and delete
 attributes from any object type. Updates should be propagated to any child
 subtypes. This API is subject to the constraints laid out in the data
-model.</p></dd><dt><span class="term"><span class="strong"><strong>80.0 Delete an Object Type</strong></span></span></dt><dd><p>The system provides an API call for deleting an object type.</p><p><span class="strong"><strong>80.10</strong></span></p><p>Deleting an object type destroys all instances of the type. It should be
+model.</p></dd><dt><span class="term"><span class="strong">80.0 Delete an Object Type</span></span></dt><dd><p>The system provides an API call for deleting an object type.</p><p><span class="strong">80.10</span></p><p>Deleting an object type destroys all instances of the type. It should be
 an error to delete types that have dependent subtypes. This API is subject to
-the constraints laid out in the data model.</p><p><span class="strong"><strong>80.10.10</strong></span></p><p>However, the programmer should also be able to specify that all the
+the constraints laid out in the data model.</p><p><span class="strong">80.10.10</span></p><p>However, the programmer should also be able to specify that all the
 subtypes and instances of those subtypes be destroyed before destroying the
-object type. This is similar to a "delete cascade" constraint in
-SQL.</p></dd><dt><span class="term"><span class="strong"><strong>90.0 Object Instance Creation and Destruction</strong></span></span></dt><dd><p>The system must provide API calls to manage the creation and destruction
-of object instances.</p><p><span class="strong"><strong>90.10 Create an Instance of an Object Type</strong></span></p><p>The system should provide an API call for creating a new instance of a
+object type. This is similar to a &quot;delete cascade&quot; constraint in
+SQL.</p></dd><dt><span class="term"><span class="strong">90.0 Object Instance Creation and Destruction</span></span></dt><dd><p>The system must provide API calls to manage the creation and destruction
+of object instances.</p><p><span class="strong">90.10 Create an Instance of an Object Type</span></p><p>The system should provide an API call for creating a new instance of a
 given object type. The new instance should be populated with values for each
 of the attributes specified in the definition of the type. In addition, it
 should be possible to create the new instance with an optional context ID
-that refers to the default context that the object will live in.</p><p><span class="strong"><strong>90.20 Delete an Object Instance</strong></span></p><p>The OM should provide an API call for object deletion. Objects can be
+that refers to the default context that the object will live in.</p><p><span class="strong">90.20 Delete an Object Instance</span></p><p>The OM should provide an API call for object deletion. Objects can be
 deleted only when no other objects in the system refer to them. Since it
-might not be practical to provide a mechanism like "delete cascade"
+might not be practical to provide a mechanism like &quot;delete cascade&quot;
 here in a reliable way, providing such a facility in the system is
-optional.</p></dd><dt><span class="term"><span class="strong"><strong>94.0 Object Relation Creation and Destruction</strong></span></span></dt><dd><p>The system must provide API calls to manage the creation and destruction
-of object relations.</p></dd><dt><span class="term"><span class="strong"><strong>94.10 Create an Object Relation</strong></span></span></dt><dd><p>The OM must provide an API call to declare that two objects are related to
+optional.</p></dd><dt><span class="term"><span class="strong">94.0 Object Relation Creation and Destruction</span></span></dt><dd><p>The system must provide API calls to manage the creation and destruction
+of object relations.</p></dd><dt><span class="term"><span class="strong">94.10 Create an Object Relation</span></span></dt><dd><p>The OM must provide an API call to declare that two objects are related to
 each other by a given relation type. This API call should also allow
-programmers to attach attributes to this object relation.</p></dd><dt><span class="term"><span class="strong"><strong>94.20 Destroy an Object Relation</strong></span></span></dt><dd><p>There should be an API call for destroying object relations and their
-attributes.</p></dd><dt><span class="term"><span class="strong"><strong>95.10 Create and Destroy Contexts</strong></span></span></dt><dd><p>The system should provide an API to create and destroy object
-contexts.</p></dd><dt><span class="term"><span class="strong"><strong>100.10 Set Attribute Values for an Object</strong></span></span></dt><dd><p>The system should provide an API for updating the attribute values of a
-particular instance of an object type.</p></dd><dt><span class="term"><span class="strong"><strong>110.10 Get Attribute Values for an Object</strong></span></span></dt><dd><p>The system should provide an API for retrieving attribute values from a
-particular instance of an object type.</p></dd><dt><span class="term"><span class="strong"><strong>120.10 Efficiency</strong></span></span></dt><dd><p>The Object Model must support the efficient storage and retrieval of
+programmers to attach attributes to this object relation.</p></dd><dt><span class="term"><span class="strong">94.20 Destroy an Object Relation</span></span></dt><dd><p>There should be an API call for destroying object relations and their
+attributes.</p></dd><dt><span class="term"><span class="strong">95.10 Create and Destroy Contexts</span></span></dt><dd><p>The system should provide an API to create and destroy object
+contexts.</p></dd><dt><span class="term"><span class="strong">100.10 Set Attribute Values for an Object</span></span></dt><dd><p>The system should provide an API for updating the attribute values of a
+particular instance of an object type.</p></dd><dt><span class="term"><span class="strong">110.10 Get Attribute Values for an Object</span></span></dt><dd><p>The system should provide an API for retrieving attribute values from a
+particular instance of an object type.</p></dd><dt><span class="term"><span class="strong">120.10 Efficiency</span></span></dt><dd><p>The Object Model must support the efficient storage and retrieval of
 object attributes. Since the OM is intended to form the core of many general
 services in the OpenACS, and these services will likely make extensive use of the
 OM tables, queries on these tables must be fast. The major problem here seems
 to be supporting subtyping and inheritance in a way that does not severely
-impact query performance.</p></dd><dt><span class="term"><span class="strong"><strong>130.10 Ease of Use</strong></span></span></dt><dd><p>Most OpenACS packages will be expected to use the Object Model in one way or
+impact query performance.</p></dd><dt><span class="term"><span class="strong">130.10 Ease of Use</span></span></dt><dd><p>Most OpenACS packages will be expected to use the Object Model in one way or
 another. Since it is important that the largest audience of developers
 possible adopts and uses the OM, it must be easy to incorporate into
 applications, and it must not impose undue requirements on an
-application's data model. In other words, it should be easy to "hook
-into" the object model, and that ability should not have a major impact
-on the application data model.</p><p><span class="strong"><strong>Note:</strong></span> Is the API the only way to obtain values? How does
-this integrate with application level SQL queries?</p></dd></dl></div></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="object-system-requirements-history"></a>Revision History</h3></div></div></div><div class="informaltable"><table cellspacing="0" border="1"><colgroup><col><col><col><col></colgroup><tbody><tr><td><span class="strong"><strong>Document Revision #</strong></span></td><td><span class="strong"><strong>Action Taken, Notes</strong></span></td><td><span class="strong"><strong>When?</strong></span></td><td><span class="strong"><strong>By Whom?</strong></span></td></tr><tr><td>0.1</td><td>Creation</td><td>08/10/2000</td><td>Bryan Quinn</td></tr><tr><td>0.2</td><td>Major re-write</td><td>08/11/2000</td><td>Pete Su</td></tr><tr><td>0.3</td><td>Draft completed after initial reviews</td><td>08/22/2000</td><td>Pete Su</td></tr><tr><td>0.4</td><td>Edited, updated to conform to requirements template, pending freeze</td><td>08/23/2000</td><td>Kai Wu</td></tr><tr><td> </td><td>Final edits before freeze</td><td>08/24/2000</td><td>Pete Su</td></tr><tr><td>0.5</td><td>Edited for consistency</td><td>08/27/2000</td><td>Kai Wu</td></tr><tr><td>0.6</td><td>Put Object ID stuff first, because it makes more sense</td><td>08/28/2000</td><td>Pete Su</td></tr><tr><td>0.7</td><td>Added requirement that knowledge-level objects must be moveable between
+application's data model. In other words, it should be easy to &quot;hook
+into&quot; the object model, and that ability should not have a major impact
+on the application data model.</p><p><span class="strong">Note:</span> Is the API the only way to obtain values? How does
+this integrate with application level SQL queries?</p></dd></dl></div></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="object-system-requirements-history"></a>Revision History</h3></div></div><div></div></div><div class="informaltable"><table cellspacing="0" border="1"><colgroup><col><col><col><col></colgroup><tbody><tr><td><span class="strong">Document Revision #</span></td><td><span class="strong">Action Taken, Notes</span></td><td><span class="strong">When?</span></td><td><span class="strong">By Whom?</span></td></tr><tr><td>0.1</td><td>Creation</td><td>08/10/2000</td><td>Bryan Quinn</td></tr><tr><td>0.2</td><td>Major re-write</td><td>08/11/2000</td><td>Pete Su</td></tr><tr><td>0.3</td><td>Draft completed after initial reviews</td><td>08/22/2000</td><td>Pete Su</td></tr><tr><td>0.4</td><td>Edited, updated to conform to requirements template, pending freeze</td><td>08/23/2000</td><td>Kai Wu</td></tr><tr><td>�</td><td>Final edits before freeze</td><td>08/24/2000</td><td>Pete Su</td></tr><tr><td>0.5</td><td>Edited for consistency</td><td>08/27/2000</td><td>Kai Wu</td></tr><tr><td>0.6</td><td>Put Object ID stuff first, because it makes more sense</td><td>08/28/2000</td><td>Pete Su</td></tr><tr><td>0.7</td><td>Added requirement that knowledge-level objects must be moveable between
 databases.</td><td>08/29/2000</td><td>Richard Li</td></tr><tr><td>0.8</td><td>Rewrote intro to match language and concepts in the design document. Also
 cleaned up usage a bit in the requirements section. Added short vague
 requirements on relation types.</td><td>09/06/2000</td><td>Pete Su</td></tr><tr><td>0.9</td><td>Edited for ACS 4 Beta release.</td><td>09/30/2000</td><td>Kai Wu</td></tr></tbody></table></div></div></div><div class="navfooter"><hr><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="kernel-overview.html">Prev</a> </td><td width="20%" align="center"><a accesskey="h" href="index.html">Home</a></td><td width="40%" align="right"> <a accesskey="n" href="object-system-design.html">Next</a></td></tr><tr><td width="40%" align="left">Overview </td><td width="20%" align="center"><a accesskey="u" href="kernel-doc.html">Up</a></td><td width="40%" align="right"> Object Model Design</td></tr></table><hr><address><a href="mailto:docs@openacs.org">docs@openacs.org</a></address></div><a name="comments"></a><center><a href="http://openacs.org/doc/current/object-system-requirements.html#comments">View comments on this page at openacs.org</a></center></body></html>
Index: openacs-4/packages/acs-core-docs/www/objects.html
===================================================================
RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/objects.html,v
diff -u -r1.45 -r1.45.4.1
--- openacs-4/packages/acs-core-docs/www/objects.html	17 Jul 2006 05:38:31 -0000	1.45
+++ openacs-4/packages/acs-core-docs/www/objects.html	3 Feb 2008 12:07:40 -0000	1.45.4.1
@@ -1,8 +1,9 @@
-<html><head><meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"><title>OpenACS Data Models and the Object System</title><meta name="generator" content="DocBook XSL Stylesheets V1.70.1"><link rel="home" href="index.html" title="OpenACS Core Documentation"><link rel="up" href="dev-guide.html" title="Chapter�11.�Development Reference"><link rel="previous" href="packages.html" title="OpenACS Packages"><link rel="next" href="request-processor.html" title="The Request Processor"><link rel="stylesheet" href="openacs.css" type="text/css"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><a href="http://openacs.org"><img src="/doc/images/alex.jpg" border="0" alt="Alex logo"></a><table width="100%" summary="Navigation header" border="0"><tr><td width="20%" align="left"><a accesskey="p" href="packages.html">Prev</a> </td><th width="60%" align="center">Chapter�11.�Development Reference</th><td width="20%" align="right"> <a accesskey="n" href="request-processor.html">Next</a></td></tr></table><hr></div><div class="sect1" lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="objects"></a>OpenACS Data Models and the Object System</h2></div></div></div><div class="authorblurb"><p>By Pete Su</p>
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html><head><meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"><title>OpenACS Data Models and the Object System</title><meta name="generator" content="DocBook XSL Stylesheets V1.60.1"><link rel="home" href="index.html" title="OpenACS Core Documentation"><link rel="up" href="dev-guide.html" title="Chapter�11.�Development Reference"><link rel="previous" href="packages.html" title="OpenACS Packages"><link rel="next" href="request-processor.html" title="The Request Processor"><link rel="stylesheet" href="openacs.css" type="text/css"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><a href="http://openacs.org"><img src="/doc/images/alex.jpg" border="0" alt="Alex logo"></a><table width="100%" summary="Navigation header" border="0"><tr><td width="20%" align="left"><a accesskey="p" href="packages.html">Prev</a> </td><th width="60%" align="center">Chapter�11.�Development Reference</th><td width="20%" align="right"> <a accesskey="n" href="request-processor.html">Next</a></td></tr></table><hr></div><div class="sect1" lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="objects"></a>OpenACS Data Models and the Object System</h2></div></div><div></div></div><div class="authorblurb"><p>By Pete Su</p>
           OpenACS docs are written by the named authors, and may be edited
           by OpenACS documentation staff.
-        </div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="objects-overview"></a>Overview</h3></div></div></div><p>
-Developing data models in OpenACS 5.2.3rc1 is much like developing data models
+        </div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="objects-overview"></a>Overview</h3></div></div><div></div></div><p>
+Developing data models in OpenACS 5.4.0 is much like developing data models
 for OpenACS 3, save for the implementation.  As usual, you need to examine
 how to model the information that the application must store and
 manipulate, and define a suitable set of SQL tables.  In our Notes
@@ -27,12 +28,12 @@
 </p><div class="itemizedlist"><ul type="opencircle"><li style="list-style-type: circle"><p>Define access control policies on notes.</p></li><li style="list-style-type: circle"><p>Attach user comments on notes.</p></li><li style="list-style-type: circle"><p>Allow users to define custom fields to store on their notes.</p></li><li style="list-style-type: circle"><p>Automatically generate input forms or output displays for notes.</p></li><li style="list-style-type: circle"><p>Allow other applications to use notes in ways we don't know of yet.</p></li></ul></div><p>
 In OpenACS, the key to enabling these types of services on your
 application data is to take advantage of the Object System.  The first
-question, then, is "Just what are objects, and what do
-you use them for anyway?".  The short answer: objects are anything
+question, then, is &quot;Just what are objects, and what do
+you use them for anyway?&quot;.  The short answer: objects are anything
 represented in the application's data model that will need to be
 managed by any central service in OpenACS, or that may be reusable in
 the context of future applications. Every object in the system is
-represented using a row in the <code class="computeroutput">acs_objects</code> table. This
+represented using a row in the <tt class="computeroutput">acs_objects</tt> table. This
 table defines all the standard attributes that are stored on every
 object, including its system-wide unique ID, object type, and some
 generic auditing columns.
@@ -44,19 +45,19 @@
 </p><div class="itemizedlist"><ul type="disc"><li><p>The <a href="permissions.html">Permissions System</a> lets you 
       track who is allowed to do what to the rows
       in an application table, and gives you an easy way to enforce
-      this from Tcl.</p></li><li><p>Every object has an attribute called <code class="computeroutput">context_id</code>
+      this from Tcl.</p></li><li><p>Every object has an attribute called <tt class="computeroutput">context_id</tt>
       that provides a way to trivially specify both the default
-      permissions for an object, and the intended "scope" of an
-      object. Just set the <code class="computeroutput">context_id</code> to the controlling
+      permissions for an object, and the intended &quot;scope&quot; of an
+      object. Just set the <tt class="computeroutput">context_id</tt> to the controlling
       object and forget about it.</p></li><li><p>And most importantly, any future object-level service - from
       a general-comments replacement to personalized ranking - will
-      become available to your application "for free."</p></li></ul></div><p>
-</p></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="objects-how-to-use"></a>How to Use Objects</h3></div></div></div><p>
+      become available to your application &quot;for free.&quot;</p></li></ul></div><p>
+</p></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="objects-how-to-use"></a>How to Use Objects</h3></div></div><div></div></div><p>
 Using ACS objects is straightforward: all that's required are a few
 extra steps in the design of your application data model. 
 </p><p>
 In order to hook our Notes application into the object system, we
-make some calls to use our <code class="computeroutput">notes</code> table as the basis for a
+make some calls to use our <tt class="computeroutput">notes</tt> table as the basis for a
 new <span class="emphasis"><em>object type</em></span>. Object types are analogous to classes in
 programming languages such as C++ and Java. In Java, a
 class defines a set of attributes that store data and a set of methods
@@ -65,21 +66,21 @@
 define the programming interface to the data model.
 </p><p>
 The object type itself is described using data in the
-<code class="computeroutput">acs_object_types</code> and
-<code class="computeroutput">acs_attributes</code> tables, which play a role
+<tt class="computeroutput">acs_object_types</tt> and
+<tt class="computeroutput">acs_attributes</tt> tables, which play a role
 similar to the data dictionary in Oracle. As in Java, object types can
 inherit attributes from a parent type, so the type system forms a
 hierarchy. Unlike Java, Oracle does not support this inheritance
 transparently, so we have to make sure we add our own bookkeeping code to
 keep everything consistent. Below you'll find the code needed to describe a
-new object type called <code class="computeroutput">notes</code> in your
+new object type called <tt class="computeroutput">notes</tt> in your
 system.
 </p><p>
 Fire up your text editor and open the
-<code class="computeroutput">ROOT/packages/notes/sql/oracle/notes-create.sql</code> (<code class="computeroutput">ROOT/packages/notes/sql/postgresql/notes-create.sql</code> for the PG version) file created
+<tt class="computeroutput">ROOT/packages/notes/sql/oracle/notes-create.sql</tt> (<tt class="computeroutput">ROOT/packages/notes/sql/postgresql/notes-create.sql</tt> for the PG version) file created
 when we <a href="packages.html" title="OpenACS Packages">created the package</a>.  Then, do the following:
-</p><div class="sect3" lang="en"><div class="titlepage"><div><div><h4 class="title"><a name="id1032202"></a>Describe the new type to the type system</h4></div></div></div><p>
-First, add an entry to the <code class="computeroutput">acs_object_types</code> table with the following PL/SQL call:
+</p><div class="sect3" lang="en"><div class="titlepage"><div><div><h4 class="title"><a name="id3051076"></a>Describe the new type to the type system</h4></div></div><div></div></div><p>
+First, add an entry to the <tt class="computeroutput">acs_object_types</tt> table with the following PL/SQL call:
 </p><pre class="programlisting">
 begin  
   acs_object_type.create_type ( 
@@ -95,18 +96,18 @@
 show errors;
 </pre><p>
 This PL/SQL call tells the system that we would like to use the table
-<code class="computeroutput">NOTES</code> as the basis for a new object type called
-<code class="computeroutput">note</code>. This type is a subtype of the 
-<code class="computeroutput">acs_object</code> type, which means that we want to inherit all
+<tt class="computeroutput">NOTES</tt> as the basis for a new object type called
+<tt class="computeroutput">note</tt>. This type is a subtype of the 
+<tt class="computeroutput">acs_object</tt> type, which means that we want to inherit all
 of the basic attributes of all ACS objects. As mentioned, it will take
 some work on our part to make this happen, since Oracle can't do it
 automatically.  In general, most basic applications will define types
-that are simple subtypes of <code class="computeroutput">acs_object</code>.
+that are simple subtypes of <tt class="computeroutput">acs_object</tt>.
 </p><p>
-Add entries to the <code class="computeroutput">acs_attributes</code> table to describe
+Add entries to the <tt class="computeroutput">acs_attributes</tt> table to describe
 the data attributes of the new type. This data can eventually be used
 to do things like automatically generate user interfaces to manipulate
-the <code class="computeroutput">notes</code> table, though that functionality isn't yet
+the <tt class="computeroutput">notes</tt> table, though that functionality isn't yet
 available.
 </p><pre class="programlisting">
 declare 
@@ -132,17 +133,17 @@
 show errors; 
 </pre><p>
 We can stop here and not bother to register the usual OpenACS 3.x
-attributes of <code class="computeroutput">creation_user</code>, <code class="computeroutput">creation_date</code>
-and <code class="computeroutput">last_modified</code>, since the object type
-<code class="computeroutput">acs_object</code> already defines these attributes. Again,
-because the new type <code class="computeroutput">note</code> is a subtype of
-<code class="computeroutput">acs_object</code>, it will inherit these attributes, so there is
+attributes of <tt class="computeroutput">creation_user</tt>, <tt class="computeroutput">creation_date</tt>
+and <tt class="computeroutput">last_modified</tt>, since the object type
+<tt class="computeroutput">acs_object</tt> already defines these attributes. Again,
+because the new type <tt class="computeroutput">note</tt> is a subtype of
+<tt class="computeroutput">acs_object</tt>, it will inherit these attributes, so there is
 no need for us to define them.
-</p></div><div class="sect3" lang="en"><div class="titlepage"><div><div><h4 class="title"><a name="id1117589"></a>Define a table in which to store your objects</h4></div></div></div><p>
+</p></div><div class="sect3" lang="en"><div class="titlepage"><div><div><h4 class="title"><a name="id2913632"></a>Define a table in which to store your objects</h4></div></div><div></div></div><p>
 The next thing we do is make a small modification to the data model to
-reflect the fact that each row in the <code class="computeroutput">notes</code> table
+reflect the fact that each row in the <tt class="computeroutput">notes</tt> table
 represents something that is not only an object of type
-<code class="computeroutput">note</code>, but also an <code class="computeroutput">acs_object</code>. The new table
+<tt class="computeroutput">note</tt>, but also an <tt class="computeroutput">acs_object</tt>. The new table
 definition looks like this:
 </p><pre class="programlisting">
 create table notes (
@@ -152,18 +153,18 @@
     body       varchar(1024)
 )
 </pre><p>
-The usual <code class="computeroutput">creation_date</code> and
-<code class="computeroutput">modified_date</code> columns are absent since they already exist
-in <code class="computeroutput">acs_objects</code>.  Also, note the constraint we have added
-to reference the <code class="computeroutput">acs_objects</code> table, which makes clear
-that since <code class="computeroutput">note</code> is a subtype of <code class="computeroutput">acs_object</code>,
+The usual <tt class="computeroutput">creation_date</tt> and
+<tt class="computeroutput">modified_date</tt> columns are absent since they already exist
+in <tt class="computeroutput">acs_objects</tt>.  Also, note the constraint we have added
+to reference the <tt class="computeroutput">acs_objects</tt> table, which makes clear
+that since <tt class="computeroutput">note</tt> is a subtype of <tt class="computeroutput">acs_object</tt>,
 every row in the notes table must have a corresponding row in the
-<code class="computeroutput">acs_objects</code> table. This is the fundamental means by which
+<tt class="computeroutput">acs_objects</tt> table. This is the fundamental means by which
 we model inheritance; it guarantees that any services that
-use the <code class="computeroutput">acs_objects</code> table to find objects will
+use the <tt class="computeroutput">acs_objects</tt> table to find objects will
 transparently find any objects that are instances of any subtype of
-<code class="computeroutput">acs_objects</code>.
-</p></div><div class="sect3" lang="en"><div class="titlepage"><div><div><h4 class="title"><a name="id963961"></a>Define a package for type specific procedures</h4></div></div></div><p>
+<tt class="computeroutput">acs_objects</tt>.
+</p></div><div class="sect3" lang="en"><div class="titlepage"><div><div><h4 class="title"><a name="id3052128"></a>Define a package for type specific procedures</h4></div></div><div></div></div><p>
 The next step is to define a PL/SQL package for your new type, and
 write some basic procedures to create and delete objects. Here is a
 package definition for our new type:
@@ -195,30 +196,30 @@
 calls, since we haven't mentioned them before.  These parameters are
 needed to fill out information that will be stored about the object
 that's not stored directly in the table you defined. The OpenACS Object
-System defines these attributes on the type <code class="computeroutput">acs_object</code>
+System defines these attributes on the type <tt class="computeroutput">acs_object</tt>
 since all objects should have these attributes. Internally, there are
 tables that store this information for you. Most of the data is pretty
 self-explanatory and reflects attributes that existed in the earlier
-OpenACS 3.x data models, with the exception of the <code class="computeroutput">context_id</code>
+OpenACS 3.x data models, with the exception of the <tt class="computeroutput">context_id</tt>
 attribute.
 </p><p>
-The <code class="computeroutput">context_id</code> attribute stores the ID of an object that
+The <tt class="computeroutput">context_id</tt> attribute stores the ID of an object that
 represents the default security domain to which the object belongs. It
 is used by the <a href="permissions.html" title="Groups, Context, Permissions">permissions</a> system in
 this way: if no permissions are explicitly attached to the object,
 then the object inherits its permissions from the context. For
 example, if I had told you how to use the <a href="permissions.html" title="Groups, Context, Permissions">permissions</a> system to specify that an
-object OBJ was "read only", then any other object that used OBJ as its
-context would also be "read only" by default. We'll talk about this more
+object OBJ was &quot;read only&quot;, then any other object that used OBJ as its
+context would also be &quot;read only&quot; by default. We'll talk about this more
 later.
-</p></div><div class="sect3" lang="en"><div class="titlepage"><div><div><h4 class="title"><a name="id1171792"></a>Define a package body for type specific procedures</h4></div></div></div><p>
+</p></div><div class="sect3" lang="en"><div class="titlepage"><div><div><h4 class="title"><a name="id3032508"></a>Define a package body for type specific procedures</h4></div></div><div></div></div><p>
 The PL/SQL package body contains the implementations of the procedures
 defined above. The only subtle thing going on here is that we must use
-<code class="computeroutput">acs_object.new</code> to insert a row into
-<code class="computeroutput">acs_objects</code>, before inserting a row into the
-<code class="computeroutput">notes</code>. Similarly, when we delete a row from
-<code class="computeroutput">note</code>, we have to be sure to delete the corresponding
-<code class="computeroutput">acs_object</code> row.
+<tt class="computeroutput">acs_object.new</tt> to insert a row into
+<tt class="computeroutput">acs_objects</tt>, before inserting a row into the
+<tt class="computeroutput">notes</tt>. Similarly, when we delete a row from
+<tt class="computeroutput">note</tt>, we have to be sure to delete the corresponding
+<tt class="computeroutput">acs_object</tt> row.
 </p><pre class="programlisting">
 create or replace package body note 
 as 
@@ -271,14 +272,14 @@
 / 
 show errors; 
 </pre><p>
-That's pretty much it! As long as you use the <code class="computeroutput">note.new</code>
-function to create notes, and the <code class="computeroutput">note.delete</code> function to
+That's pretty much it! As long as you use the <tt class="computeroutput">note.new</tt>
+function to create notes, and the <tt class="computeroutput">note.delete</tt> function to
 delete them, you'll be assured that the relationship each
-<code class="computeroutput">note</code> has with its corresponding <code class="computeroutput">acs_object</code>
+<tt class="computeroutput">note</tt> has with its corresponding <tt class="computeroutput">acs_object</tt>
 is preserved.
 </p><p>
 The last thing to do is to make a file
-<code class="computeroutput">ROOT/packages/notes/sql/notes-drop.sql</code> so it's easy to
+<tt class="computeroutput">ROOT/packages/notes/sql/notes-drop.sql</tt> so it's easy to
 drop the data model when, say, you're testing:
 </p><pre class="programlisting">
 begin 
@@ -289,17 +290,17 @@
  
 drop package note; 
 drop table notes; 
-</pre></div></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="objects-when-to-use-objects"></a>When to Use Objects</h3></div></div></div><p>
+</pre></div></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="objects-when-to-use-objects"></a>When to Use Objects</h3></div></div><div></div></div><p>
 While it is hard to give general design advice without
 knowing anything about a particular application, you should follow the
 following rule of thumb when deciding when to hook part of your data
 model to the object system:
 </p><p>
 Anything in your data model that needs to be available to general OpenACS
 services such as user comments, permissions, and so on should be a
-subtype of <code class="computeroutput">acs_object</code>. In addition, if you want your data
+subtype of <tt class="computeroutput">acs_object</tt>. In addition, if you want your data
 model to take advantage of attributes that exist in some object type
-that is a subtype of <code class="computeroutput">acs_object</code>, then you should use the
+that is a subtype of <tt class="computeroutput">acs_object</tt>, then you should use the
 object system.
 </p><p>
 For example, for most applications, you will want to use objects to
@@ -309,34 +310,34 @@
 kind of design decision is mostly made on an
 application-by-application basis, but this is a good baseline from
 which to start.
-</p></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="objects-design-guidance"></a>Design Guidance</h3></div></div></div><p>
+</p></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="objects-design-guidance"></a>Design Guidance</h3></div></div><div></div></div><p>
 In this section we cover some overall guidelines for designing data
 models that are meant to be integrated with the OpenACS object
 system. 
 </p><p>
-There are two basic rules you should follow when designing OpenACS 5.2.3rc1 data
+There are two basic rules you should follow when designing OpenACS 5.4.0 data
 models:
 
 
 </p><div class="orderedlist"><ol type="1"><li><p>
-Never utilize fields in the <code class="computeroutput">acs_objects</code> table in
+Never utilize fields in the <tt class="computeroutput">acs_objects</tt> table in
 application specific ways. That is, never assign any
 application-specific semantics to this data.  In the notes
-application, we use the <code class="computeroutput">creation_date</code> and
-<code class="computeroutput">last_modified</code> fields, but this is OK since we do not
+application, we use the <tt class="computeroutput">creation_date</tt> and
+<tt class="computeroutput">last_modified</tt> fields, but this is OK since we do not
 assign any application-specific meaning to these fields.
 </p></li><li><p>
 In particular, never assign any application specific semantics to the
-<code class="computeroutput">context_id</code> attribute of an object. This field is used for
+<tt class="computeroutput">context_id</tt> attribute of an object. This field is used for
 a very specific purpose by the permissions system, and using this
 field in <span class="emphasis"><em>any other way whatsoever</em></span> is guaranteed to make your
 application act strangely.
 </p><p>
 As we'll see later, the Notes example will point each note object's
-<code class="computeroutput">context_id</code> to the package instance in which the note was
+<tt class="computeroutput">context_id</tt> to the package instance in which the note was
 created. The idea will be that in a real site, the administrator would
 create one package instance for every separate set of Notes (say, one
-per user). The instance would "own" all of the notes that it created,
+per user). The instance would &quot;own&quot; all of the notes that it created,
 and the administrator would be able to use the package instance as
 the basis for access control, which is convenient.
 </p></li></ol></div><p>
@@ -354,43 +355,43 @@
 that the data model is trying to support.
 </p><p>
 Another less important reason for these two rules is to not introduce
-any joins against the <code class="computeroutput">acs_objects</code> table in SQL queries in
+any joins against the <tt class="computeroutput">acs_objects</tt> table in SQL queries in
 your application that you do not absolutely need. 
 </p><p>
 In the Notes example,  the result of applying these rules is that we
-are careful to define our own attribute for <code class="computeroutput">owner_id</code>
-rather than overloading <code class="computeroutput">creation_user</code> from the objects
-table. But, since we will probably use <code class="computeroutput">creation_date</code> and
+are careful to define our own attribute for <tt class="computeroutput">owner_id</tt>
+rather than overloading <tt class="computeroutput">creation_user</tt> from the objects
+table. But, since we will probably use <tt class="computeroutput">creation_date</tt> and
 so on for their intended purposes, we don't bother to define our own
 attributes to store that data again. This will entail joins with
-<code class="computeroutput">acs_objects</code> but that's OK because it makes the overall
+<tt class="computeroutput">acs_objects</tt> but that's OK because it makes the overall
 data model cleaner. The real lesson is that deciding exactly how and
 when to use inherited attributes is fairly straightforward, but
 requires a good amount of thought at design time even for simple
 applications.
-</p></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="objects-summary"></a>Summary</h3></div></div></div><p>
-Hooking into the OpenACS 5.2.3rc1 object system brings the application developer
+</p></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="objects-summary"></a>Summary</h3></div></div><div></div></div><p>
+Hooking into the OpenACS 5.4.0 object system brings the application developer
 numerous benefits, and doing it involves only four easy steps:
 
 
 </p><div class="itemizedlist"><ul type="opencircle"><li style="list-style-type: circle"><p>
 Describe the a new object type to the system. Most new application
-types will be subtypes of the built-in type <code class="computeroutput">acs_object</code>.
+types will be subtypes of the built-in type <tt class="computeroutput">acs_object</tt>.
 </p></li><li style="list-style-type: circle"><p>
 Define a table to store application object data.
 </p></li><li style="list-style-type: circle"><p>
 Define a PL/SQL package to store procedures related to the new
-type. You have to define at least a function called <code class="computeroutput">new</code>
+type. You have to define at least a function called <tt class="computeroutput">new</tt>
 to create new application objects and a procedure called
-<code class="computeroutput">delete</code> to delete them.
+<tt class="computeroutput">delete</tt> to delete them.
 </p></li><li style="list-style-type: circle"><p>
 Define a package body that contains the implementations of the PL/SQL
 procedures defined above.
 </p></li><li style="list-style-type: circle"><p>
 Try not to write queries in your application that join against
-<code class="computeroutput">acs_objects</code>. This means you should never use the fields
-in <code class="computeroutput">acs_objects</code> for application-specific purposes. This is
-especially true for the <code class="computeroutput">context_id</code> field.
+<tt class="computeroutput">acs_objects</tt>. This means you should never use the fields
+in <tt class="computeroutput">acs_objects</tt> for application-specific purposes. This is
+especially true for the <tt class="computeroutput">context_id</tt> field.
 </p></li></ul></div><p>
 
 </p><div class="cvstag">($Id$)</div></div></div><div class="navfooter"><hr><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="packages.html">Prev</a> </td><td width="20%" align="center"><a accesskey="h" href="index.html">Home</a></td><td width="40%" align="right"> <a accesskey="n" href="request-processor.html">Next</a></td></tr><tr><td width="40%" align="left">OpenACS Packages </td><td width="20%" align="center"><a accesskey="u" href="dev-guide.html">Up</a></td><td width="40%" align="right"> The Request Processor</td></tr></table><hr><address><a href="mailto:docs@openacs.org">docs@openacs.org</a></address></div><a name="comments"></a><center><a href="http://openacs.org/doc/current/objects.html#comments">View comments on this page at openacs.org</a></center></body></html>
Index: openacs-4/packages/acs-core-docs/www/openacs-overview.html
===================================================================
RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/openacs-overview.html,v
diff -u -r1.23 -r1.23.4.1
--- openacs-4/packages/acs-core-docs/www/openacs-overview.html	17 Jul 2006 05:38:31 -0000	1.23
+++ openacs-4/packages/acs-core-docs/www/openacs-overview.html	3 Feb 2008 12:07:40 -0000	1.23.4.1
@@ -1,4 +1,5 @@
-<html><head><meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"><title>Overview</title><meta name="generator" content="DocBook XSL Stylesheets V1.70.1"><link rel="home" href="index.html" title="OpenACS Core Documentation"><link rel="up" href="general-documents.html" title="Chapter�1.�High level information: What is OpenACS?"><link rel="previous" href="general-documents.html" title="Chapter�1.�High level information: What is OpenACS?"><link rel="next" href="release-notes.html" title="OpenACS Release Notes"><link rel="stylesheet" href="openacs.css" type="text/css"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><a href="http://openacs.org"><img src="/doc/images/alex.jpg" border="0" alt="Alex logo"></a><table width="100%" summary="Navigation header" border="0"><tr><td width="20%" align="left"><a accesskey="p" href="general-documents.html">Prev</a> </td><th width="60%" align="center">Chapter�1.�High level information: What is OpenACS?</th><td width="20%" align="right"> <a accesskey="n" href="release-notes.html">Next</a></td></tr></table><hr></div><div class="sect1" lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="openacs-overview"></a>Overview</h2></div></div></div><p>
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html><head><meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"><title>Overview</title><meta name="generator" content="DocBook XSL Stylesheets V1.60.1"><link rel="home" href="index.html" title="OpenACS Core Documentation"><link rel="up" href="general-documents.html" title="Chapter�1.�High level information: What is OpenACS?"><link rel="previous" href="general-documents.html" title="Chapter�1.�High level information: What is OpenACS?"><link rel="next" href="release-notes.html" title="OpenACS Release Notes"><link rel="stylesheet" href="openacs.css" type="text/css"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><a href="http://openacs.org"><img src="/doc/images/alex.jpg" border="0" alt="Alex logo"></a><table width="100%" summary="Navigation header" border="0"><tr><td width="20%" align="left"><a accesskey="p" href="general-documents.html">Prev</a> </td><th width="60%" align="center">Chapter�1.�High level information: What is OpenACS?</th><td width="20%" align="right"> <a accesskey="n" href="release-notes.html">Next</a></td></tr></table><hr></div><div class="sect1" lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="openacs-overview"></a>Overview</h2></div></div><div></div></div><p>
           OpenACS (Open Architecture Community System) is an
           advanced toolkit for building scalable, community-oriented
           web applications.  If you're thinking of building an
Index: openacs-4/packages/acs-core-docs/www/openacs-unpack.html
===================================================================
RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/openacs-unpack.html,v
diff -u -r1.22 -r1.22.4.1
--- openacs-4/packages/acs-core-docs/www/openacs-unpack.html	17 Jul 2006 05:38:31 -0000	1.22
+++ openacs-4/packages/acs-core-docs/www/openacs-unpack.html	3 Feb 2008 12:07:40 -0000	1.22.4.1
@@ -1,17 +1,18 @@
-<html><head><meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"><title>Unpack the OpenACS tarball</title><meta name="generator" content="DocBook XSL Stylesheets V1.70.1"><link rel="home" href="index.html" title="OpenACS Core Documentation"><link rel="up" href="install-more-software.html" title="Appendix�B.�Install additional supporting software"><link rel="previous" href="install-more-software.html" title="Appendix�B.�Install additional supporting software"><link rel="next" href="install-cvs.html" title="Initialize CVS (OPTIONAL)"><link rel="stylesheet" href="openacs.css" type="text/css"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><a href="http://openacs.org"><img src="/doc/images/alex.jpg" border="0" alt="Alex logo"></a><table width="100%" summary="Navigation header" border="0"><tr><td width="20%" align="left"><a accesskey="p" href="install-more-software.html">Prev</a> </td><th width="60%" align="center">Appendix�B.�Install additional supporting software</th><td width="20%" align="right"> <a accesskey="n" href="install-cvs.html">Next</a></td></tr></table><hr></div><div class="sect1" lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="openacs-unpack"></a>Unpack the OpenACS tarball</h2></div></div></div><p>The OpenACS tarball contains sample configuration files
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html><head><meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"><title>Unpack the OpenACS tarball</title><meta name="generator" content="DocBook XSL Stylesheets V1.60.1"><link rel="home" href="index.html" title="OpenACS Core Documentation"><link rel="up" href="install-more-software.html" title="Appendix�B.�Install additional supporting software"><link rel="previous" href="install-more-software.html" title="Appendix�B.�Install additional supporting software"><link rel="next" href="install-cvs.html" title="Initialize CVS (OPTIONAL)"><link rel="stylesheet" href="openacs.css" type="text/css"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><a href="http://openacs.org"><img src="/doc/images/alex.jpg" border="0" alt="Alex logo"></a><table width="100%" summary="Navigation header" border="0"><tr><td width="20%" align="left"><a accesskey="p" href="install-more-software.html">Prev</a> </td><th width="60%" align="center">Appendix�B.�Install additional supporting software</th><td width="20%" align="right"> <a accesskey="n" href="install-cvs.html">Next</a></td></tr></table><hr></div><div class="sect1" lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="openacs-unpack"></a>Unpack the OpenACS tarball</h2></div></div><div></div></div><p>The OpenACS tarball contains sample configuration files
       for some of the packages listed below.  In order to access those
-      files, unpack the tarball now.</p><pre class="screen">[root root]# <strong class="userinput"><code>cd /tmp</code></strong>
-[root tmp]# <strong class="userinput"><code>tar xzf openacs-5.2.3rc1.tgz</code></strong>
+      files, unpack the tarball now.</p><pre class="screen">[root root]# <b class="userinput"><tt>cd /tmp</tt></b>
+[root tmp]# <b class="userinput"><tt>tar xzf openacs-5.4.0.tgz</tt></b>
 <span class="action"><span class="action">cd /tmp
-tar xzf openacs-5.2.3rc1.tgz</span></span></pre><p>If you are installing from a different method and just need the configuration files, you can instead get them from CVS:</p><pre class="screen">[root root]# <strong class="userinput"><code>cd /tmp</code></strong>
-[root tmp]# <strong class="userinput"><code>cvs -d :pserver:anonymous@cvs.openacs.org:/cvsroot co openacs-4/packages/acs-core-docs/www/files/</code></strong>
+tar xzf openacs-5.4.0.tgz</span></span></pre><p>If you are installing from a different method and just need the configuration files, you can instead get them from CVS:</p><pre class="screen">[root root]# <b class="userinput"><tt>cd /tmp</tt></b>
+[root tmp]# <b class="userinput"><tt>cvs -d :pserver:anonymous@cvs.openacs.org:/cvsroot co openacs-4/packages/acs-core-docs/www/files/</tt></b>
 cvs checkout: warning: failed to open /root/.cvspass for reading: No such file or directory
 cvs server: Updating openacs-4/packages/acs-core-docs/www/files
 U openacs-4/packages/acs-core-docs/www/files/README.TXT
 <span class="emphasis"><em>(many lines omitted)</em></span>
 U openacs-4/packages/acs-core-docs/www/files/template-ini.ini
 U openacs-4/packages/acs-core-docs/www/files/winnsd.txt
-[root tmp]# <strong class="userinput"><code>mv openacs-4 openacs-5.2.3rc1</code></strong>
+[root tmp]# <b class="userinput"><tt>mv openacs-4 openacs-5.4.0</tt></b>
 <span class="action"><span class="action">cd /tmp
 cvs -d :pserver:anonymous@cvs.openacs.org:/cvsroot co openacs-4/packages/acs-core-docs/www/files/
 mv openacs-4 openacs-5.0.0a4</span></span></pre></div><div class="navfooter"><hr><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="install-more-software.html">Prev</a> </td><td width="20%" align="center"><a accesskey="h" href="index.html">Home</a></td><td width="40%" align="right"> <a accesskey="n" href="install-cvs.html">Next</a></td></tr><tr><td width="40%" align="left">Appendix�B.�Install additional supporting software </td><td width="20%" align="center"><a accesskey="u" href="install-more-software.html">Up</a></td><td width="40%" align="right"> Initialize CVS (OPTIONAL)</td></tr></table><hr><address><a href="mailto:docs@openacs.org">docs@openacs.org</a></address></div><a name="comments"></a><center><a href="http://openacs.org/doc/current/openacs-unpack.html#comments">View comments on this page at openacs.org</a></center></body></html>
Index: openacs-4/packages/acs-core-docs/www/openacs.html
===================================================================
RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/openacs.html,v
diff -u -r1.44 -r1.44.4.1
--- openacs-4/packages/acs-core-docs/www/openacs.html	17 Jul 2006 05:38:31 -0000	1.44
+++ openacs-4/packages/acs-core-docs/www/openacs.html	3 Feb 2008 12:07:40 -0000	1.44.4.1
@@ -1,7 +1,8 @@
-<html><head><meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"><title>Install OpenACS 5.2.3rc1</title><meta name="generator" content="DocBook XSL Stylesheets V1.70.1"><link rel="home" href="index.html" title="OpenACS Core Documentation"><link rel="up" href="complete-install.html" title="Chapter�3.�Complete Installation"><link rel="previous" href="aolserver4.html" title="Install AOLserver 4"><link rel="next" href="win2k-installation.html" title="OpenACS Installation Guide for Windows2000"><link rel="stylesheet" href="openacs.css" type="text/css"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><a href="http://openacs.org"><img src="/doc/images/alex.jpg" border="0" alt="Alex logo"></a><table width="100%" summary="Navigation header" border="0"><tr><td width="20%" align="left"><a accesskey="p" href="aolserver4.html">Prev</a> </td><th width="60%" align="center">Chapter�3.�Complete Installation</th><td width="20%" align="right"> <a accesskey="n" href="win2k-installation.html">Next</a></td></tr></table><hr></div><div class="sect1" lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="openacs"></a>Install OpenACS 5.2.3rc1</h2></div></div></div><div class="authorblurb"><p>by <a href="mailto:vinod@kurup.com" target="_top">Vinod Kurup</a></p>
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html><head><meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"><title>Install OpenACS 5.4.0</title><meta name="generator" content="DocBook XSL Stylesheets V1.60.1"><link rel="home" href="index.html" title="OpenACS Core Documentation"><link rel="up" href="complete-install.html" title="Chapter�3.�Complete Installation"><link rel="previous" href="aolserver4.html" title="Install AOLserver 4"><link rel="next" href="win2k-installation.html" title="OpenACS Installation Guide for Windows2000"><link rel="stylesheet" href="openacs.css" type="text/css"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><a href="http://openacs.org"><img src="/doc/images/alex.jpg" border="0" alt="Alex logo"></a><table width="100%" summary="Navigation header" border="0"><tr><td width="20%" align="left"><a accesskey="p" href="aolserver4.html">Prev</a> </td><th width="60%" align="center">Chapter�3.�Complete Installation</th><td width="20%" align="right"> <a accesskey="n" href="win2k-installation.html">Next</a></td></tr></table><hr></div><div class="sect1" lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="openacs"></a>Install OpenACS 5.4.0</h2></div></div><div></div></div><div class="authorblurb"><p>by <a href="mailto:vinod@kurup.com" target="_top">Vinod Kurup</a></p>
           OpenACS docs are written by the named authors, and may be edited
           by OpenACS documentation staff.
-        </div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="install-aolserver-user-accounts"></a>Set up a user account for each site.</h3></div></div></div><p>
+        </div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="install-aolserver-user-accounts"></a>Set up a user account for each site.</h3></div></div><div></div></div><p>
       AOLserver needs to be started as the root user if you want to use
       port 80. Once it starts, though, it will drop the root privileges and
       run as another user, which you must specify on the command line. It's
@@ -14,60 +15,60 @@
       for each different service.  A service name should be a single
       word, <span class="emphasis"><em>letters and numbers only</em></span>. If the name
       of your site is one word, that would be a good choice. For
-      example "<span class="replaceable"><span class="replaceable">$OPENACS_SERVICE_NAME</span></span>" might be the service name for the
+      example &quot;<span class="replaceable"><span class="replaceable">$OPENACS_SERVICE_NAME</span></span>&quot; might be the service name for the
       <a href="http://%24OPENACS_SERVICE_NAME.net/" target="_top"><span class="replaceable"><span class="replaceable">$OPENACS_SERVICE_NAME</span></span>.net</a>
       community.</p><p>We'll leave the password blank, which prevents login by
       password, for increased security.  The only way to log in will
       be with ssh certificates.  The only people who should log in are
       developers for that specific instance.  Add this user, and put
-      it in the <code class="computeroutput"><span class="replaceable"><span class="replaceable">$OPENACS_SERVICE_NAME</span></span></code> group so that it
+      it in the <tt class="computeroutput"><span class="replaceable"><span class="replaceable">$OPENACS_SERVICE_NAME</span></span></tt> group so that it
       can use database and server commands associated with that group.
       (If you don't know how to do this, type 
-      <strong class="userinput"><code>man usermod</code></strong>. You can type
-      <strong class="userinput"><code>groups</code></strong> to find out which groups a user
+      <b class="userinput"><tt>man usermod</tt></b>. You can type
+      <b class="userinput"><tt>groups</tt></b> to find out which groups a user
       is a part of)
     </p><pre class="screen">
-[root root]# <strong class="userinput"><code>useradd <span class="replaceable"><span class="replaceable">$OPENACS_SERVICE_NAME</span></span></code></strong>
+[root root]# <b class="userinput"><tt>useradd <span class="replaceable"><span class="replaceable">$OPENACS_SERVICE_NAME</span></span></tt></b>
 </pre><p>You also need to set up a group called web.</p><pre class="screen">
-[root root]# <strong class="userinput"><code>groupadd web</code></strong>
+[root root]# <b class="userinput"><tt>groupadd web</tt></b>
       </pre><p>
       Then change the user to be a part of this group:
     </p><pre class="screen">
-[root root]# <strong class="userinput"><code>usermod -g web <span class="replaceable"><span class="replaceable">$OPENACS_SERVICE_NAME</span></span></code></strong>
+[root root]# <b class="userinput"><tt>usermod -g web <span class="replaceable"><span class="replaceable">$OPENACS_SERVICE_NAME</span></span></tt></b>
       </pre><p>FreeBSD creates the user this way:</p><pre class="screen">
-[root root]# <strong class="userinput"><code>mkdir -p /home/<span class="replaceable"><span class="replaceable">$OPENACS_SERVICE_NAME</span></span></code></strong>
-[root root]# <strong class="userinput"><code>pw useradd -n <span class="replaceable"><span class="replaceable">$OPENACS_SERVICE_NAME</span></span> -g web -d /home/<span class="replaceable"><span class="replaceable">$OPENACS_SERVICE_NAME</span></span> -s /bin/bash</code></strong>
+[root root]# <b class="userinput"><tt>mkdir -p /home/<span class="replaceable"><span class="replaceable">$OPENACS_SERVICE_NAME</span></span></tt></b>
+[root root]# <b class="userinput"><tt>pw useradd -n <span class="replaceable"><span class="replaceable">$OPENACS_SERVICE_NAME</span></span> -g web -d /home/<span class="replaceable"><span class="replaceable">$OPENACS_SERVICE_NAME</span></span> -s /bin/bash</tt></b>
 [root root]#
 <span class="action"><span class="action">mkdir -p /home/<span class="replaceable"><span class="replaceable">$OPENACS_SERVICE_NAME</span></span>
 pw useradd -n <span class="replaceable"><span class="replaceable">$OPENACS_SERVICE_NAME</span></span> -g web -d /home/<span class="replaceable"><span class="replaceable">$OPENACS_SERVICE_NAME</span></span> -s /bin/bash
-</span></span></pre></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="openacs-setup"></a>Set up the file system for one or more OpenACS Sites</h3></div></div></div><p>For Linux Standard Base compliance and ease of backup,
+</span></span></pre></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="openacs-setup"></a>Set up the file system for one or more OpenACS Sites</h3></div></div><div></div></div><p>For Linux Standard Base compliance and ease of backup,
       all of the files in each OpenACS site are stored in a
       subdirectory of
-      <code class="computeroutput">/var/lib/aolserver</code>, one
+      <tt class="computeroutput">/var/lib/aolserver</tt>, one
       subdirectory per site.  The first time you install an OpenACS
-      site on a server, you must create the parent directory and set its permissions:</p><pre class="screen">[root root]# <strong class="userinput"><code>mkdir /var/lib/aolserver</code></strong>
-[root root]# <strong class="userinput"><code>chgrp web /var/lib/aolserver</code></strong>
-[root root]# <strong class="userinput"><code>chmod 770 /var/lib/aolserver</code></strong>
+      site on a server, you must create the parent directory and set its permissions:</p><pre class="screen">[root root]# <b class="userinput"><tt>mkdir /var/lib/aolserver</tt></b>
+[root root]# <b class="userinput"><tt>chgrp web /var/lib/aolserver</tt></b>
+[root root]# <b class="userinput"><tt>chmod 770 /var/lib/aolserver</tt></b>
 [root root]#
 <span class="action"><span class="action">mkdir /var/lib/aolserver
 chgrp web /var/lib/aolserver
-chmod 770 /var/lib/aolserver</span></span></pre></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="install-with-script"></a>Installation Option 1: Use automated script</h3></div></div></div><p>A bash script is available to automate all of the steps for the rest of this section.  It requires <a href="install-tclwebtest.html" title="Install tclwebtest.">tclwebtest</a>.  The automated script can greatly accelerate the install process, but is very sensitive to the install environment.  We recommend that you run the automated install and, if it does not work the first time, consider switching to a <a href="openacs.html#install-from-tarball" title="Installation Option 2: Install from tarball">manual installation</a>.</p><p>Get the install script from CVS.  It is located within
+chmod 770 /var/lib/aolserver</span></span></pre></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="install-with-script"></a>Installation Option 1: Use automated script</h3></div></div><div></div></div><p>A bash script is available to automate all of the steps for the rest of this section.  It requires <a href="install-tclwebtest.html" title="Install tclwebtest.">tclwebtest</a>.  The automated script can greatly accelerate the install process, but is very sensitive to the install environment.  We recommend that you run the automated install and, if it does not work the first time, consider switching to a <a href="openacs.html#install-from-tarball" title="Installation Option 2: Install from tarball">manual installation</a>.</p><p>Get the install script from CVS.  It is located within
         the main cvs tree, at /etc/install.  Use anonymous CVS
         checkout to get that directory in the home directory of the
         service's dedicated user.  We put it there so that it is not
         overwritten when we do the main CVS checkout to the target
-        location.</p><pre class="screen">[root root]# <strong class="userinput"><code>su - <span class="replaceable"><span class="replaceable">$OPENACS_SERVICE_NAME</span></span></code></strong>
-[$OPENACS_SERVICE_NAME $OPENACS_SERVICE_NAME]$ <strong class="userinput"><code>cvs -d :pserver:anonymous@cvs.openacs.org:/cvsroot co -d install openacs-4/etc/install</code></strong>
+        location.</p><pre class="screen">[root root]# <b class="userinput"><tt>su - <span class="replaceable"><span class="replaceable">$OPENACS_SERVICE_NAME</span></span></tt></b>
+[$OPENACS_SERVICE_NAME $OPENACS_SERVICE_NAME]$ <b class="userinput"><tt>cvs -d :pserver:anonymous@cvs.openacs.org:/cvsroot co -d install openacs-4/etc/install</tt></b>
 cvs server: Updating install
 U install/README
 U install/TODO
   ... many lines omitted ...
 U install/tcl/twt-procs.tcl
 U install/tcl/user-procs.tcl
-[$OPENACS_SERVICE_NAME $OPENACS_SERVICE_NAME]$ <strong class="userinput"><code>cd install</code></strong>
-[$OPENACS_SERVICE_NAME install]$ <strong class="userinput"><code>emacs install.tcl</code></strong>
-</pre><p>Edit the installation configuration file, <code class="computeroutput">/home/<span class="replaceable"><span class="replaceable">$OPENACS_SERVICE_NAME</span></span>/install/install.tcl</code> and update the site-specific values, such as the new service's IP address and name, which will be written into the new service's <code class="computeroutput">config.tcl</code> file.  If your system is different from the one described in the previous sections, check the file paths as well.  Set <code class="computeroutput">do_checkout=yes</code> to create a new OpenACS site directly from a CVS checkout, or <code class="computeroutput">=no</code> if you have a fully configured site and just want to rebuild it (drop and recreate the database and repeat the installation).  If you have followed a stock installation, the default configuration will work without changes and will install an OpenACS site at 127.0.0.1:8000.</p><p>Run the install script <code class="computeroutput">install.sh</code> as root:</p><pre class="screen">[$OPENACS_SERVICE_NAME $OPENACS_SERVICE_NAME]$ <strong class="userinput"><code>exit</code></strong> 
-[root root]# <strong class="userinput"><code>sh /home/<span class="replaceable"><span class="replaceable">$OPENACS_SERVICE_NAME</span></span>/install/install.sh</code></strong>
+[$OPENACS_SERVICE_NAME $OPENACS_SERVICE_NAME]$ <b class="userinput"><tt>cd install</tt></b>
+[$OPENACS_SERVICE_NAME install]$ <b class="userinput"><tt>emacs install.tcl</tt></b>
+</pre><p>Edit the installation configuration file, <tt class="computeroutput">/home/<span class="replaceable"><span class="replaceable">$OPENACS_SERVICE_NAME</span></span>/install/install.tcl</tt> and update the site-specific values, such as the new service's IP address and name, which will be written into the new service's <tt class="computeroutput">config.tcl</tt> file.  If your system is different from the one described in the previous sections, check the file paths as well.  Set <tt class="computeroutput">do_checkout=yes</tt> to create a new OpenACS site directly from a CVS checkout, or <tt class="computeroutput">=no</tt> if you have a fully configured site and just want to rebuild it (drop and recreate the database and repeat the installation).  If you have followed a stock installation, the default configuration will work without changes and will install an OpenACS site at 127.0.0.1:8000.</p><p>Run the install script <tt class="computeroutput">install.sh</tt> as root:</p><pre class="screen">[$OPENACS_SERVICE_NAME $OPENACS_SERVICE_NAME]$ <b class="userinput"><tt>exit</tt></b> 
+[root root]# <b class="userinput"><tt>sh /home/<span class="replaceable"><span class="replaceable">$OPENACS_SERVICE_NAME</span></span>/install/install.sh</tt></b>
 /home/$OPENACS_SERVICE_NAME/install/install.sh: Starting installation with config_file 
 /home/$OPENACS_SERVICE_NAME/install/install.tcl. Using serverroot=/var/lib/aolserver/
 $OPENACS_SERVICE_NAME, server_url=http://0.0.0.0:8000, do_checkout=yes, do_install=yes, 
@@ -79,68 +80,68 @@
 admin email   : admin@yourserver.net
 admin password: xxxx
 ######################################################################
-[root root]#</pre><p>You can proceed to <a href="openacs.html#install-next-steps" title="Next Steps">the section called &#8220;Next Steps&#8221;</a>.</p></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="install-from-tarball"></a>Installation Option 2: Install from tarball</h3></div></div></div><p>You should already have downloaded the OpenACS tarball
-      to the <code class="computeroutput">/var/tmp</code> directory.  If
+[root root]#</pre><p>You can proceed to <a href="openacs.html#install-next-steps" title="Next Steps">Section�, &#8220;Next Steps&#8221;</a>.</p></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="install-from-tarball"></a>Installation Option 2: Install from tarball</h3></div></div><div></div></div><p>You should already have downloaded the OpenACS tarball
+      to the <tt class="computeroutput">/var/tmp</tt> directory.  If
       not, <a href="individual-programs.html#openacs-download">download the OpenACS
       tarball</a> and save it in
-      <code class="computeroutput">/var/tmp</code> and proceed:</p><div class="orderedlist"><ol type="1"><li><p><a name="install-openacs-download"></a>Unpack the OpenACS tarball and rename it to <code class="computeroutput">$OPENACS_SERVICE_NAME</code>.  Secure the directory so that only the owner can access it.  Check the permissions by listing the directory.</p><p>FreeBSD note: Change the period in <strong class="userinput"><code>chown -R $OPENACS_SERVICE_NAME.$OPENACS_SERVICE_NAME $OPENACS_SERVICE_NAME</code></strong> to a colon: <strong class="userinput"><code>chown -R $OPENACS_SERVICE_NAME:$OPENACS_SERVICE_NAME $OPENACS_SERVICE_NAME</code></strong>
-        </p><pre class="screen">[root root]# <strong class="userinput"><code>su - <span class="replaceable"><span class="replaceable">$OPENACS_SERVICE_NAME</span></span></code></strong>
-[$OPENACS_SERVICE_NAME $OPENACS_SERVICE_NAME]$ <strong class="userinput"><code>cd /var/lib/aolserver</code></strong>
-[$OPENACS_SERVICE_NAME aolserver]$ <strong class="userinput"><code>tar xzf /var/tmp/openacs-5.2.3rc1.tgz</code></strong>
-[$OPENACS_SERVICE_NAME aolserver]$ <strong class="userinput"><code>mv openacs-5.2.3rc1 <span class="replaceable"><span class="replaceable">$OPENACS_SERVICE_NAME</span></span></code></strong>
-[$OPENACS_SERVICE_NAME aolserver]$ <strong class="userinput"><code>chmod -R 775 <span class="replaceable"><span class="replaceable">$OPENACS_SERVICE_NAME</span></span></code></strong>
-[$OPENACS_SERVICE_NAME aolserver]$ <strong class="userinput"><code>chown -R <span class="replaceable"><span class="replaceable">$OPENACS_SERVICE_NAME</span></span>.<span class="replaceable"><span class="replaceable">$OPENACS_SERVICE_NAME</span></span> <span class="replaceable"><span class="replaceable">$OPENACS_SERVICE_NAME</span></span></code></strong>
-[$OPENACS_SERVICE_NAME aolserver]$ <strong class="userinput"><code>ls -al</code></strong>
+      <tt class="computeroutput">/var/tmp</tt> and proceed:</p><div class="orderedlist"><ol type="1"><li><p><a name="install-openacs-download"></a>Unpack the OpenACS tarball and rename it to <tt class="computeroutput">$OPENACS_SERVICE_NAME</tt>.  Secure the directory so that only the owner can access it.  Check the permissions by listing the directory.</p><p>FreeBSD note: Change the period in <b class="userinput"><tt>chown -R $OPENACS_SERVICE_NAME.$OPENACS_SERVICE_NAME $OPENACS_SERVICE_NAME</tt></b> to a colon: <b class="userinput"><tt>chown -R $OPENACS_SERVICE_NAME:$OPENACS_SERVICE_NAME $OPENACS_SERVICE_NAME</tt></b>
+        </p><pre class="screen">[root root]# <b class="userinput"><tt>su - <span class="replaceable"><span class="replaceable">$OPENACS_SERVICE_NAME</span></span></tt></b>
+[$OPENACS_SERVICE_NAME $OPENACS_SERVICE_NAME]$ <b class="userinput"><tt>cd /var/lib/aolserver</tt></b>
+[$OPENACS_SERVICE_NAME aolserver]$ <b class="userinput"><tt>tar xzf /var/tmp/openacs-5.4.0.tgz</tt></b>
+[$OPENACS_SERVICE_NAME aolserver]$ <b class="userinput"><tt>mv openacs-5.4.0 <span class="replaceable"><span class="replaceable">$OPENACS_SERVICE_NAME</span></span></tt></b>
+[$OPENACS_SERVICE_NAME aolserver]$ <b class="userinput"><tt>chmod -R 775 <span class="replaceable"><span class="replaceable">$OPENACS_SERVICE_NAME</span></span></tt></b>
+[$OPENACS_SERVICE_NAME aolserver]$ <b class="userinput"><tt>chown -R <span class="replaceable"><span class="replaceable">$OPENACS_SERVICE_NAME</span></span>.<span class="replaceable"><span class="replaceable">$OPENACS_SERVICE_NAME</span></span> <span class="replaceable"><span class="replaceable">$OPENACS_SERVICE_NAME</span></span></tt></b>
+[$OPENACS_SERVICE_NAME aolserver]$ <b class="userinput"><tt>ls -al</tt></b>
 total 3
 drwxrwx---    3 root     web          1024 Mar 29 16:41 .
 drwxr-xr-x   25 root     root         1024 Mar 29 16:24 ..
 drwx------    7 $OPENACS_SERVICE_NAME web          1024 Jan  6 14:36 $OPENACS_SERVICE_NAME
-[$OPENACS_SERVICE_NAME aolserver]$ <strong class="userinput"><code>exit</code></strong>
+[$OPENACS_SERVICE_NAME aolserver]$ <b class="userinput"><tt>exit</tt></b>
 logout
 [root root]#
 <span class="action"><span class="action">su - $OPENACS_SERVICE_NAME
 cd /var/lib/aolserver
-tar xzf /var/tmp/openacs-5.2.3rc1.tgz
-mv openacs-5.2.3rc1 $OPENACS_SERVICE_NAME
+tar xzf /var/tmp/openacs-5.4.0.tgz
+mv openacs-5.4.0 $OPENACS_SERVICE_NAME
 chmod -R 755 $OPENACS_SERVICE_NAME
 chown -R $OPENACS_SERVICE_NAME.$OPENACS_SERVICE_NAME $OPENACS_SERVICE_NAME
-exit</span></span></pre></li><li><p><a href="cvs-tips.html#cvs-service-import">Add the Service to CVS</a> (OPTIONAL)</p></li><li><p>Prepare the database</p><div class="itemizedlist"><ul type="disc"><li><p><a name="install-openacs-prepare-oracle"></a><b>Prepare Oracle for OpenACS.�</b>If you won't be using Oracle, skip to <a href="openacs.html#install-openacs-prepare-postgres" title="Prepare PostgreSQL for an OpenACS Service">Prepare PostgreSQL for an OpenACS Service</a></p><p>
+exit</span></span></pre></li><li><p><a href="">Add the Service to CVS</a> (OPTIONAL)</p></li><li><p>Prepare the database</p><div class="itemizedlist"><ul type="disc"><li><p><a name="install-openacs-prepare-oracle"></a><b>Prepare Oracle for OpenACS.�</b>If you won't be using Oracle, skip to <a href="openacs.html#install-openacs-prepare-postgres" title="Prepare PostgreSQL for an OpenACS Service">Prepare PostgreSQL for an OpenACS Service</a></p><p>
 	  You should be sure that your user account
-	  (e.g. <code class="computeroutput"><span class="replaceable"><span class="replaceable">$OPENACS_SERVICE_NAME</span></span></code>) is in the
-	  <code class="computeroutput">dba</code> group.
+	  (e.g. <tt class="computeroutput"><span class="replaceable"><span class="replaceable">$OPENACS_SERVICE_NAME</span></span></tt>) is in the
+	  <tt class="computeroutput">dba</tt> group.
 	</p><div class="orderedlist"><ol type="a"><li><p> 
 		  Verify membership by typing
-		  <code class="computeroutput">groups</code> when you login:
+		  <tt class="computeroutput">groups</tt> when you login:
 
 		  </p><pre class="programlisting">[$OPENACS_SERVICE_NAME ~]$ groups
 dba web</pre><p>
 
 		  If you do not see these groups, take the following action: 
 
-		  </p><pre class="programlisting">[$OPENACS_SERVICE_NAME ~]$ <strong class="userinput"><code>su -</code></strong>
+		  </p><pre class="programlisting">[$OPENACS_SERVICE_NAME ~]$ <b class="userinput"><tt>su -</tt></b>
 Password: ************
-[root ~]# <strong class="userinput"><code>adduser <span class="replaceable"><span class="replaceable">$OPENACS_SERVICE_NAME</span></span> dba</code></strong></pre><p>
+[root ~]# <b class="userinput"><tt>adduser <span class="replaceable"><span class="replaceable">$OPENACS_SERVICE_NAME</span></span> dba</tt></b></pre><p>
 
 		  If you get an error about an undefined group, then add that group
 		  manually:
 
-</p><pre class="programlisting">[root ~]# <strong class="userinput"><code>groupadd dba</code></strong>
-[root ~]# <strong class="userinput"><code>groupadd web</code></strong></pre><p>
+</p><pre class="programlisting">[root ~]# <b class="userinput"><tt>groupadd dba</tt></b>
+[root ~]# <b class="userinput"><tt>groupadd web</tt></b></pre><p>
 
-		  Make sure to logout as <code class="computeroutput">root</code> when
+		  Make sure to logout as <tt class="computeroutput">root</tt> when
 		  you are finished with this step and log back in as
 		  your regular user.
 		</p></li><li><p> 
 		  Connect to Oracle using
-		  <code class="computeroutput">svrmgrl</code> and login:
+		  <tt class="computeroutput">svrmgrl</tt> and login:
         
-		  </p><pre class="programlisting">[$OPENACS_SERVICE_NAME ~]$ <strong class="userinput"><code>svrmgrl</code></strong>
-SVRMGR&gt; <strong class="userinput"><code>connect internal</code></strong>
+		  </p><pre class="programlisting">[$OPENACS_SERVICE_NAME ~]$ <b class="userinput"><tt>svrmgrl</tt></b>
+SVRMGR&gt; <b class="userinput"><tt>connect internal</tt></b>
 Connected.</pre><p>
 		</p></li><li><p>
 		  Determine where the system tablespaces are stored: 
 
-		  </p><pre class="programlisting">SVRMGR&gt; <strong class="userinput"><code>select file_name from dba_data_files;</code></strong></pre><p>
+		  </p><pre class="programlisting">SVRMGR&gt; <b class="userinput"><tt>select file_name from dba_data_files;</tt></b></pre><p>
         Example results: 
 		  </p><pre class="programlisting">/ora8/m01/app/oracle/oradata/ora8/system01.dbf
 /ora8/m01/app/oracle/oradata/ora8/tools01.dbf
@@ -153,108 +154,108 @@
 		  Using the above output, you should determine where
 		  to store your tablespace. As a general rule, you'll want to
 		  store your tablespace on a mount point under the
-		  <code class="computeroutput">/ora8</code> directory that is separate
+		  <tt class="computeroutput">/ora8</tt> directory that is separate
 		  from the Oracle system data files. By default, the Oracle system
-		  is on <code class="computeroutput">m01</code>, so we will use
-		  <code class="computeroutput">m02</code>. This enables your Oracle
+		  is on <tt class="computeroutput">m01</tt>, so we will use
+		  <tt class="computeroutput">m02</tt>. This enables your Oracle
 		  system and database files to be on separate disks for optimized
 		  performance. For more information on such a configuration, see
 		  <a href="http://philip.greenspun.com/panda/databases-choosing" target="_top">Chapter
 		  12</a> of <a href="http://philip.greenspun.com/panda/" target="_top">Philip's
 		  book</a>.  For this example, we'll use
-		  <code class="computeroutput">/ora8/m02/oradata/ora8/</code>.
+		  <tt class="computeroutput">/ora8/m02/oradata/ora8/</tt>.
 		</p></li><li><p> 
 		  Create the directory for the datafile; to do this,
-		  exit from <code class="computeroutput">svrmgrl</code> and login as
-		  <code class="computeroutput">root</code> for this step: </p><pre class="programlisting">
-SVRMGR&gt; <strong class="userinput"><code>exit</code></strong>
-[$OPENACS_SERVICE_NAME ~]$ <strong class="userinput"><code>su -</code></strong>
+		  exit from <tt class="computeroutput">svrmgrl</tt> and login as
+		  <tt class="computeroutput">root</tt> for this step: </p><pre class="programlisting">
+SVRMGR&gt; <b class="userinput"><tt>exit</tt></b>
+[$OPENACS_SERVICE_NAME ~]$ <b class="userinput"><tt>su -</tt></b>
 Password: ************
-[root ~]# <strong class="userinput"><code>mkdir -p /ora8/m02/oradata/ora8/</code></strong>
-[root ~]# <strong class="userinput"><code>chown <span class="replaceable"><span class="replaceable">$OPENACS_SERVICE_NAME</span></span>:web /ora8/m02/oradata/ora8</code></strong>
-[root ~]# <strong class="userinput"><code>chmod 775 /ora8/m02/oradata/ora8</code></strong>
-[root ~]# <strong class="userinput"><code>exit</code></strong>
+[root ~]# <b class="userinput"><tt>mkdir -p /ora8/m02/oradata/ora8/</tt></b>
+[root ~]# <b class="userinput"><tt>chown <span class="replaceable"><span class="replaceable">$OPENACS_SERVICE_NAME</span></span>:web /ora8/m02/oradata/ora8</tt></b>
+[root ~]# <b class="userinput"><tt>chmod 775 /ora8/m02/oradata/ora8</tt></b>
+[root ~]# <b class="userinput"><tt>exit</tt></b>
 [$OPENACS_SERVICE_NAME ~]$</pre></li><li><p> 
 
 		  Create a tablespace for the service. It is important that the
-		  tablespace can <code class="computeroutput">autoextend</code>. This
+		  tablespace can <tt class="computeroutput">autoextend</tt>. This
 		  allows the tablespace's storage capacity to grow as the size
 		  of the data grows. We set the pctincrease to be a very low value
 		  so that our extents won't grow geometrically. We do not set
 		  it to 0 at the tablespace level because this would affect
 		  Oracle's ability to automatically coalesce free space in the
 		  tablespace.
 
-		</p><pre class="programlisting">[$OPENACS_SERVICE_NAME ~]$ <strong class="userinput"><code>svrmgrl</code></strong>
-SVRMGR&gt; <strong class="userinput"><code>connect internal;</code></strong>
-SVRMGR&gt; <strong class="userinput"><code>create tablespace <span class="replaceable"><span class="replaceable">$OPENACS_SERVICE_NAME</span></span>
+		</p><pre class="programlisting">[$OPENACS_SERVICE_NAME ~]$ <b class="userinput"><tt>svrmgrl</tt></b>
+SVRMGR&gt; <b class="userinput"><tt>connect internal;</tt></b>
+SVRMGR&gt; <b class="userinput"><tt>create tablespace <span class="replaceable"><span class="replaceable">$OPENACS_SERVICE_NAME</span></span>
       datafile '/ora8/m02/oradata/ora8/<span class="replaceable"><span class="replaceable">$OPENACS_SERVICE_NAME</span></span>01.dbf' 
       size 50M 
       autoextend on 
       next 10M
       maxsize 300M
       extent management local
-      uniform size 32K;</code></strong></pre></li><li><p> 
+      uniform size 32K;</tt></b></pre></li><li><p> 
 		  Create a database user for this service. Give the
 		  user access to the tablespace and rights to connect. We'll use
-		  <code class="computeroutput"><span class="replaceable"><span class="replaceable">$OPENACS_SERVICE_NAMEpassword</span></span></code> as our password.</p><p>
+		  <tt class="computeroutput"><span class="replaceable"><span class="replaceable">$OPENACS_SERVICE_NAMEpassword</span></span></tt> as our password.</p><p>
 		  Write down what you specify as
                   <span class="emphasis"><em>service_name</em></span>
-                  (i.e. <code class="computeroutput"><span class="replaceable"><span class="replaceable">$OPENACS_SERVICE_NAME</span></span></code>)
+                  (i.e. <tt class="computeroutput"><span class="replaceable"><span class="replaceable">$OPENACS_SERVICE_NAME</span></span></tt>)
                   and <span class="emphasis"><em>database_password</em></span>
-                  (i.e. <code class="computeroutput"><span class="replaceable"><span class="replaceable">$OPENACS_SERVICE_NAMEpassword</span></span></code>). You
+                  (i.e. <tt class="computeroutput"><span class="replaceable"><span class="replaceable">$OPENACS_SERVICE_NAMEpassword</span></span></tt>). You
                   will need this information for configuring exports
                   and AOLserver.
 		</p><pre class="programlisting">
-SVRMGR&gt; <strong class="userinput"><code>create user <span class="replaceable"><span class="replaceable">$OPENACS_SERVICE_NAME</span></span> identified by <span class="replaceable"><span class="replaceable">$OPENACS_SERVICE_NAMEpassword</span></span> default tablespace <span class="replaceable"><span class="replaceable">$OPENACS_SERVICE_NAME</span></span>
-    temporary tablespace temp quota unlimited on <span class="replaceable"><span class="replaceable">$OPENACS_SERVICE_NAME</span></span>;</code></strong>
-SVRMGR&gt; <strong class="userinput"><code>grant connect, resource, ctxapp, javasyspriv, query rewrite to <span class="replaceable"><span class="replaceable">$OPENACS_SERVICE_NAME</span></span>;</code></strong>
-SVRMGR&gt; <strong class="userinput"><code>revoke unlimited tablespace from <span class="replaceable"><span class="replaceable">$OPENACS_SERVICE_NAME</span></span>;</code></strong>
-SVRMGR&gt; <strong class="userinput"><code>alter user <span class="replaceable"><span class="replaceable">$OPENACS_SERVICE_NAME</span></span> quota unlimited on <span class="replaceable"><span class="replaceable">$OPENACS_SERVICE_NAME</span></span>;</code></strong>
-SVRMGR&gt; <strong class="userinput"><code>exit;</code></strong></pre><p>
+SVRMGR&gt; <b class="userinput"><tt>create user <span class="replaceable"><span class="replaceable">$OPENACS_SERVICE_NAME</span></span> identified by <span class="replaceable"><span class="replaceable">$OPENACS_SERVICE_NAMEpassword</span></span> default tablespace <span class="replaceable"><span class="replaceable">$OPENACS_SERVICE_NAME</span></span>
+    temporary tablespace temp quota unlimited on <span class="replaceable"><span class="replaceable">$OPENACS_SERVICE_NAME</span></span>;</tt></b>
+SVRMGR&gt; <b class="userinput"><tt>grant connect, resource, ctxapp, javasyspriv, query rewrite to <span class="replaceable"><span class="replaceable">$OPENACS_SERVICE_NAME</span></span>;</tt></b>
+SVRMGR&gt; <b class="userinput"><tt>revoke unlimited tablespace from <span class="replaceable"><span class="replaceable">$OPENACS_SERVICE_NAME</span></span>;</tt></b>
+SVRMGR&gt; <b class="userinput"><tt>alter user <span class="replaceable"><span class="replaceable">$OPENACS_SERVICE_NAME</span></span> quota unlimited on <span class="replaceable"><span class="replaceable">$OPENACS_SERVICE_NAME</span></span>;</tt></b>
+SVRMGR&gt; <b class="userinput"><tt>exit;</tt></b></pre><p>
 		  Your table space is now ready. In case you are trying to delete a
-		  previous OpenACS installation, consult these commands in <a href="install-openacs-delete-tablespace.html" title="Deleting a tablespace">the section called &#8220;Deleting a tablespace&#8221;</a> below.
+		  previous OpenACS installation, consult these commands in <a href="install-openacs-delete-tablespace.html" title="Deleting a tablespace">Section�, &#8220;Deleting a tablespace&#8221;</a> below.
 		</p></li><li><p>
         Make sure that you can login to Oracle using your
-        <span class="emphasis"><em>service_name</em></span> account: </p><pre class="programlisting">[$OPENACS_SERVICE_NAME ~]$ <strong class="userinput"><code>sqlplus <span class="replaceable"><span class="replaceable">$OPENACS_SERVICE_NAME</span></span>/<span class="replaceable"><span class="replaceable">$OPENACS_SERVICE_NAMEpassword</span></span></code></strong>
-SQL&gt; <strong class="userinput"><code>select sysdate from dual;</code></strong>
+        <span class="emphasis"><em>service_name</em></span> account: </p><pre class="programlisting">[$OPENACS_SERVICE_NAME ~]$ <b class="userinput"><tt>sqlplus <span class="replaceable"><span class="replaceable">$OPENACS_SERVICE_NAME</span></span>/<span class="replaceable"><span class="replaceable">$OPENACS_SERVICE_NAMEpassword</span></span></tt></b>
+SQL&gt; <b class="userinput"><tt>select sysdate from dual;</tt></b>
 SYSDATE
 ----------
 2001-12-20
-SQL&gt; <strong class="userinput"><code>exit;</code></strong></pre><p>
+SQL&gt; <b class="userinput"><tt>exit;</tt></b></pre><p>
 		  You should see today's date in a format 'YYYY-MM-DD.'
 		  If you can't login, try redoing step 1 again. If the date is
 		  in the wrong format, make sure you followed the steps outlined in
-		  <a href="oracle.html#install-oracle-troubleshooting" title="Troubleshooting Oracle Dates">the section called &#8220;Troubleshooting Oracle Dates&#8221;</a>
+		  <a href="oracle.html#install-oracle-troubleshooting" title="Troubleshooting Oracle Dates">Section�, &#8220;Troubleshooting Oracle Dates&#8221;</a>
 		  </p></li></ol></div></li><li><p><a name="install-openacs-prepare-postgres"></a><b>Prepare PostgreSQL for an OpenACS Service.�</b></p><div class="itemizedlist"><ul type="circle"><li><p><a name="create-service-db-user"></a>PostgreSQL:</p><p>Create a user in the database matching the service
-            name.  With default PostgreSQL authentication, a system user connecting locally automatically authenticates as the postgres user of the same name, if one exists.  We currently use postgres "super-users" for everything, which means that anyone with access to any of the openacs system accounts on a machine has full access to all postgresql databases on that machine.</p><pre class="screen">[root root]# <strong class="userinput"><code>su - postgres</code></strong>
-[postgres pgsql]$ <strong class="userinput"><code>createuser -a -d <span class="replaceable"><span class="replaceable">$OPENACS_SERVICE_NAME</span></span></code></strong>
+            name.  With default PostgreSQL authentication, a system user connecting locally automatically authenticates as the postgres user of the same name, if one exists.  We currently use postgres &quot;super-users&quot; for everything, which means that anyone with access to any of the openacs system accounts on a machine has full access to all postgresql databases on that machine.</p><pre class="screen">[root root]# <b class="userinput"><tt>su - postgres</tt></b>
+[postgres pgsql]$ <b class="userinput"><tt>createuser -a -d <span class="replaceable"><span class="replaceable">$OPENACS_SERVICE_NAME</span></span></tt></b>
 CREATE USER
-[postgres pgsql]$ <strong class="userinput"><code>exit</code></strong>
+[postgres pgsql]$ <b class="userinput"><tt>exit</tt></b>
 logout
-[root root]#</pre></li><li><p><a name="create-database"></a>Create a database with the same name as our service name, <span class="replaceable"><span class="replaceable">$OPENACS_SERVICE_NAME</span></span>. The full pathname for <code class="computeroutput">createdb</code> needs to be used, since the pgsql directory has not been added to the $OPENACS_SERVICE_NAME bash profile.</p><pre class="screen">[root root]# <strong class="userinput"><code>su - <span class="replaceable"><span class="replaceable">$OPENACS_SERVICE_NAME</span></span></code></strong>
-[$OPENACS_SERVICE_NAME $OPENACS_SERVICE_NAME]$ <strong class="userinput"><code>/usr/local/pgsql/bin/createdb -E UNICODE <span class="replaceable"><span class="replaceable">$OPENACS_SERVICE_NAME</span></span></code></strong>
+[root root]#</pre></li><li><p><a name="create-database"></a>Create a database with the same name as our service name, <span class="replaceable"><span class="replaceable">$OPENACS_SERVICE_NAME</span></span>. The full pathname for <tt class="computeroutput">createdb</tt> needs to be used, since the pgsql directory has not been added to the $OPENACS_SERVICE_NAME bash profile.</p><pre class="screen">[root root]# <b class="userinput"><tt>su - <span class="replaceable"><span class="replaceable">$OPENACS_SERVICE_NAME</span></span></tt></b>
+[$OPENACS_SERVICE_NAME $OPENACS_SERVICE_NAME]$ <b class="userinput"><tt>/usr/local/pgsql/bin/createdb -E UNICODE <span class="replaceable"><span class="replaceable">$OPENACS_SERVICE_NAME</span></span></tt></b>
 CREATE DATABASE
 [$OPENACS_SERVICE_NAME $OPENACS_SERVICE_NAME]$
 <span class="action"><span class="action">su - <span class="replaceable"><span class="replaceable">$OPENACS_SERVICE_NAME</span></span>
-/usr/local/pgsql/bin/createdb -E UNICODE <span class="replaceable"><span class="replaceable">$OPENACS_SERVICE_NAME</span></span></span></span></pre></li><li><p>Automate daily database Vacuuming.  This is a process which cleans out discarded data from the database.  A quick way to automate vacuuming is to edit the cron file for the database user.  Recommended: <code class="computeroutput">VACUUM ANALYZE</code> every hour and <code class="computeroutput">VACUUM FULL ANALYZE</code> every day.</p><a class="indexterm" name="id1047325"></a><pre class="screen">[$OPENACS_SERVICE_NAME $OPENACS_SERVICE_NAME]$ <strong class="userinput"><code>export EDITOR=emacs;crontab -e</code></strong></pre><p>Add these lines to the file.  The vacuum command cleans up temporary structures within a PostGreSQL database, and can improve performance.  We vacuum gently every hour and completely every day.  The numbers and stars at the beginning are cron columns that specify when the program should be run - in this case, whenever the minute is 0 and the hour is 1, i.e., 1:00 am every day, and every (*) day of month, month, and day of week.  Type <code class="computeroutput">man 5 crontab</code> for more information.</p><pre class="programlisting">0 1-23 * * * /usr/local/pgsql/bin/vacuumdb --analyze <span class="replaceable"><span class="replaceable">$OPENACS_SERVICE_NAME</span></span>
+/usr/local/pgsql/bin/createdb -E UNICODE <span class="replaceable"><span class="replaceable">$OPENACS_SERVICE_NAME</span></span></span></span></pre></li><li><p>Automate daily database Vacuuming.  This is a process which cleans out discarded data from the database.  A quick way to automate vacuuming is to edit the cron file for the database user.  Recommended: <tt class="computeroutput">VACUUM ANALYZE</tt> every hour and <tt class="computeroutput">VACUUM FULL ANALYZE</tt> every day.</p><a class="indexterm" name="id2933092"></a><pre class="screen">[$OPENACS_SERVICE_NAME $OPENACS_SERVICE_NAME]$ <b class="userinput"><tt>export EDITOR=emacs;crontab -e</tt></b></pre><p>Add these lines to the file.  The vacuum command cleans up temporary structures within a PostGreSQL database, and can improve performance.  We vacuum gently every hour and completely every day.  The numbers and stars at the beginning are cron columns that specify when the program should be run - in this case, whenever the minute is 0 and the hour is 1, i.e., 1:00 am every day, and every (*) day of month, month, and day of week.  Type <tt class="computeroutput">man 5 crontab</tt> for more information.</p><pre class="programlisting">0 1-23 * * * /usr/local/pgsql/bin/vacuumdb --analyze <span class="replaceable"><span class="replaceable">$OPENACS_SERVICE_NAME</span></span>
 0 0 * * * /usr/local/pgsql/bin/vacuumdb --full --analyze <span class="replaceable"><span class="replaceable">$OPENACS_SERVICE_NAME</span></span></pre><p>Depending on your distribution, you may receive
                 email when the crontab items are executed. If you
                 don't want to receive email for those crontab items,
-                you can add <code class="computeroutput">&gt; /dev/null
-                2&gt;&amp;1</code> to the end of each crontab
+                you can add <tt class="computeroutput">&gt; /dev/null
+                2&gt;&amp;1</tt> to the end of each crontab
                 line</p></li><li><p><a href="install-full-text-search-openfts.html#install-openfts-postgres" title="Install OpenFTS prerequisites in PostgreSQL instance">Add Full Text Search Support</a> (OPTIONAL)</p></li><li><p><a name="db-setup-exit"></a> At this point the database should be ready for installing OpenACS.</p></li></ul></div></li></ul></div></li><li><a name="install-openacs-configure-aol"></a><p><b>Configure an AOLserver Service for OpenACS.�</b></p><div class="orderedlist"><ol type="a"><li><p><a name="configure-config-tcl"></a>
 	  The AOLserver architecture lets you run an arbitrary number of
 	  virtual servers. A virtual server is an HTTP service running on a
 	  specific port, e.g. port 80. In order for OpenACS to work, you
 	  need to configure a virtual server.  The Reference Platform
 	  uses a configuration file included in the OpenACS tarball,
-	  <code class="computeroutput">/var/lib/aolserver/<span class="replaceable"><span class="replaceable">$OPENACS_SERVICE_NAME</span></span>/etc/config.tcl</code>.
-	   Open it in an editor to adjust the parameters.</p><a class="indexterm" name="id1047455"></a><pre class="screen">[root root]# <strong class="userinput"><code>su - <span class="replaceable"><span class="replaceable">$OPENACS_SERVICE_NAME</span></span></code></strong>
-[$OPENACS_SERVICE_NAME $OPENACS_SERVICE_NAME]$ <strong class="userinput"><code>cd /var/lib/aolserver/<span class="replaceable"><span class="replaceable">$OPENACS_SERVICE_NAME</span></span>/etc</code></strong>
-[$OPENACS_SERVICE_NAME etc]$ <strong class="userinput"><code>emacs config.tcl</code></strong>
+	  <tt class="computeroutput">/var/lib/aolserver/<span class="replaceable"><span class="replaceable">$OPENACS_SERVICE_NAME</span></span>/etc/config.tcl</tt>.
+	   Open it in an editor to adjust the parameters.</p><a class="indexterm" name="id2976185"></a><pre class="screen">[root root]# <b class="userinput"><tt>su - <span class="replaceable"><span class="replaceable">$OPENACS_SERVICE_NAME</span></span></tt></b>
+[$OPENACS_SERVICE_NAME $OPENACS_SERVICE_NAME]$ <b class="userinput"><tt>cd /var/lib/aolserver/<span class="replaceable"><span class="replaceable">$OPENACS_SERVICE_NAME</span></span>/etc</tt></b>
+[$OPENACS_SERVICE_NAME etc]$ <b class="userinput"><tt>emacs config.tcl</tt></b>
 </pre><p>
-	  You can continue without changing any values in the file.  However, if you don't change <code class="computeroutput">address</code> to match the computer's ip address, you won't be able to browse to your server from other machines.
+	  You can continue without changing any values in the file.  However, if you don't change <tt class="computeroutput">address</tt> to match the computer's ip address, you won't be able to browse to your server from other machines.
 	</p><div class="itemizedlist"><ul type="disc"><li><p><span class="emphasis"><em>httpport</em></span> - If you want your
 		  server on a different port, enter it here.  The Reference Platform port is 8000, which is suitable for development use.  Port 80 is the standard http port - it's the port used by your browser when you enter http://yourserver.test.  So you should use port 80 for your production site.</p></li><li><p><span class="emphasis"><em>httpsport</em></span> - This is the
       port for https requests.  The Reference Platform https port is
@@ -277,50 +278,50 @@
 	</p></li><li><p><a href="install-full-text-search-openfts.html#enable-openfts" title="Enable OpenFTS in config.tcl">Enable OpenFTS Full Text Search</a> (OPTIONAL)</p></li><li><p><a href="install-ssl.html" title="Installing SSL Support for an OpenACS service">Install nsopenssl
         for SSL support.</a> (OPTIONAL)</p></li></ol></div></li><li><a name="verify-aolserver-startup"></a><p><b>Verify AOLserver startup.�</b></p><div class="orderedlist"><ol type="a"><li><p><a name="start-aolserver"></a>
 	  Kill any current running AOLserver processes and start a new
-	  one.  The recommended way to start an AOLserver process is by running the included script, <code class="computeroutput">/var/lib/aolserver/<span class="replaceable"><span class="replaceable">$OPENACS_SERVICE_NAME</span></span>/etc/daemontools/run</code>.  If you are not using the default file paths and names, you will need to edit <code class="computeroutput">run</code>.</p><p>If you want to use port 80, there are complications.  AOLserver must be root to use system ports such as
+	  one.  The recommended way to start an AOLserver process is by running the included script, <tt class="computeroutput">/var/lib/aolserver/<span class="replaceable"><span class="replaceable">$OPENACS_SERVICE_NAME</span></span>/etc/daemontools/run</tt>.  If you are not using the default file paths and names, you will need to edit <tt class="computeroutput">run</tt>.</p><p>If you want to use port 80, there are complications.  AOLserver must be root to use system ports such as
 	  80, but refuses to run as root for security reasons. So, we call the run script as root and specify a non-root user ID and
 	  Group ID which AOLserver will switch to after claiming the
 	  port.  To do so, find the UID and GID of the
 	  <span class="replaceable"><span class="replaceable">$OPENACS_SERVICE_NAME</span></span> user via
-	  <code class="computeroutput">grep <span class="replaceable"><span class="replaceable">$OPENACS_SERVICE_NAME</span></span>
-	  /etc/passwd</code> and then put those numbers into
-	  the command line via <code class="computeroutput">-u
+	  <tt class="computeroutput">grep <span class="replaceable"><span class="replaceable">$OPENACS_SERVICE_NAME</span></span>
+	  /etc/passwd</tt> and then put those numbers into
+	  the command line via <tt class="computeroutput">-u
 	  <span class="replaceable"><span class="replaceable">501</span></span> -g
-	  <span class="replaceable"><span class="replaceable">502</span></span></code>.    In AOLserver 4, you must also send a <code class="computeroutput">-b</code> flag.  Do this by editing the <code class="computeroutput">run</code> file as indicated in the comments.  </p><p>If you are root then killall will affect all OpenACS services on the machine, so if there's more than one you'll have to do <code class="computeroutput">ps -auxw | grep
-	  nsd</code> and selectively kill by job number.</p><pre class="screen">[$OPENACS_SERVICE_NAME etc]$ <strong class="userinput"><code>killall nsd</code></strong>
+	  <span class="replaceable"><span class="replaceable">502</span></span></tt>.    In AOLserver 4, you must also send a <tt class="computeroutput">-b</tt> flag.  Do this by editing the <tt class="computeroutput">run</tt> file as indicated in the comments.  </p><p>If you are root then killall will affect all OpenACS services on the machine, so if there's more than one you'll have to do <tt class="computeroutput">ps -auxw | grep
+	  nsd</tt> and selectively kill by job number.</p><pre class="screen">[$OPENACS_SERVICE_NAME etc]$ <b class="userinput"><tt>killall nsd</tt></b>
 nsd: no process killed
-[$OPENACS_SERVICE_NAME $OPENACS_SERVICE_NAME]$<strong class="userinput"><code> /usr/local/aolserver/bin/nsd-postgres -t /var/lib/aolserver/<span class="replaceable"><span class="replaceable">$OPENACS_SERVICE_NAME</span></span>/etc/config.tcl</code></strong>
+[$OPENACS_SERVICE_NAME $OPENACS_SERVICE_NAME]$<b class="userinput"><tt> /usr/local/aolserver/bin/nsd-postgres -t /var/lib/aolserver/<span class="replaceable"><span class="replaceable">$OPENACS_SERVICE_NAME</span></span>/etc/config.tcl</tt></b>
 [$OPENACS_SERVICE_NAME $OPENACS_SERVICE_NAME]$ [08/Mar/2003:18:13:29][32131.8192][-main-] Notice: nsd.tcl: starting to read config file...
 [08/Mar/2003:18:13:29][32131.8192][-main-] Notice: nsd.tcl: finished reading config file.</pre></li><li><p><a name="connect-to-aolserver"></a>
-	  Attempt to connect to the service from a web browser.  You should specify a URL like: <code class="computeroutput">http://<span class="replaceable"><span class="replaceable">yourserver.test</span></span>:8000</code></p><p>
-	  You should see a page that looks like <a href="files/openacs-start.html" target="_top">this</a>.  If you <a href="cvs-tips.html#cvs-service-import">imported your files into
+	  Attempt to connect to the service from a web browser.  You should specify a URL like: <tt class="computeroutput">http://<span class="replaceable"><span class="replaceable">yourserver.test</span></span>:8000</tt></p><p>
+	  You should see a page that looks like <a href="files/openacs-start.html" target="_top">this</a>.  If you <a href="">imported your files into
         cvs</a>, now that you know it worked you can erase the temp
-        directory with <code class="computeroutput">rm -rf /var/lib/aolserver/$OPENACS_SERVICE_NAME.orig</code>.
+        directory with <tt class="computeroutput">rm -rf /var/lib/aolserver/$OPENACS_SERVICE_NAME.orig</tt>.
 	</p><p>
 
 	  If you don't see the login page, view your error log
-	  (<code class="computeroutput">/var/lib/aolserver/<span class="replaceable"><span class="replaceable">$OPENACS_SERVICE_NAME</span></span>/log/<span class="replaceable"><span class="replaceable">$OPENACS_SERVICE_NAME</span></span>-error.log</code>)
+	  (<tt class="computeroutput">/var/lib/aolserver/<span class="replaceable"><span class="replaceable">$OPENACS_SERVICE_NAME</span></span>/log/<span class="replaceable"><span class="replaceable">$OPENACS_SERVICE_NAME</span></span>-error.log</tt>)
 	  to make sure the service is starting without any
 	  problems. The most common errors here are trying to start a
 	  port 80 server while not root, failing to connect because of
 	  a firewall, and aolserver failing to start due to
 	  permissions errors or missing files.  If you need to make
 	  changes, don't forget to kill any running servers with
-	  <strong class="userinput"><code>killall nsd</code></strong>.
+	  <b class="userinput"><tt>killall nsd</tt></b>.
 	</p></li><li><p><a href="install-openacs-keepalive.html" title="Starting and Stopping an OpenACS instance.">Automate
         AOLserver keepalive</a> (OPTIONAL)</p></li></ol></div></li><li><a name="install-openacs-using-installer"></a><p><b>Configure a Service with the OpenACS
           Installer.�</b>
 	  Now that you've got AOLserver up and running, let's install OpenACS
-	  5.2.3rc1.
+	  5.4.0.
 	</p><div class="itemizedlist"><ul type="disc"><li><p> 
 		  You should see a page from the webserver titled
-		  <code class="computeroutput">OpenACS Installation:
-		  Welcome</code>. You will be warned if your version of
+		  <tt class="computeroutput">OpenACS Installation:
+		  Welcome</tt>. You will be warned if your version of
 		  the database driver is out of date, if AOLserver cannot connect
 		  to the database, if any modules are missing or out-of-date, or if
 		  there are any problems with filesystem permissions on the server
 		  side. But if everything is fine, you can click
-		  <code class="computeroutput">Next</code> to proceed to load the
+		  <tt class="computeroutput">Next</tt> to proceed to load the
 		  OpenACS Kernel data model.  
 		</p></li><li><p>
 
@@ -333,42 +334,42 @@
 Loading package .info files ... this will take a few minutes</pre><p>
 
 		  This will really take a few minutes. Have faith! Finally, another
-		  <code class="computeroutput">Next</code> button will appear at the
+		  <tt class="computeroutput">Next</tt> button will appear at the
 		  bottom - click it.
 
 		</p></li><li><p> 		  
 
 		  The following page shows the results of loading the core package
 		  data models. You should see positive results for each of the
 		  previously selected packages, but watch out for any
-		  errors. Eventually, the page will display "Generating secret
-		  tokens" and then "Done"- click
-		  <code class="computeroutput">Next</code>.
+		  errors. Eventually, the page will display &quot;Generating secret
+		  tokens&quot; and then &quot;Done&quot;- click
+		  <tt class="computeroutput">Next</tt>.
 
 		</p></li><li><p>
 
-		  You should see a page, "OpenACS Installation: Create
-		  Administrator" with form fields to define the OpenACS site
+		  You should see a page, &quot;OpenACS Installation: Create
+		  Administrator&quot; with form fields to define the OpenACS site
 		  administrator. Fill out the fields as appropriate, and click
-		  <code class="computeroutput">Create User</code>.
+		  <tt class="computeroutput">Create User</tt>.
 
 		</p></li><li><p>
-		  You should see a page, "OpenACS Installation: Set System
-		  Information" allowing you to name your service. Fill out the
-		  fields as appropriate, and click <code class="computeroutput">Set System
-		  Information</code> 
+		  You should see a page, &quot;OpenACS Installation: Set System
+		  Information&quot; allowing you to name your service. Fill out the
+		  fields as appropriate, and click <tt class="computeroutput">Set System
+		  Information</tt> 
 		</p></li><li><p> 
-		  You'll see the final Installer page, "OpenACS
-		  Installation: Complete." It will tell you that the server is
+		  You'll see the final Installer page, &quot;OpenACS
+		  Installation: Complete.&quot; It will tell you that the server is
 		  being restarted; note that unless you already set up a way for
 		  AOLserver to restart itself (ie. <a href="install-openacs-keepalive.html" title="Starting and Stopping an OpenACS instance.">inittab or daemontools</a>),
 		  you'll need to manually restart your service.
-		</p><pre class="screen">[$OPENACS_SERVICE_NAME $OPENACS_SERVICE_NAME]$ <strong class="userinput"><code>/usr/local/aolserver/bin/nsd-postgres -t /var/lib/aolserver/<span class="replaceable"><span class="replaceable">$OPENACS_SERVICE_NAME</span></span>/config.tcl</code></strong></pre></li><li><p> 
+		</p><pre class="screen">[$OPENACS_SERVICE_NAME $OPENACS_SERVICE_NAME]$ <b class="userinput"><tt>/usr/local/aolserver/bin/nsd-postgres -t /var/lib/aolserver/<span class="replaceable"><span class="replaceable">$OPENACS_SERVICE_NAME</span></span>/config.tcl</tt></b></pre></li><li><p> 
 		  Give the server a few minutes to start up. Then
 		  reload the final page above. You should see the front page, with
 		  an area to login near the upper right.  Congratulations, OpenACS
-		  5.2.3rc1 is now up and running!  
-		</p></li></ul></div></li></ol></div></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="install-from-cvs"></a>Installation Option 3: Install from CVS</h3></div></div></div><p>If you want to track fresh code developments inbetween releases, or you are an OpenACS core developer, you may want to install from CVS.  This is identical to Option 2 except that you get the files from CVS instead of the tarball: <a href="http://openacs.org/4/checkout" target="_top">CVS Checkout Instructions</a>.  So, instead of <code class="computeroutput"><strong class="userinput"><code>tar xzf /var/tmp/openacs-5.2.3rc1.tgz</code></strong></code>, <code class="computeroutput"><strong class="userinput"><code>cvs -z3 -d :pserver:anonymous@openacs.org:/cvsroot co acs-core</code></strong></code>.</p></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="install-next-steps"></a>Next Steps</h3></div></div></div><div class="itemizedlist"><ul type="disc"><li><p>Use daemontools <code class="computeroutput">supervise</code> and <code class="computeroutput">svc</code>, or <code class="computeroutput">inittab</code>, to <a href="install-openacs-inittab.html" title="AOLserver keepalive with inittab">automate server startup and shutdown.</a></p></li><li><p>Install Full Text Search (OPTIONAL).  If you have <a href="install-full-text-search-openfts.html#install-openfts" title="Install OpenFTS module">installed OpenFTS</a> and enabled
+		  5.4.0 is now up and running!  
+		</p></li></ul></div></li></ol></div></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="install-from-cvs"></a>Installation Option 3: Install from CVS</h3></div></div><div></div></div><p>If you want to track fresh code developments inbetween releases, or you are an OpenACS core developer, you may want to install from CVS.  This is identical to Option 2 except that you get the files from CVS instead of the tarball: <a href="http://openacs.org/4/checkout" target="_top">CVS Checkout Instructions</a>.  So, instead of <tt class="computeroutput"><b class="userinput"><tt>tar xzf /var/tmp/openacs-5.4.0.tgz</tt></b></tt>, <tt class="computeroutput"><b class="userinput"><tt>cvs -z3 -d :pserver:anonymous@openacs.org:/cvsroot co acs-core</tt></b></tt>.</p></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="install-next-steps"></a>Next Steps</h3></div></div><div></div></div><div class="itemizedlist"><ul type="disc"><li><p>Use daemontools <tt class="computeroutput">supervise</tt> and <tt class="computeroutput">svc</tt>, or <tt class="computeroutput">inittab</tt>, to <a href="install-openacs-inittab.html" title="AOLserver keepalive with inittab">automate server startup and shutdown.</a></p></li><li><p>Install Full Text Search (OPTIONAL).  If you have <a href="install-full-text-search-openfts.html#install-openfts" title="Install OpenFTS module">installed OpenFTS</a> and enabled
         OpenFTS, you can now <a href="install-full-text-search-tsearch2.html#install-fts-engine" title="Install Full Text Search Engine Package in OpenACS">install</a> the OpenFTS Driver package and
         Full Text Search Engine package in the OpenACS service.</p></li><li><p>This is a good time to make a <a href="snapshot-backup.html" title="Manual backup and recovery">backup</a> of your service.  If this is a
     production site, you should set up <a href="automated-backup.html" title="Automated Backup">automatic nightly backups</a>.</p></li><li><p>If you want traffic reports, <a href="analog-setup.html" title="Set up Log Analysis Reports">set up analog</a> or another log
@@ -379,8 +380,8 @@
 	database while logged in as the service user.  They do not
 	directly affect the service's run-time connection with the
 	database, because those environmental variables are set by the
-	wrapper scripts nsd-postgres and nsd-oracle.</p><pre class="screen">[root root]# <strong class="userinput"><code>su - <span class="replaceable"><span class="replaceable">$OPENACS_SERVICE_NAME</span></span></code></strong>
-[$OPENACS_SERVICE_NAME $OPENACS_SERVICE_NAME]$ <strong class="userinput"><code>emacs .bashrc</code></strong></pre><p>Put in the appropriate lines for the database you are running.  If you will use both databases, put in both sets of lines.</p><div class="itemizedlist"><ul type="circle"><li><p>PostgreSQL:</p><pre class="programlisting">export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/pgsql/lib
+	wrapper scripts nsd-postgres and nsd-oracle.</p><pre class="screen">[root root]# <b class="userinput"><tt>su - <span class="replaceable"><span class="replaceable">$OPENACS_SERVICE_NAME</span></span></tt></b>
+[$OPENACS_SERVICE_NAME $OPENACS_SERVICE_NAME]$ <b class="userinput"><tt>emacs .bashrc</tt></b></pre><p>Put in the appropriate lines for the database you are running.  If you will use both databases, put in both sets of lines.</p><div class="itemizedlist"><ul type="circle"><li><p>PostgreSQL:</p><pre class="programlisting">export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/pgsql/lib
 export PATH=$PATH:/usr/local/pgsql/bin</pre></li><li><p>Oracle.  These environment variables are specific for a local Oracle
       installation communicating via IPC. If you are connecting to a remote
       Oracle installation, you'll need to adjust these appropriately. Also,
@@ -392,10 +393,10 @@
 export ORACLE_SID=ora8
 export ORACLE_TERM=vt100
 export ORA_NLS33=$ORACLE_HOME/ocommon/nls/admin/data</pre></li></ul></div><p>Test this by logging out and back in as
-	<code class="computeroutput"><span class="replaceable"><span class="replaceable">$OPENACS_SERVICE_NAME</span></span></code> and checking the paths.</p><pre class="screen">[$OPENACS_SERVICE_NAME $OPENACS_SERVICE_NAME]$ <strong class="userinput"><code>exit</code></strong>
+	<tt class="computeroutput"><span class="replaceable"><span class="replaceable">$OPENACS_SERVICE_NAME</span></span></tt> and checking the paths.</p><pre class="screen">[$OPENACS_SERVICE_NAME $OPENACS_SERVICE_NAME]$ <b class="userinput"><tt>exit</tt></b>
 logout
-[root src]# <strong class="userinput"><code>su - <strong class="userinput"><code><span class="replaceable"><span class="replaceable">$OPENACS_SERVICE_NAME</span></span></code></strong></code></strong>
-[$OPENACS_SERVICE_NAME ~]$ <strong class="userinput"><code>env</code></strong>
+[root src]# <b class="userinput"><tt>su - <b class="userinput"><tt><span class="replaceable"><span class="replaceable">$OPENACS_SERVICE_NAME</span></span></tt></b></tt></b>
+[$OPENACS_SERVICE_NAME ~]$ <b class="userinput"><tt>env</tt></b>
 </pre><div class="itemizedlist"><ul type="circle"><li><p>For PostgreSQL, you should see:</p><pre class="screen">
 LD_LIBRARY_PATH=:/usr/local/pgsql/lib
 PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin:/usr/bin/X11:/usr/X11R6/bin:\
@@ -406,4 +407,4 @@
 LD_LIBRARY_PATH=/ora8/m01/app/oracle/product/8.1.7/lib:/lib:/usr/lib
 ORACLE_SID=ora8
 ORACLE_TERM=vt100
-ORA_NLS33=$ORACLE_HOME/ocommon/nls/admin/data</pre></li></ul></div></li><li><p>Test your <a href="backup-recovery.html" title="Chapter�8.�Backup and Recovery">backup and recovery</a> procedure.</p></li><li><p>Set up <a href="uptime.html" title="External uptime validation">the section called &#8220;External uptime validation&#8221;</a>.</p></li></ul></div><div class="cvstag">($Id$)</div></div></div><div class="navfooter"><hr><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="aolserver4.html">Prev</a> </td><td width="20%" align="center"><a accesskey="h" href="index.html">Home</a></td><td width="40%" align="right"> <a accesskey="n" href="win2k-installation.html">Next</a></td></tr><tr><td width="40%" align="left">Install AOLserver 4 </td><td width="20%" align="center"><a accesskey="u" href="complete-install.html">Up</a></td><td width="40%" align="right"> OpenACS Installation Guide for Windows2000</td></tr></table><hr><address><a href="mailto:docs@openacs.org">docs@openacs.org</a></address></div><a name="comments"></a><center><a href="http://openacs.org/doc/current/openacs.html#comments">View comments on this page at openacs.org</a></center></body></html>
+ORA_NLS33=$ORACLE_HOME/ocommon/nls/admin/data</pre></li></ul></div></li><li><p>Test your <a href="backup-recovery.html" title="Chapter�8.�Backup and Recovery">backup and recovery</a> procedure.</p></li><li><p>Set up <a href="uptime.html" title="External uptime validation">Section�, &#8220;External uptime validation&#8221;</a>.</p></li></ul></div><div class="cvstag">($Id$)</div></div></div><div class="navfooter"><hr><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="aolserver4.html">Prev</a> </td><td width="20%" align="center"><a accesskey="h" href="index.html">Home</a></td><td width="40%" align="right"> <a accesskey="n" href="win2k-installation.html">Next</a></td></tr><tr><td width="40%" align="left">Install AOLserver 4 </td><td width="20%" align="center"><a accesskey="u" href="complete-install.html">Up</a></td><td width="40%" align="right"> OpenACS Installation Guide for Windows2000</td></tr></table><hr><address><a href="mailto:docs@openacs.org">docs@openacs.org</a></address></div><a name="comments"></a><center><a href="http://openacs.org/doc/current/openacs.html#comments">View comments on this page at openacs.org</a></center></body></html>
Index: openacs-4/packages/acs-core-docs/www/oracle.html
===================================================================
RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/oracle.html,v
diff -u -r1.42 -r1.42.4.1
--- openacs-4/packages/acs-core-docs/www/oracle.html	17 Jul 2006 05:38:31 -0000	1.42
+++ openacs-4/packages/acs-core-docs/www/oracle.html	3 Feb 2008 12:07:40 -0000	1.42.4.1
@@ -1,12 +1,13 @@
-<html><head><meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"><title>Install Oracle 8.1.7</title><meta name="generator" content="DocBook XSL Stylesheets V1.70.1"><link rel="home" href="index.html" title="OpenACS Core Documentation"><link rel="up" href="complete-install.html" title="Chapter�3.�Complete Installation"><link rel="previous" href="unix-installation.html" title="Install a Unix-like system and supporting software"><link rel="next" href="postgres.html" title="Install PostgreSQL"><link rel="stylesheet" href="openacs.css" type="text/css"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><a href="http://openacs.org"><img src="/doc/images/alex.jpg" border="0" alt="Alex logo"></a><table width="100%" summary="Navigation header" border="0"><tr><td width="20%" align="left"><a accesskey="p" href="unix-installation.html">Prev</a> </td><th width="60%" align="center">Chapter�3.�Complete Installation</th><td width="20%" align="right"> <a accesskey="n" href="postgres.html">Next</a></td></tr></table><hr></div><div class="sect1" lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="oracle"></a>Install Oracle 8.1.7</h2></div></div></div><div class="authorblurb"><p>By <a href="mailto:vinod@kurup.com" target="_top">Vinod Kurup</a></p>
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html><head><meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"><title>Install Oracle 8.1.7</title><meta name="generator" content="DocBook XSL Stylesheets V1.60.1"><link rel="home" href="index.html" title="OpenACS Core Documentation"><link rel="up" href="complete-install.html" title="Chapter�3.�Complete Installation"><link rel="previous" href="unix-installation.html" title="Install a Unix-like system and supporting software"><link rel="next" href="postgres.html" title="Install PostgreSQL"><link rel="stylesheet" href="openacs.css" type="text/css"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><a href="http://openacs.org"><img src="/doc/images/alex.jpg" border="0" alt="Alex logo"></a><table width="100%" summary="Navigation header" border="0"><tr><td width="20%" align="left"><a accesskey="p" href="unix-installation.html">Prev</a> </td><th width="60%" align="center">Chapter�3.�Complete Installation</th><td width="20%" align="right"> <a accesskey="n" href="postgres.html">Next</a></td></tr></table><hr></div><div class="sect1" lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="oracle"></a>Install Oracle 8.1.7</h2></div></div><div></div></div><div class="authorblurb"><p>By <a href="mailto:vinod@kurup.com" target="_top">Vinod Kurup</a></p>
           OpenACS docs are written by the named authors, and may be edited
           by OpenACS documentation staff.
         </div><p>
     If you are installing PostGreSQL instead of Oracle, skip this section.
   </p><p>
-    OpenACS 5.2.3rc1 will install with Oracle 9i but has not been extensively tested so may still have bugs or tuning issues.  See <a href="http://www.piskorski.com/docs/oracle.html" target="_top">Andrew Piskorski's Oracle 9i notes</a> for guidance.
+    OpenACS 5.4.0 will install with Oracle 9i but has not been extensively tested so may still have bugs or tuning issues.  See <a href="http://www.piskorski.com/docs/oracle.html" target="_top">Andrew Piskorski's Oracle 9i notes</a> for guidance.
   </p><p>
-      This installation guide attempts to present all of the information necessary to complete an OpenACS installation.  We try hard to make all of the steps possible in one pass, rather than having a step which amounts to "go away and develop a profound understanding of software X and then come back and, in 99% of all cases, type these two lines."  The exception to our rule is Oracle production systems.  This page describes a set of steps to get a working Oracle development server, but it is <span class="strong"><strong>unsuitable for production systems</strong></span>.  If you will be using OpenACS on Oracle in a production environment, you will experience many problems unless you develop a basic understanding of Oracle which is outside the scope of this document.  T
+      This installation guide attempts to present all of the information necessary to complete an OpenACS installation.  We try hard to make all of the steps possible in one pass, rather than having a step which amounts to &quot;go away and develop a profound understanding of software X and then come back and, in 99% of all cases, type these two lines.&quot;  The exception to our rule is Oracle production systems.  This page describes a set of steps to get a working Oracle development server, but it is <span class="strong">unsuitable for production systems</span>.  If you will be using OpenACS on Oracle in a production environment, you will experience many problems unless you develop a basic understanding of Oracle which is outside the scope of this document.  T
     </p><p>
       
       This document assumes that you'll be installing Oracle on the same
@@ -16,7 +17,7 @@
     </p><p>
       
     Useful links to find help on how to set up Oracle under Linux are:</p><div class="itemizedlist"><ul type="disc"><li><p><a href="http://dizwell.com/html/oracle_on_linux.html" target="_top">Dizwell - Howard
-        Roger's company - on Oracle on Linux</a></p></li><li><p><a href="http://puschitz.com/" target="_top">Werner Puschitz - Oracle on Red Hat Linux</a></p></li><li><p><a href="http://www.suse.com/us/business/certifications/certified_software/oracle/" target="_top">SuSE/Oracle Support matrix</a></p></li></ul></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="install-oracle-getit"></a>Acquire Oracle</h3></div></div></div><p>
+        Roger's company - on Oracle on Linux</a></p></li><li><p><a href="http://puschitz.com/" target="_top">Werner Puschitz - Oracle on Red Hat Linux</a></p></li><li><p><a href="http://www.suse.com/us/business/certifications/certified_software/oracle/" target="_top">SuSE/Oracle Support matrix</a></p></li></ul></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="install-oracle-getit"></a>Acquire Oracle</h3></div></div><div></div></div><p>
       Production Oracle systems should run on certified platforms.  Follow the
       <a href="http://metalink.oracle.com/metalink/plsql/ml2_documents.showDocument?p_database_id=NOT&amp;p_id=223718.1" target="_top">metalink
       note 223718.1</a>to find certified platforms. If you don't have
@@ -46,7 +47,7 @@
       To be able to download a patchset, you need a (to-pay-for) account on <a href="metalink.oracle.com" target="_top">Metalink</a>. You may find the appropriate
       patchset by following <a href="http://openacs.org/forums/message-view?message_id=33004" target="_top">Andrew's
       suggestion</a>.
-    </p></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="install-oracle-keepinmind"></a>Things to Keep in Mind</h3></div></div></div><p>
+    </p></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="install-oracle-keepinmind"></a>Things to Keep in Mind</h3></div></div><div></div></div><p>
       Oracle is very well-documented software, the <a href="http://tahiti.oracle.com" target="_top">online documentation</a> comes with
       printable PDFs and full-text search. Altogether there is more than
       20.000 pages of documentation, so do not expect to understand Oracle
@@ -66,7 +67,7 @@
       of passwords, we advise you to follow these defaults unless you know
       what you are doing.  Subsequent documents will expect that you used
       the defaults, so a change made here will necessitate further changes
-      later. For a guide to the defaults, please see <a href="oracle.html#install-oracle-defaults" title="Defaults">the section called &#8220;Defaults&#8221;</a>.
+      later. For a guide to the defaults, please see <a href="oracle.html#install-oracle-defaults" title="Defaults">Section�, &#8220;Defaults&#8221;</a>.
 
     </p><p>
       In order for OpenACS to work properly you need to set the environment
@@ -82,25 +83,25 @@
 
 umask 022</pre><pre class="programlisting">
 open_cursors = 500</pre><pre class="programlisting">
-nls_date_format = "YYYY-MM-DD"</pre><p>
+nls_date_format = &quot;YYYY-MM-DD&quot;</pre><p>
 
       For additional resources/documentation, please see this <a href="http://openacs.org/forums/message-view?message_id=28829" target="_top">thread</a>
       and <a href="http://openacs.org/forums/message-view?message_id=67108" target="_top">Andrew
       Piskorski's mini-guide</a>.
 
-    </p></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="install-oracle-preinstall"></a>Pre-Installation Tasks</h3></div></div></div><p>
+    </p></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="install-oracle-preinstall"></a>Pre-Installation Tasks</h3></div></div><div></div></div><p>
 
       Though Oracle 8.1.7 has an automated installer, we still need to
       perform several manual, administrative tasks before we can launch
       it. You must perform all of these steps as the
-      <code class="computeroutput">root</code> user. We recommend entering the
-      X window system as a normal user and then doing a <code class="computeroutput">su
-      -</code>. This command gives you full root access.
+      <tt class="computeroutput">root</tt> user. We recommend entering the
+      X window system as a normal user and then doing a <tt class="computeroutput">su
+      -</tt>. This command gives you full root access.
 
     </p><div class="itemizedlist"><ul type="disc"><li><p>
 
           Login as a non-root user and start X by typing
-          <code class="computeroutput">startx</code>
+          <tt class="computeroutput">startx</tt>
           
           </p><pre class="programlisting">
 [joeuser ~]$ startx</pre><p>
@@ -116,12 +117,12 @@
 
         </p></li><li><p>
 
-          Create and setup the <code class="computeroutput">oracle</code>
-          group and <code class="computeroutput">oracle</code> account
+          Create and setup the <tt class="computeroutput">oracle</tt>
+          group and <tt class="computeroutput">oracle</tt> account
 
         </p><p>
 
-          We need to create a user <code class="computeroutput">oracle</code>,
+          We need to create a user <tt class="computeroutput">oracle</tt>,
           which is used to install the product, as well as starting and
           stopping the database.
 
@@ -139,13 +140,13 @@
 
           Setup the installation location for Oracle. While Oracle can
           reside in a variety of places in the file system, OpenACS has
-          adopted <code class="computeroutput">/ora8</code> as the base
+          adopted <tt class="computeroutput">/ora8</tt> as the base
           directory.
 
         </p><p>
 
-          <span class="strong"><strong>Note:</strong></span> the Oracle install needs
-          about 1 GB free on <code class="computeroutput">/ora8</code> to
+          <span class="strong">Note:</span> the Oracle install needs
+          about 1 GB free on <tt class="computeroutput">/ora8</tt> to
           install successfully.
 
         </p><pre class="programlisting">
@@ -155,22 +156,22 @@
 root:/ora8# chown -R oracle.dba /ora8
 root:/ora8# exit</pre></li><li><p>
 
-          Set up the <code class="computeroutput">oracle</code> user's
+          Set up the <tt class="computeroutput">oracle</tt> user's
           environment
 
         </p><div class="itemizedlist"><ul type="circle"><li><p> 
 
               Log in as the user
-              <code class="computeroutput">oracle</code> by typing the
+              <tt class="computeroutput">oracle</tt> by typing the
               following:
 
             </p><pre class="programlisting">
 [joeuser ~]$ su - oracle
 Password: ********</pre></li><li><p>
 
               Use a text editor to edit the
-              <code class="computeroutput">.bash_profile</code> file in the
-              <code class="computeroutput">oracle</code> account home
+              <tt class="computeroutput">.bash_profile</tt> file in the
+              <tt class="computeroutput">oracle</tt> account home
               directory. 
 
             </p><pre class="programlisting">
@@ -179,7 +180,7 @@
               You may get this error trying to start emacs: 
 
             </p><pre class="programlisting">
-Xlib: connection to ":0.0" refused by server
+Xlib: connection to &quot;:0.0&quot; refused by server
 Xlib: Client is not authorized to connect to Server
 emacs: Cannot connect to X server :0.
 Check the DISPLAY environment variable or use `-d'.
@@ -204,7 +205,7 @@
 
               Add the following lines (substituting your
               Oracle version number as needed) to
-              <code class="computeroutput">.bash_profile</code>:
+              <tt class="computeroutput">.bash_profile</tt>:
 
             </p><pre class="programlisting">
 export ORACLE_BASE=/ora8/m01/app/oracle
@@ -217,14 +218,14 @@
 
 umask 022</pre><p>
 
-              Save the file by typing <code class="computeroutput">CTRL-X
-                CTRL-S</code> and then exit by typing
-                <code class="computeroutput">CTRL-X
-                CTRL-C</code>. Alternatively, use the menus.
+              Save the file by typing <tt class="computeroutput">CTRL-X
+                CTRL-S</tt> and then exit by typing
+                <tt class="computeroutput">CTRL-X
+                CTRL-C</tt>. Alternatively, use the menus.
 
             </p></li></ul></div><p>
 
-          Make sure that you do <span class="strong"><strong>not</strong></span> add
+          Make sure that you do <span class="strong">not</span> add
           any lines like the following
 
         </p><pre class="programlisting">
@@ -242,11 +243,11 @@
         </p><pre class="programlisting">
 [oracle ~]$ exit</pre></li><li><p> 
 
-          Log back in as <code class="computeroutput">oracle</code> and double
+          Log back in as <tt class="computeroutput">oracle</tt> and double
           check that your environment variables are as intended. The
-          <code class="computeroutput">env</code> command lists all of the
+          <tt class="computeroutput">env</tt> command lists all of the
           variables that are set in your environment, and
-          <code class="computeroutput">grep</code> shows you just the lines
+          <tt class="computeroutput">grep</tt> shows you just the lines
           you want (those with ORA in it).
 
         </p><pre class="programlisting">
@@ -263,47 +264,47 @@
 ORA_NLS33=/ora8/m01/app/oracle/product/8.1.7/ocommon/nls/admin/data</pre><p>
 
           If not, try adding the files to
-          <code class="computeroutput">~/.bashrc</code> instead of
-          <code class="computeroutput">.bash_profile</code>. Then logout and
+          <tt class="computeroutput">~/.bashrc</tt> instead of
+          <tt class="computeroutput">.bash_profile</tt>. Then logout and
           log back in again. Also, be certain you are doing
-          <code class="computeroutput">su - oracle</code> and not just
-          <code class="computeroutput">su oracle</code>. The
-          <code class="computeroutput">-</code> means that
-          <code class="computeroutput">.bashrc</code> and
-          <code class="computeroutput">.bash_profile</code> will be
+          <tt class="computeroutput">su - oracle</tt> and not just
+          <tt class="computeroutput">su oracle</tt>. The
+          <tt class="computeroutput">-</tt> means that
+          <tt class="computeroutput">.bashrc</tt> and
+          <tt class="computeroutput">.bash_profile</tt> will be
           evaluated.
 
         </p><p>
 
-          Make sure that <code class="computeroutput">/bin</code>,
-          <code class="computeroutput">/usr/bin</code>, and
-          <code class="computeroutput">/usr/local/bin</code> are in your path
+          Make sure that <tt class="computeroutput">/bin</tt>,
+          <tt class="computeroutput">/usr/bin</tt>, and
+          <tt class="computeroutput">/usr/local/bin</tt> are in your path
           by typing:
 
         </p><pre class="programlisting">
 [oracle ~]$ echo $PATH
 /bin:/usr/bin:/usr/local/bin:/usr/bin/X11:/usr/X11R6/bin:/home/oracle/bin:/ora8/m01/app/oracle/product/8.1.7/bin</pre><p>
 
           If they are not, then add them to the
-          <code class="computeroutput">.bash_profile</code> by changing the
+          <tt class="computeroutput">.bash_profile</tt> by changing the
           PATH statement above to
-          <code class="computeroutput">PATH=$PATH:/usr/local/bin:$ORACLE_HOME/bin</code>
+          <tt class="computeroutput">PATH=$PATH:/usr/local/bin:$ORACLE_HOME/bin</tt>
 
-        </p></li></ul></div></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="install-oracle-install"></a>Installing Oracle 8.1.7 Server</h3></div></div></div><div class="itemizedlist"><ul type="disc"><li><p>
-          Log in as <code class="computeroutput">oracle</code> and
+        </p></li></ul></div></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="install-oracle-install"></a>Installing Oracle 8.1.7 Server</h3></div></div><div></div></div><div class="itemizedlist"><ul type="disc"><li><p>
+          Log in as <tt class="computeroutput">oracle</tt> and
           start X if not already running. Start a new terminal:
         </p><pre class="programlisting">
 [joeuser ~]$ xhost +localhost
 [joeuser ~]$ su - oracle
 Password: **********
 [oracle ~]$ export DISPLAY=localhost:0.0</pre></li><li><p>
 
-          Find the <code class="computeroutput">runInstaller</code> script
+          Find the <tt class="computeroutput">runInstaller</tt> script
 
         </p><div class="itemizedlist"><ul type="circle"><li><p>
 
               If you are installing Oracle from a CD-ROM, it is located in
-              the <code class="computeroutput">install/linux</code> path from
+              the <tt class="computeroutput">install/linux</tt> path from
               the cd-rom mount point
 
             </p><pre class="programlisting">
@@ -313,7 +314,7 @@
 [oracle ~]$ cd /mnt/cdrom</pre></li><li><p>
 
               If you are installing from the tarball, the install script is
-              located in the <code class="computeroutput">Oracle8iR2</code>
+              located in the <tt class="computeroutput">Oracle8iR2</tt>
               directory that was created when you expanded the archive.
 
             </p><pre class="programlisting">
@@ -326,7 +327,7 @@
 doc  index.htm  install  runInstaller  stage  starterdb</pre><p>
 
           If you don't see
-          <code class="computeroutput">runInstaller</code>, you are in the
+          <tt class="computeroutput">runInstaller</tt>, you are in the
           wrong directory.
 
         </p></li><li><p>
@@ -338,72 +339,72 @@
 
           A window will open that welcomes you to the 'Oracle Universal
           Installer' (OUI). Click on
-          "<code class="computeroutput">Next</code>"
+          &quot;<tt class="computeroutput">Next</tt>&quot;
 
         </p><div class="note" style="margin-left: 0.5in; margin-right: 0.5in;"><h3 class="title">Note</h3><p>
             Some people have had trouble with this step on RedHat 7.3 and 8.0. If
             so, try the following steps before calling
-            <span><strong class="command">./runInstaller</strong></span>:
+            <b class="command">./runInstaller</b>:
 
           </p><div class="orderedlist"><ol type="1"><li><p>
 
                 Execute the following command:
-                <span><strong class="command">/usr/i386-glibc21-linux/bin/i386-glibc21-linux-env.sh</strong></span>
+                <b class="command">/usr/i386-glibc21-linux/bin/i386-glibc21-linux-env.sh</b>
 
               </p></li><li><p>
 
-                Type <span><strong class="command">export LD_ASSUME_KERNEL=2.2.5</strong></span>
+                Type <b class="command">export LD_ASSUME_KERNEL=2.2.5</b>
 
               </p></li></ol></div></div></li><li><p>
 
-          The "File Locations" screen in the OUI: 
+          The &quot;File Locations&quot; screen in the OUI: 
 
         </p><div class="itemizedlist"><ul type="circle"><li><p> 
 
-              "Source" path should have been
-              prefilled with "(wherever you mounted the
-              CDROM)<code class="computeroutput">/stage/products.jar</code>"
+              &quot;Source&quot; path should have been
+              prefilled with &quot;(wherever you mounted the
+              CDROM)<tt class="computeroutput">/stage/products.jar</tt>&quot;
 
             </p></li><li><p> 
 
-              "destination" path says
-              "<code class="computeroutput">/ora8/m01/app/oracle/product/8.1.7</code>"
+              &quot;destination&quot; path says
+              &quot;<tt class="computeroutput">/ora8/m01/app/oracle/product/8.1.7</tt>&quot;
 
             </p><p>
 
               If the destination is not correct it is because your
               environment variables are not set properly. Make sure you
-              logged on as <code class="computeroutput">oracle</code> using
-              <code class="computeroutput">su - oracle</code>. If so, edit the
-              <code class="computeroutput">~/.bash_profile</code> as you
-              did in <a href="oracle.html#install-oracle-preinstall" title="Pre-Installation Tasks">the section called &#8220;Pre-Installation Tasks&#8221;</a>
+              logged on as <tt class="computeroutput">oracle</tt> using
+              <tt class="computeroutput">su - oracle</tt>. If so, edit the
+              <tt class="computeroutput">~/.bash_profile</tt> as you
+              did in <a href="oracle.html#install-oracle-preinstall" title="Pre-Installation Tasks">Section�, &#8220;Pre-Installation Tasks&#8221;</a>
 
             </p></li><li><p>
 
-              Click "Next" (a pop up window will display Loading
+              Click &quot;Next&quot; (a pop up window will display Loading
               Product information).
 
             </p></li></ul></div></li><li><p>
 
-          The "Unix Group Name" screen in the OUI:
+          The &quot;Unix Group Name&quot; screen in the OUI:
 
         </p><div class="itemizedlist"><ul type="circle"><li><p> 
 
               The Unix Group name needs to be set to
-              '<code class="computeroutput">oinstall</code>' ( we made
+              '<tt class="computeroutput">oinstall</tt>' ( we made
               this Unix group earlier ).
 
             </p></li><li><p>
 
-              Click "Next"
+              Click &quot;Next&quot;
 
             </p></li><li><p>
               A popup window appears instantly, requesting you
               to run a script as root:
-            </p></li><li><div class="itemizedlist"><ul type="square"><li><p>
+            </p></li><li><div class="itemizedlist"><ul type="disc"><li><p>
                 Debian users need to link
-                <code class="computeroutput">/bin/awk</code> to
-                <code class="computeroutput">/usr/bin/awk</code> before
+                <tt class="computeroutput">/bin/awk</tt> to
+                <tt class="computeroutput">/usr/bin/awk</tt> before
                 running the script below
               </p><pre class="programlisting">
 [joueser ~]$ su -
@@ -418,119 +419,119 @@
 [root ~]# mkdir -p /usr/local/java
 [root ~]# exit
 [joeuser ~]$ exit</pre></li><li><p>
-          Click "Retry"
+          Click &quot;Retry&quot;
         </p></li></ul></div></li><li><p>
-        The "Available Products" screen in the OUI:
+        The &quot;Available Products&quot; screen in the OUI:
       </p><div class="itemizedlist"><ul type="circle"><li><p>
-            Select "Oracle 8i Enterprise Edition 8.1.7.1.0"
+            Select &quot;Oracle 8i Enterprise Edition 8.1.7.1.0&quot;
         </p></li><li><p>
-            Click "Next"
+            Click &quot;Next&quot;
           </p></li></ul></div></li><li><p>
-        The "Installation Types" screen
+        The &quot;Installation Types&quot; screen
       </p><div class="itemizedlist"><ul type="circle"><li><p>
-            Select the "Custom" installation type.
+            Select the &quot;Custom&quot; installation type.
           </p></li><li><p>
-            Click "Next"
+            Click &quot;Next&quot;
           </p></li></ul></div></li><li><p>
-        The "Available Product Components" screen
+        The &quot;Available Product Components&quot; screen
       </p><div class="itemizedlist"><ul type="circle"><li><p>
-            In addition to the defaults, make sure that "Oracle SQLJ
-            8.1.7.0," "Oracle Protocol Support 8.1.7.0.0," and
-            "Linux Documentation 8.1.7.0.0" are also checked.
+            In addition to the defaults, make sure that &quot;Oracle SQLJ
+            8.1.7.0,&quot; &quot;Oracle Protocol Support 8.1.7.0.0,&quot; and
+            &quot;Linux Documentation 8.1.7.0.0&quot; are also checked.
           </p></li><li><p>
-            Click "Next"
+            Click &quot;Next&quot;
           </p></li><li><p>
             A progress bar will appear for about 1 minute.
           </p></li></ul></div></li><li><p>
-        The "Component Locations" screen in the OUI
+        The &quot;Component Locations&quot; screen in the OUI
       </p><div class="itemizedlist"><ul type="circle"><li><p> 
-            Click on the "Java Runtime Environment 1.1.8" It
+            Click on the &quot;Java Runtime Environment 1.1.8&quot; It
             should have the path
-            "<code class="computeroutput">/ora8/m01/app/oracle/jre/1.1.8</code>"
+            &quot;<tt class="computeroutput">/ora8/m01/app/oracle/jre/1.1.8</tt>&quot;
           </p></li><li><p>
-            Click "Next"
+            Click &quot;Next&quot;
           </p></li><li><p>
             A progress bar will appear for about 1 minute.
           </p></li></ul></div></li><li><p>
-        The "Privileged Operation System Groups" screen in the
+        The &quot;Privileged Operation System Groups&quot; screen in the
         OUI
       </p><div class="itemizedlist"><ul type="circle"><li><p>
-            Enter "dba" for "Database Administrator
-            (OSDBA) Group"
+            Enter &quot;dba&quot; for &quot;Database Administrator
+            (OSDBA) Group&quot;
           </p></li><li><p>
-            Enter "dba" for the "Database Operator
-            (OSOPER) Group"
+            Enter &quot;dba&quot; for the &quot;Database Operator
+            (OSOPER) Group&quot;
           </p></li><li><p>
-            Click "Next"
+            Click &quot;Next&quot;
           </p></li><li><p>
             A progress bar will appear for about 1 minute.
           </p></li></ul></div></li><li><p>
-        The "Authentication Methods" screen
+        The &quot;Authentication Methods&quot; screen
       </p><div class="itemizedlist"><ul type="circle"><li><p>
-            Click "Next"
+            Click &quot;Next&quot;
           </p></li></ul></div></li><li><p>
 
-        The next screen is "Choose JDK home directory"
+        The next screen is &quot;Choose JDK home directory&quot;
 
       </p><div class="itemizedlist"><ul type="circle"><li><p>
 
-              Keep the default path: <code class="computeroutput">/usr/local/java</code>
+              Keep the default path: <tt class="computeroutput">/usr/local/java</tt>
 
           </p></li><li><p>
 
-            Click "Next"
+            Click &quot;Next&quot;
 
           </p></li></ul></div></li><li><p>
 
-        The "Create a Database" screen in the OUI
+        The &quot;Create a Database&quot; screen in the OUI
         
       </p><div class="itemizedlist"><ul type="circle"><li><p>
 
-            Select "No" as we will do this later, after some
+            Select &quot;No&quot; as we will do this later, after some
             important configuration changes.
             
           </p></li><li><p>
 
-            Click "Next"
+            Click &quot;Next&quot;
             
           </p></li></ul></div></li><li><p>
 
-        The next screen is "Oracle Product Support"
+        The next screen is &quot;Oracle Product Support&quot;
 
       </p><div class="itemizedlist"><ul type="circle"><li><p>
 
-            TCP should be checked with "Status" listed as
+            TCP should be checked with &quot;Status&quot; listed as
             Required
 
           </p></li><li><p>
 
-            Click "Next"
+            Click &quot;Next&quot;
 
           </p></li></ul></div></li><li><p>
 
-        The "Summary" screen in the OUI
+        The &quot;Summary&quot; screen in the OUI
 
       </p><div class="itemizedlist"><ul type="circle"><li><p>
 
-            Check the "Space Requirements" section to verify
+            Check the &quot;Space Requirements&quot; section to verify
             you have enough disk space for the install.
 
           </p></li><li><p>
-              Check that "(144 products)" is in the "New
-              Installations" section title.
+              Check that &quot;(144 products)&quot; is in the &quot;New
+              Installations&quot; section title.
             </p></li><li><p>
-              Click "Install"
+              Click &quot;Install&quot;
             </p></li><li><p>
               A progress bar will appear for about 20 - 30 minutes. Now is a
               good time to take a break.
             </p></li><li><p>
-              A "Setup Privileges" window will popup towards the
+              A &quot;Setup Privileges&quot; window will popup towards the
               end of the installation asking you to run a script as
-              <code class="computeroutput">root</code>
+              <tt class="computeroutput">root</tt>
             </p></li><li><p> 
             Run the script. Switch to the oracle user first
             to set the environment appropriately and then do
-            <span><strong class="command">su</strong></span> to get root privileges, while keeping
+            <b class="command">su</b> to get root privileges, while keeping
             the oracle user's enviroment.
             </p><pre class="programlisting">
 [joeuser ~]$ su - oracle
@@ -551,7 +552,7 @@
 
 Enter the full pathname of the local bin directory: [/usr/local/bin]: 
 
-<code class="computeroutput">Press ENTER here to accept default of /usr/local/bin</code>
+<tt class="computeroutput">Press ENTER here to accept default of /usr/local/bin</tt>
       
 
 Creating /etc/oratab file...
@@ -569,93 +570,93 @@
             </p></li></ul></div><pre class="programlisting">
 [root ~]# exit
 [joeuser ~]$ exit</pre></li><li><p>
-          Go back to the pop-up window and click "OK"
+          Go back to the pop-up window and click &quot;OK&quot;
         </p></li><li><p>
-          The "Configuration Tools" screen in the OUI
+          The &quot;Configuration Tools&quot; screen in the OUI
         </p><div class="itemizedlist"><ul type="circle"><li><p>
               This window displays the config tools that will automatically
               be launched.
             </p></li></ul></div></li><li><p>
-          The "Welcome" screen in the "net 8 Configuration
-          Assistant"
+          The &quot;Welcome&quot; screen in the &quot;net 8 Configuration
+          Assistant&quot;
         </p><div class="itemizedlist"><ul type="circle"><li><p>
-              Make sure the "Perform Typical installation" is
-              <span class="strong"><strong>not</strong></span> selected.
+              Make sure the &quot;Perform Typical installation&quot; is
+              <span class="strong">not</span> selected.
             </p></li><li><p>
-              Click "Next"
+              Click &quot;Next&quot;
             </p></li><li><p> 
-              The "Directory Service Access" screen in the
-              "Net 8 Configuration Assistant"
+              The &quot;Directory Service Access&quot; screen in the
+              &quot;Net 8 Configuration Assistant&quot;
             </p></li><li><p>
-              Select "No"
+              Select &quot;No&quot;
             </p></li><li><p>
-              Click "Next"
+              Click &quot;Next&quot;
             </p></li></ul></div></li><li><p>
-          The "Listener Configuration, Listener Name" screen in
-          the "Net 8 Configuration Assistant"
+          The &quot;Listener Configuration, Listener Name&quot; screen in
+          the &quot;Net 8 Configuration Assistant&quot;
         </p><div class="itemizedlist"><ul type="circle"><li><p>
-              Accept the default listener name of "LISTENER"
+              Accept the default listener name of &quot;LISTENER&quot;
             </p></li><li><p>
-              Click "Next"
+              Click &quot;Next&quot;
             </p></li></ul></div></li><li><p> 
-          The "Listener Configuration, Select
-          Protocols" screen in the "Net 8 Configuration
-          Assistant"
+          The &quot;Listener Configuration, Select
+          Protocols&quot; screen in the &quot;Net 8 Configuration
+          Assistant&quot;
         </p><div class="itemizedlist"><ul type="circle"><li><p>
-              The only choice in "Select protocols:" should be
-              "TCP/IP"
+              The only choice in &quot;Select protocols:&quot; should be
+              &quot;TCP/IP&quot;
             </p></li><li><p>
-              Click "Next"
+              Click &quot;Next&quot;
             </p></li></ul></div></li><li><p>
-          The "Listener Configuration TCP/IP Protocol" screen in
-          the "Net 8 Configuration Assistant"
+          The &quot;Listener Configuration TCP/IP Protocol&quot; screen in
+          the &quot;Net 8 Configuration Assistant&quot;
         </p><div class="itemizedlist"><ul type="circle"><li><p>
               Default Port should be 1521 and selected.
             </p></li><li><p>
-              Click "Next"
+              Click &quot;Next&quot;
             </p></li></ul></div></li><li><p> 
-          The "Listener Configuration, More Listeners" screen in
-          the "Net 8 Configuration Assistant"
+          The &quot;Listener Configuration, More Listeners&quot; screen in
+          the &quot;Net 8 Configuration Assistant&quot;
         </p><div class="itemizedlist"><ul type="circle"><li><p>
-              Select "No"
+              Select &quot;No&quot;
             </p></li><li><p>
-              Click "Next"
+              Click &quot;Next&quot;
             </p></li></ul></div></li><li><p>
-          The "Listener Configuration Done" screen in the
-          "Net 8 Configuration Assistant"
+          The &quot;Listener Configuration Done&quot; screen in the
+          &quot;Net 8 Configuration Assistant&quot;
         </p><div class="itemizedlist"><ul type="circle"><li><p>
-              Click "Next"
+              Click &quot;Next&quot;
             </p></li></ul></div></li><li><p> 
-          The "Naming Methods Configuration" screen
-          in the "Net 8 Configuration Assistant"
+          The &quot;Naming Methods Configuration&quot; screen
+          in the &quot;Net 8 Configuration Assistant&quot;
         </p><div class="itemizedlist"><ul type="circle"><li><p>
-              Select "No"
+              Select &quot;No&quot;
             </p></li><li><p>
-              Click "Next"
+              Click &quot;Next&quot;
             </p></li></ul></div></li><li><p>
-          The "Done" screen in the "Net 8 Configuration
-          Assistant"
+          The &quot;Done&quot; screen in the &quot;Net 8 Configuration
+          Assistant&quot;
         </p><div class="itemizedlist"><ul type="circle"><li><p>
-              Click "Finish"
+              Click &quot;Finish&quot;
             </p></li></ul></div></li><li><p>
-          The "End of Installation" screen in the OUI
+          The &quot;End of Installation&quot; screen in the OUI
         </p><div class="itemizedlist"><ul type="circle"><li><p>
-              Click "Exit"
+              Click &quot;Exit&quot;
             </p></li><li><p>
-              Click "Yes" on the confirmation pop up window.
+              Click &quot;Yes&quot; on the confirmation pop up window.
             </p></li><li><p>
               The Oracle Universal Installer window should have disappeared!
             </p></li></ul></div></li></ul></div><p>
       Congratulations, you have just installed Oracle 8.1.7 Server!
       However, you still need to create a database which can take about an
       hour of non-interactive time, so don't quit yet.
-    </p></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="install-oracle-create"></a>Creating the First Database</h3></div></div></div><p>
+    </p></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="install-oracle-create"></a>Creating the First Database</h3></div></div><div></div></div><p>
       This step will take you through the steps of creating a customized
       database. Be warned that this process takes about an hour on a
       Pentium II with 128 MB of RAM.
-    </p><div class="note" style="margin-left: 0.5in; margin-right: 0.5in;"><h3 class="title">Note</h3><p>RedHat 7.3 and 8.0 users: Before running <span><strong class="command">dbassist</strong></span>, do the following.</p><div class="orderedlist"><ol type="1"><li><p>
+    </p><div class="note" style="margin-left: 0.5in; margin-right: 0.5in;"><h3 class="title">Note</h3><p>RedHat 7.3 and 8.0 users: Before running <b class="command">dbassist</b>, do the following.</p><div class="orderedlist"><ol type="1"><li><p>
             Download the <a href="http://otn.oracle.com/software/products/oracle8i/htdocs/linuxsoft.html" target="_top">glibc
-            patch</a> from Oracle Technet into <code class="computeroutput">/var/tmp</code>.
+            patch</a> from Oracle Technet into <tt class="computeroutput">/var/tmp</tt>.
           </p></li><li><p>
             cd $ORACLE_HOME
             </p></li><li><p>
@@ -664,165 +665,165 @@
             ./setup_stubs
             </p></li></ol></div></div><div class="itemizedlist"><ul type="disc"><li><p> 
           Make sure you are running X. Open up a terminal and
-          <code class="computeroutput">su</code> to oracle and then run the
-          <code class="computeroutput">dbassist</code> program.
+          <tt class="computeroutput">su</tt> to oracle and then run the
+          <tt class="computeroutput">dbassist</tt> program.
         </p><pre class="programlisting">
 [joeuser ~]$ xhost +localhost
 [joeuser ~]$ su - oracle
 Password: *********
 [oracle ~]$ export DISPLAY=localhost:0.0
 [oracle ~]$ dbassist</pre></li><li><p>
-          The "Welcome" screen in the Oracle Database
+          The &quot;Welcome&quot; screen in the Oracle Database
           Configuration Agent (ODCA)
         </p><div class="itemizedlist"><ul type="circle"><li><p>
-              Select "Create a database"
+              Select &quot;Create a database&quot;
             </p></li><li><p>
-              Click "Next"
+              Click &quot;Next&quot;
             </p></li></ul></div></li><li><p>
-          The "Select database type" screen in the ODCA 
+          The &quot;Select database type&quot; screen in the ODCA 
         </p><div class="itemizedlist"><ul type="circle"><li><p>
-              Select "Custom"
+              Select &quot;Custom&quot;
             </p></li><li><p>
-              Click "Next"
+              Click &quot;Next&quot;
             </p></li></ul></div></li><li><p>
-          The "Primary Database Type" window in ODCA 
+          The &quot;Primary Database Type&quot; window in ODCA 
         </p><div class="itemizedlist"><ul type="circle"><li><p>
-              Select "Multipurpose"
+              Select &quot;Multipurpose&quot;
             </p></li><li><p>
-              Click "Next"
+              Click &quot;Next&quot;
             </p></li></ul></div></li><li><p>
-          The "concurrent users" screen of the ODCA 
+          The &quot;concurrent users&quot; screen of the ODCA 
         </p><div class="itemizedlist"><ul type="circle"><li><p>
-              Select "60" concurrent users. 
+              Select &quot;60&quot; concurrent users. 
             </p></li><li><p>
-              Click "Next"
+              Click &quot;Next&quot;
             </p></li></ul></div></li><li><p>
-          Select "<code class="computeroutput">Dedicated Server
-            Mode</code>", click
-          "<code class="computeroutput">Next</code>"
+          Select &quot;<tt class="computeroutput">Dedicated Server
+            Mode</tt>&quot;, click
+          &quot;<tt class="computeroutput">Next</tt>&quot;
         </p></li><li><p>
           Accept all of the options, and click
-          <code class="computeroutput">Next</code> Oracle Visual
+          <tt class="computeroutput">Next</tt> Oracle Visual
           Information Retrieval may be grayed out. If so, you can ignore
           it; just make sure that everything else is checked.
         </p></li><li><p>
-          For "Global Database Name", enter
-          "<code class="computeroutput">ora8</code>"; for
-          "SID", also enter
-          "<code class="computeroutput">ora8</code>" (it should do
-          this automatically).  Click <code class="computeroutput">"Change
-          Character Set</code> and select
-          <code class="computeroutput">UTF8</code>. Click
-          "<code class="computeroutput">Next</code>".
+          For &quot;Global Database Name&quot;, enter
+          &quot;<tt class="computeroutput">ora8</tt>&quot;; for
+          &quot;SID&quot;, also enter
+          &quot;<tt class="computeroutput">ora8</tt>&quot; (it should do
+          this automatically).  Click <tt class="computeroutput">&quot;Change
+          Character Set</tt> and select
+          <tt class="computeroutput">UTF8</tt>. Click
+          &quot;<tt class="computeroutput">Next</tt>&quot;.
         </p></li><li><p>
           Accept the defaults for the next screen (control file
           location). Click
-          "<code class="computeroutput">Next</code>"
+          &quot;<tt class="computeroutput">Next</tt>&quot;
         </p></li><li><p>
-          Go to the "temporary" and
-          "rollback" tabs, and change the Size
+          Go to the &quot;temporary&quot; and
+          &quot;rollback&quot; tabs, and change the Size
           (upper-right text box) to
-          <code class="computeroutput">150</code>MB. Click
-          "<code class="computeroutput">Next</code>"
+          <tt class="computeroutput">150</tt>MB. Click
+          &quot;<tt class="computeroutput">Next</tt>&quot;
         </p></li><li><p>
           Increase the redo log sizes to
-          <code class="computeroutput">10000K</code> each. Click
-          "<code class="computeroutput">Next</code>"
+          <tt class="computeroutput">10000K</tt> each. Click
+          &quot;<tt class="computeroutput">Next</tt>&quot;
         </p></li><li><p>
           Use the default checkpoint interval &amp; timeout. Click
-          "<code class="computeroutput">Next</code>"
+          &quot;<tt class="computeroutput">Next</tt>&quot;
         </p></li><li><p>        
-          Increase "<code class="computeroutput">Processes</code>"
-          to <code class="computeroutput">100</code>;
-          "<code class="computeroutput">Block Size</code>" to
-          <code class="computeroutput">4096</code> (better for small Linux
+          Increase &quot;<tt class="computeroutput">Processes</tt>&quot;
+          to <tt class="computeroutput">100</tt>;
+          &quot;<tt class="computeroutput">Block Size</tt>&quot; to
+          <tt class="computeroutput">4096</tt> (better for small Linux
           boxes; use 8192 for a big Solaris machine).
         </p></li><li><p>
           Accept the defaults for the Trace File Directory. Click
-          "<code class="computeroutput">Next</code>"
+          &quot;<tt class="computeroutput">Next</tt>&quot;
         </p></li><li><p>
-          Finally, select "<code class="computeroutput">Save information to a shell
-            script</code>" and click
-          "<code class="computeroutput">Finish</code>" (We're
+          Finally, select &quot;<tt class="computeroutput">Save information to a shell
+            script</tt>&quot; and click
+          &quot;<tt class="computeroutput">Finish</tt>&quot; (We're
           going to examine the contents of this file before creating our
           database.)
         </p></li><li><p>
-          Click the "<code class="computeroutput">Save</code>"
+          Click the &quot;<tt class="computeroutput">Save</tt>&quot;
           button. Oracle will automatically save it to the correct
           directory and with the correct file name. This will likely be
-          <code class="computeroutput">/ora8/m01/app/oracle/product/8.1.7/assistants/dbca/jlib/sqlora8.sh</code>
+          <tt class="computeroutput">/ora8/m01/app/oracle/product/8.1.7/assistants/dbca/jlib/sqlora8.sh</tt>
         </p></li><li><p> 
           It will alert you that the script has been saved
           successfully.
         </p></li><li><p> 
           Now we need to customize the database configuration a bit. While
-          still logged on as <code class="computeroutput">oracle</code>, edit
+          still logged on as <tt class="computeroutput">oracle</tt>, edit
           the database initialization script (run when the db loads). The
           scripts are kept in
-          <code class="computeroutput">$ORACLE_HOME/dbs</code> and the name of
+          <tt class="computeroutput">$ORACLE_HOME/dbs</tt> and the name of
           the script is usually
-          <code class="computeroutput">init</code><span class="emphasis"><em>SID</em></span><code class="computeroutput">.ora</code>
+          <tt class="computeroutput">init</tt><span class="emphasis"><em>SID</em></span><tt class="computeroutput">.ora</tt>
           where <span class="emphasis"><em>SID</em></span> is the SID of your
           database. Assuming your
-          <code class="computeroutput">$ORACLE_HOME</code> matches our default
+          <tt class="computeroutput">$ORACLE_HOME</tt> matches our default
           of
-          <code class="computeroutput">/ora8/m01/app/oracle/product/8.1.7</code>,
+          <tt class="computeroutput">/ora8/m01/app/oracle/product/8.1.7</tt>,
           the following will open the file for editing.
         </p><pre class="programlisting">
 [oracle ~]$ emacs /ora8/m01/app/oracle/product/8.1.7/dbs/initora8.ora</pre></li><li><p>
           Add the following line to the end:
         </p><pre class="programlisting">
-nls_date_format = "YYYY-MM-DD"</pre></li><li><p>
-          Now find the <code class="computeroutput">open_cursors</code> line
+nls_date_format = &quot;YYYY-MM-DD&quot;</pre></li><li><p>
+          Now find the <tt class="computeroutput">open_cursors</tt> line
           in the file. If you're using
-          <code class="computeroutput">emacs</code> scroll up to the top of
-          the buffer and do <code class="computeroutput">CTRL-S</code> and
-          type <code class="computeroutput">open_cursors</code> to find the
-          line. The default is <code class="computeroutput">100</code>. Change
-          it to <code class="computeroutput">500</code>.
+          <tt class="computeroutput">emacs</tt> scroll up to the top of
+          the buffer and do <tt class="computeroutput">CTRL-S</tt> and
+          type <tt class="computeroutput">open_cursors</tt> to find the
+          line. The default is <tt class="computeroutput">100</tt>. Change
+          it to <tt class="computeroutput">500</tt>.
         </p><pre class="programlisting">
 open_cursors = 500</pre></li><li><p>
-          Save the file. In emacs, do <code class="computeroutput">CTRL-X
-            CTRL-S</code> to save followed by
-          <code class="computeroutput">CTRL-X CTRL-C</code> to exit or use
+          Save the file. In emacs, do <tt class="computeroutput">CTRL-X
+            CTRL-S</tt> to save followed by
+          <tt class="computeroutput">CTRL-X CTRL-C</tt> to exit or use
           the menu.
         </p></li><li><p>
           At this point, you are ready to initiate database creation. We
           recommend shutting down X to free up some RAM unless you have 256
           MB of RAM or more.  You can do this quickly by doing a
-          <code class="computeroutput">CRTL-ALT-BACKSPACE</code>, but make
+          <tt class="computeroutput">CRTL-ALT-BACKSPACE</tt>, but make
           sure you have saved any files you were editing. You should now be
           returned to a text shell prompt. If you get sent to a graphical
           login screen instead, switch to a virtual console by doing
-          <code class="computeroutput">CRTL-ALT-F1</code>. Then login as
-          <code class="computeroutput">oracle</code>.
+          <tt class="computeroutput">CRTL-ALT-F1</tt>. Then login as
+          <tt class="computeroutput">oracle</tt>.
         </p></li><li><p>        
           Change to the directory where the database creation script is and
           run it:
         </p><pre class="programlisting">
 [oracle ~]$ cd /ora8/m01/app/oracle/product/8.1.7/assistants/dbca/jlib
 oracle:/ora8/m01/app/oracle/product/8.1.7/assistants/dbca/jlib$ ./sqlora8.sh</pre><p>
           In some instances, Oracle will save the file to
-          <code class="computeroutput">/ora8/m01/app/oracle/product/8.1.7/assistants/dbca</code>
+          <tt class="computeroutput">/ora8/m01/app/oracle/product/8.1.7/assistants/dbca</tt>
           Try running the script there if your first attempt does not
           succeed.
         </p></li><li><p>
           Your database will now be built. It will take &gt; 1 hour - no
           fooling.  You will see lots of errors scroll by (like:
-          "ORA-01432: public synonym to be dropped does not
-          exist") Fear not, this is normal.
+          &quot;ORA-01432: public synonym to be dropped does not
+          exist&quot;) Fear not, this is normal.
         </p><p>
           Eventually, you'll be returned to your shell prompt. In the
           meantime, relax, you've earned it.
-        </p></li></ul></div></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="istall-oracle-test"></a>Acceptance Test</h3></div></div></div><p>
+        </p></li></ul></div></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="istall-oracle-test"></a>Acceptance Test</h3></div></div><div></div></div><p>
       For this step, open up a terminal and
-      <code class="computeroutput">su</code> to
-      <code class="computeroutput">oracle</code> as usual. You should be
+      <tt class="computeroutput">su</tt> to
+      <tt class="computeroutput">oracle</tt> as usual. You should be
       running X and Netscape (or other web browser) for this phase.
     </p><div class="itemizedlist"><ul type="disc"><li><p>
-          You need to download the "Oracle Acceptance Test" file.
+          You need to download the &quot;Oracle Acceptance Test&quot; file.
           It's available <a href="files/acceptance-sql.txt" target="_top">here</a> and at <a href="http://philip.greenspun.com/wtr/oracle/acceptance-sql.txt" target="_top">http://philip.greenspun.com/wtr/oracle/acceptance-sql.txt</a>.
-          Save the file to <code class="computeroutput">/var/tmp</code>
+          Save the file to <tt class="computeroutput">/var/tmp</tt>
         </p></li><li><p>
           In the oracle shell, copy the file.
         </p><pre class="programlisting">
@@ -831,15 +832,15 @@
           your term and type the following:
         </p><pre class="programlisting">
 [oracle ~]$ sqlplus system/manager</pre><p>
-          SQL*Plus should startup. If you get an <code class="computeroutput">ORA-01034:
-            Oracle not Available</code> error, it is because your
+          SQL*Plus should startup. If you get an <tt class="computeroutput">ORA-01034:
+            Oracle not Available</tt> error, it is because your
           Oracle instance is not running.  You can manually start it as
-          the <code class="computeroutput">oracle</code> user.</p><pre class="programlisting">
+          the <tt class="computeroutput">oracle</tt> user.</p><pre class="programlisting">
 [oracle ~]$ svrmgrl
 SVRMGR&gt; connect internal
 SVRMGR&gt; startup</pre></li><li><p>
           Now that you're into SQL*Plus, change the default passwords
-          for system, sys, and ctxsys to "alexisahunk" (or to
+          for system, sys, and ctxsys to &quot;alexisahunk&quot; (or to
           something you'll remember):
         </p><pre class="programlisting">
 SQL&gt; alter user system identified by alexisahunk;
@@ -849,7 +850,7 @@
         </p><pre class="programlisting">
 SQL&gt; select sysdate from dual;</pre><p>
           If you don't see a date that fits the format
-          <code class="computeroutput">YYYY-MM-DD</code>, please read <a href="oracle.html#install-oracle-troubleshooting" title="Troubleshooting Oracle Dates">the section called &#8220;Troubleshooting Oracle Dates&#8221;</a>.
+          <tt class="computeroutput">YYYY-MM-DD</tt>, please read <a href="oracle.html#install-oracle-troubleshooting" title="Troubleshooting Oracle Dates">Section�, &#8220;Troubleshooting Oracle Dates&#8221;</a>.
         </p></li><li><p>
           At this point we are going to hammer your database with an
           intense acceptance test. This usually takes around 30 minutes.
@@ -864,76 +865,76 @@
 2000-06-10
 
 SQL&gt;</pre><p>
-          Many people encounter an error regarding <code class="computeroutput">maximum
-            key length</code>:
+          Many people encounter an error regarding <tt class="computeroutput">maximum
+            key length</tt>:
         </p><pre class="programlisting">
 ERROR at line 1:
 ORA-01450: maximum key length (758) exceeded</pre><p>
           This error occurs if your database block size is wrong and is
           usually suffered by people trying to load OpenACS into a
           pre-existing database.  Unfortunately, the only solution is to
           create a new database with a block size of at least
-          <code class="computeroutput">4096</code>. For instructions on how to
-          do this, see <a href="oracle.html#install-oracle-create" title="Creating the First Database">the section called &#8220;Creating the First Database&#8221;</a> above. You
+          <tt class="computeroutput">4096</tt>. For instructions on how to
+          do this, see <a href="oracle.html#install-oracle-create" title="Creating the First Database">Section�, &#8220;Creating the First Database&#8221;</a> above. You
           can set the parameter using the
-          <code class="computeroutput">dbassist</code> program or by setting
-          the <code class="computeroutput">DB_BLOCK_SIZE</code> parameter in
+          <tt class="computeroutput">dbassist</tt> program or by setting
+          the <tt class="computeroutput">DB_BLOCK_SIZE</tt> parameter in
           your database's creation script.
         </p><p>
           If there were no errors, then consider yourself fortunate. Your
           Oracle installation is working.
-        </p></li></ul></div></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="install-oracle-automating"></a>Automating Startup &amp; Shutdown</h3></div></div></div><p>
+        </p></li></ul></div></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="install-oracle-automating"></a>Automating Startup &amp; Shutdown</h3></div></div><div></div></div><p>
       You will want to automate the database startup and shutdown process.
       It's probably best to have Oracle spring to life when you boot up
       your machine.
     </p><div class="itemizedlist"><ul type="disc"><li><p> 
           Oracle includes a script called
-          <code class="computeroutput">dbstart</code> that can be used to
+          <tt class="computeroutput">dbstart</tt> that can be used to
           automatically start the database. Unfortunately, the script
           shipped in the Linux distribution does not work out of the
           box. The fix is simple. Follow these directions to apply
           it. First, save <a href="files/dbstart.txt" target="_top">dbstart</a> to
-          <code class="computeroutput">/var/tmp</code>. Then, as 
-          <code class="computeroutput">oracle</code>, do the following:
+          <tt class="computeroutput">/var/tmp</tt>. Then, as 
+          <tt class="computeroutput">oracle</tt>, do the following:
         </p><pre class="programlisting">
 [oracle ~]$ cp /var/tmp/dbstart.txt /ora8/m01/app/oracle/product/8.1.7/bin/dbstart 
 [oracle ~]$ chmod 755 /ora8/m01/app/oracle/product/8.1.7/bin/dbstart</pre></li><li><p>
 
           While you're logged in as
-          <code class="computeroutput">oracle</code>, you should configure the
-          <code class="computeroutput">oratab</code> file to load your
+          <tt class="computeroutput">oracle</tt>, you should configure the
+          <tt class="computeroutput">oratab</tt> file to load your
           database at start.  Edit the file
-          <code class="computeroutput">/etc/oratab</code>: 
+          <tt class="computeroutput">/etc/oratab</tt>: 
         </p><div class="itemizedlist"><ul type="circle"><li><p>You will see this line. </p><pre class="programlisting">
 ora8:/ora8/m01/app/oracle/product/8.1.7:N</pre><p>
               By the way, if you changed the service name or have multiple
               databases, the format of this file is:
             </p><p>
-              <span class="emphasis"><em><code class="computeroutput">service_name:$ORACLE_HOME:Y || N
-                  (for autoload)</code></em></span>
+              <span class="emphasis"><em><tt class="computeroutput">service_name:$ORACLE_HOME:Y || N
+                  (for autoload)</tt></em></span>
             </p></li><li><p>
-              Change the last letter from "N" to
-              "Y". This tells Oracle that you want the database
+              Change the last letter from &quot;N&quot; to
+              &quot;Y&quot;. This tells Oracle that you want the database
               to start when the machine boots. It should look like this.
             </p><pre class="programlisting">
 ora8:/ora8/m01/app/oracle/product/8.1.7:Y</pre></li><li><p>
               Save the file &amp; quit the terminal.
             </p></li></ul></div></li><li><p> 
           You need a script to automate startup and shutdown. Save <a href="files/oracle8i.txt" target="_top">oracle8i.txt</a> in
-          <code class="computeroutput">/var/tmp</code>. Then login as
-          <code class="computeroutput">root</code> and install the
+          <tt class="computeroutput">/var/tmp</tt>. Then login as
+          <tt class="computeroutput">root</tt> and install the
           script. (Debian users: substitute
-          <code class="computeroutput">/etc/init.d</code> for
-          <code class="computeroutput">/etc/rc.d/init.d</code> throughout 
+          <tt class="computeroutput">/etc/init.d</tt> for
+          <tt class="computeroutput">/etc/rc.d/init.d</tt> throughout 
           this section)
         </p><pre class="programlisting">
 [oracle ~]$ su -
 [root ~]# cp /var/tmp/oracle8i.txt /etc/rc.d/init.d/oracle8i
 [root ~]# chown root.root /etc/rc.d/init.d/oracle8i
 [root ~]# chmod 755 /etc/rc.d/init.d/oracle8i</pre></li><li><p> 
           Test the script by typing the following commands and checking the
-          output. (Debian Users: as root, do <code class="computeroutput">mkdir
-          /var/lock/subsys</code> first)
+          output. (Debian Users: as root, do <tt class="computeroutput">mkdir
+          /var/lock/subsys</tt> first)
         </p><pre class="programlisting">
 [root ~]# /etc/rc.d/init.d/oracle8i stop
 Oracle 8i auto start/stop
@@ -954,7 +955,7 @@
 ORACLE instance shut down.
 SVRMGR&gt;
 Server Manager complete.
-Database "ora8" shut down.
+Database &quot;ora8&quot; shut down.
       
 [root ~]# /etc/rc.d/init.d/oracle8i start
 Oracle 8i auto start/stop
@@ -975,9 +976,9 @@
 Database opened.
 SQL&gt; Disconnected
 
-Database "ora8" warm started.
+Database &quot;ora8&quot; warm started.
 
-Database "ora8" warm started.</pre></li><li><p>        
+Database &quot;ora8&quot; warm started.</pre></li><li><p>        
           If it worked, then run these commands to make the startup and
           shutdown automatic. 
         </p><div class="itemizedlist"><ul type="circle"><li><p>Red Hat users:</p><pre class="programlisting">
@@ -1042,7 +1043,7 @@
           and full site search.
         </p><p>
           Download these three scripts into
-          <code class="computeroutput">/var/tmp</code>
+          <tt class="computeroutput">/var/tmp</tt>
         </p><div class="itemizedlist"><ul type="circle"><li><p>
               <a href="files/startlsnr.txt" target="_top">startlsnr.txt</a>
             </p></li><li><p>
@@ -1051,7 +1052,7 @@
               <a href="files/listener8i.txt" target="_top">listener8i.txt</a>
             </p></li></ul></div><p>
           Now issue the following commands (still as
-          <code class="computeroutput">root</code>).
+          <tt class="computeroutput">root</tt>).
         </p><pre class="programlisting">
 [root ~]# su - oracle
 [oracle ~]$ cp /var/tmp/startlsnr.txt /ora8/m01/app/oracle/product/8.1.7/bin/startlsnr
@@ -1111,8 +1112,8 @@
           normally. Login into the database using the listener naming
           convention.
         </p><p>
-          <code class="computeroutput">sqlplus</code>
-          <span class="emphasis"><em><code class="computeroutput">username/password/@SID</code></em></span>
+          <tt class="computeroutput">sqlplus</tt>
+          <span class="emphasis"><em><tt class="computeroutput">username/password/@SID</tt></em></span>
         </p><pre class="programlisting">
 [root ~]# su - oracle
 [oracle ~]$ sqlplus system/alexisahunk@ora8
@@ -1126,15 +1127,15 @@
 SQL&gt; exit
 [oracle ~]$ exit
 [root ~]#</pre><div class="itemizedlist"><ul type="circle"><li><p>RedHat users:</p><p>
-              Now run <code class="computeroutput">chkconfig</code> on the
-              <code class="computeroutput">listener8i</code> script.
+              Now run <tt class="computeroutput">chkconfig</tt> on the
+              <tt class="computeroutput">listener8i</tt> script.
             </p><pre class="programlisting">
 [root ~]# cd /etc/rc.d/init.d/
 root:/etc/rc.d/init.d# chkconfig --add listener8i
 root:/etc/rc.d/init.d# chkconfig --list listener8i
 listener8i      0:off   1:off   2:off   3:on    4:on    5:on    6:off</pre></li><li><p>Debian users:</p><p>
-              Now run <code class="computeroutput">update-rc.d</code> on the 
-              <code class="computeroutput">listener8i</code> script.
+              Now run <tt class="computeroutput">update-rc.d</tt> on the 
+              <tt class="computeroutput">listener8i</tt> script.
             </p><pre class="programlisting">
 [root ~]# update-rc.d listener8i defaults 21 19
  Adding system startup for /etc/init.d/listener8i ...
@@ -1159,30 +1160,30 @@
 SQL&gt; exit</pre></li></ul></div><p>
       Congratulations, your installation of Oracle 8.1.7 is
       complete.
-    </p></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="install-oracle-troubleshooting"></a>Troubleshooting Oracle Dates</h3></div></div></div><p>
+    </p></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="install-oracle-troubleshooting"></a>Troubleshooting Oracle Dates</h3></div></div><div></div></div><p>
       Oracle has an internal representation for storing the data based on
       the number of seconds elapsed since some date. However, for the
       purposes of inputing dates into Oracle and getting them back out,
       Oracle needs to be told to use a specific date format. By default, it
       uses an Oracle-specific format which isn't copacetic. You want
       Oracle to use the ANSI-compliant date format which is of form
-      <code class="computeroutput">'YYYY-MM-DD'</code>.
+      <tt class="computeroutput">'YYYY-MM-DD'</tt>.
     </p><p>
       To fix this, you should include the following line in
-      <code class="computeroutput">$ORACLE_HOME/dbs/init</code><span class="emphasis"><em>SID</em></span><code class="computeroutput">.ora</code>
+      <tt class="computeroutput">$ORACLE_HOME/dbs/init</tt><span class="emphasis"><em>SID</em></span><tt class="computeroutput">.ora</tt>
       or for the default case,
-      <code class="computeroutput">$ORACLE_HOME/dbs/initora8.ora</code>
+      <tt class="computeroutput">$ORACLE_HOME/dbs/initora8.ora</tt>
     </p><pre class="programlisting">
-nls_date_format = "YYYY-MM-DD"</pre><p>
+nls_date_format = &quot;YYYY-MM-DD&quot;</pre><p>
       You test whether this solved the problem by firing up
-      <code class="computeroutput">sqlplus</code> and typing: 
+      <tt class="computeroutput">sqlplus</tt> and typing: 
     </p><pre class="programlisting">
 SQL&gt; select sysdate from dual;</pre><p>
       You should see back a date like
-      <code class="computeroutput">2000-06-02</code>. If some of the date is
-      chopped off, i.e. like <code class="computeroutput">2000-06-0</code>,
+      <tt class="computeroutput">2000-06-02</tt>. If some of the date is
+      chopped off, i.e. like <tt class="computeroutput">2000-06-0</tt>,
       everything is still fine. The problem here is that
-      <code class="computeroutput">sqlplus</code> is simply truncating the
+      <tt class="computeroutput">sqlplus</tt> is simply truncating the
       output. You can fix this by typing:
     </p><pre class="programlisting">
 SQL&gt; column sysdate format a15
@@ -1209,13 +1210,13 @@
       Setting this environment variable will override the date
       setting. Either delete this line and login again or add the following
       entry to your login scripts <span class="emphasis"><em>after</em></span> the
-      <code class="computeroutput">nls_lang</code> line:
+      <tt class="computeroutput">nls_lang</tt> line:
     </p><pre class="programlisting">
 export nls_date_format = 'YYYY-MM-DD'</pre><p>
       Log back in again. If adding the
-      <code class="computeroutput">nls_date_format</code> line doesn't
+      <tt class="computeroutput">nls_date_format</tt> line doesn't
       help, you can ask for advice in our <a href="http://www.openacs.org/forums/" target="_top">OpenACS forums</a>.
-    </p></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="install-oracle-procs"></a>Useful Procedures</h3></div></div></div><div class="itemizedlist"><ul type="disc"><li><p>
+    </p></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="install-oracle-procs"></a>Useful Procedures</h3></div></div><div></div></div><div class="itemizedlist"><ul type="disc"><li><p>
           Dropping a tablespace
         </p><div class="itemizedlist"><ul type="circle"><li><p>
               Run sqlplus as the dba: 
@@ -1232,9 +1233,9 @@
             </p><pre class="programlisting">
 SQL&gt; drop tablespace <span class="emphasis"><em>table_space_name</em></span> including contents cascade constraints;</pre></li></ul></div></li></ul></div><p>
       For more information on Oracle, please consult the <a href="http://oradoc.photo.net/" target="_top">documentation</a>.
-    </p></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="oracle-next-steps"></a>Oracle Next Steps</h3></div></div></div><p><a href="maint-performance.html#install-oracle-monitoring" title="Creating an appropriate tuning and monitoring environment">the section called &#8220;Creating an appropriate tuning and monitoring environment&#8221;</a></p></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="install-oracle-defaults"></a>Defaults</h3></div></div></div><p>We used the following defaults while installing Oracle.</p><div class="informaltable"><table cellspacing="0" border="1"><colgroup><col><col><col></colgroup><thead><tr><th>Variable</th><th>Value</th><th>Reason</th></tr></thead><tbody><tr><td>ORACLE_HOME</td><td>/ora8/m01/app/oracle/product/8.1.7</td><td>This is the default Oracle installation directory.</td></tr><tr><td>ORACLE_SERVICE</td><td>ora8</td><td>The service name is a domain-qualified identifier for
+    </p></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="oracle-next-steps"></a>Oracle Next Steps</h3></div></div><div></div></div><p><a href="maint-performance.html#install-oracle-monitoring" title="Creating an appropriate tuning and monitoring environment">Section�, &#8220;Creating an appropriate tuning and monitoring environment&#8221;</a></p></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="install-oracle-defaults"></a>Defaults</h3></div></div><div></div></div><p>We used the following defaults while installing Oracle.</p><div class="informaltable"><table cellspacing="0" border="1"><colgroup><col><col><col></colgroup><thead><tr><th>Variable</th><th>Value</th><th>Reason</th></tr></thead><tbody><tr><td>ORACLE_HOME</td><td>/ora8/m01/app/oracle/product/8.1.7</td><td>This is the default Oracle installation directory.</td></tr><tr><td>ORACLE_SERVICE</td><td>ora8</td><td>The service name is a domain-qualified identifier for
               your Oracle server.</td></tr><tr><td>ORACLE_SID</td><td>ora8</td><td>This is an identifier for your Oracle server.</td></tr><tr><td>ORACLE_OWNER</td><td>oracle</td><td>The user who owns all of the oracle files.</td></tr><tr><td>ORACLE_GROUP</td><td>dba</td><td>The special oracle group. Users in the dba group are
-              authorized to do a <code class="computeroutput">connect
-              internal</code> within
-              <code class="computeroutput">svrmgrl</code> to gain full system
+              authorized to do a <tt class="computeroutput">connect
+              internal</tt> within
+              <tt class="computeroutput">svrmgrl</tt> to gain full system
               access to the Oracle system.</td></tr></tbody></table></div><div class="cvstag">($Id$)</div></div></div><div class="navfooter"><hr><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="unix-installation.html">Prev</a> </td><td width="20%" align="center"><a accesskey="h" href="index.html">Home</a></td><td width="40%" align="right"> <a accesskey="n" href="postgres.html">Next</a></td></tr><tr><td width="40%" align="left">Install a Unix-like system and supporting software </td><td width="20%" align="center"><a accesskey="u" href="complete-install.html">Up</a></td><td width="40%" align="right"> Install PostgreSQL</td></tr></table><hr><address><a href="mailto:docs@openacs.org">docs@openacs.org</a></address></div><a name="comments"></a><center><a href="http://openacs.org/doc/current/oracle.html#comments">View comments on this page at openacs.org</a></center></body></html>
Index: openacs-4/packages/acs-core-docs/www/os-install.html
===================================================================
RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/os-install.html,v
diff -u -r1.11 -r1.11.4.1
--- openacs-4/packages/acs-core-docs/www/os-install.html	17 Jul 2006 05:38:31 -0000	1.11
+++ openacs-4/packages/acs-core-docs/www/os-install.html	3 Feb 2008 12:07:40 -0000	1.11.4.1
@@ -1,4 +1,5 @@
-<html><head><meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"><title>Linux Install Guides</title><meta name="generator" content="DocBook XSL Stylesheets V1.70.1"><link rel="home" href="index.html" title="OpenACS Core Documentation"><link rel="up" href="credits.html" title="Appendix�C.�Credits"><link rel="previous" href="install-origins.html" title="Where did this document come from?"><link rel="next" href="os-security.html" title="Security Information"><link rel="stylesheet" href="openacs.css" type="text/css"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><a href="http://openacs.org"><img src="/doc/images/alex.jpg" border="0" alt="Alex logo"></a><table width="100%" summary="Navigation header" border="0"><tr><td width="20%" align="left"><a accesskey="p" href="install-origins.html">Prev</a> </td><th width="60%" align="center">Appendix�C.�Credits</th><td width="20%" align="right"> <a accesskey="n" href="os-security.html">Next</a></td></tr></table><hr></div><div class="section" lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="os-install"></a>Linux Install Guides</h2></div></div></div><p>
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html><head><meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"><title>Linux Install Guides</title><meta name="generator" content="DocBook XSL Stylesheets V1.60.1"><link rel="home" href="index.html" title="OpenACS Core Documentation"><link rel="up" href="credits.html" title="Appendix�C.�Credits"><link rel="previous" href="install-origins.html" title="Where did this document come from?"><link rel="next" href="os-security.html" title="Security Information"><link rel="stylesheet" href="openacs.css" type="text/css"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><a href="http://openacs.org"><img src="/doc/images/alex.jpg" border="0" alt="Alex logo"></a><table width="100%" summary="Navigation header" border="0"><tr><td width="20%" align="left"><a accesskey="p" href="install-origins.html">Prev</a> </td><th width="60%" align="center">Appendix�C.�Credits</th><td width="20%" align="right"> <a accesskey="n" href="os-security.html">Next</a></td></tr></table><hr></div><div class="section" lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="os-install"></a>Linux Install Guides</h2></div></div><div></div></div><p>
       Here's a list of some helpful documentation for various OS's
     </p><div class="itemizedlist"><ul type="disc"><li><p>
           <a href="http://tinyplanet.ca/pubs/debian/" target="_top">Painless Debian
Index: openacs-4/packages/acs-core-docs/www/os-security.html
===================================================================
RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/os-security.html,v
diff -u -r1.11 -r1.11.4.1
--- openacs-4/packages/acs-core-docs/www/os-security.html	17 Jul 2006 05:38:31 -0000	1.11
+++ openacs-4/packages/acs-core-docs/www/os-security.html	3 Feb 2008 12:07:40 -0000	1.11.4.1
@@ -1,7 +1,8 @@
-<html><head><meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"><title>Security Information</title><meta name="generator" content="DocBook XSL Stylesheets V1.70.1"><link rel="home" href="index.html" title="OpenACS Core Documentation"><link rel="up" href="credits.html" title="Appendix�C.�Credits"><link rel="previous" href="os-install.html" title="Linux Install Guides"><link rel="next" href="install-resources.html" title="Resources"><link rel="stylesheet" href="openacs.css" type="text/css"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><a href="http://openacs.org"><img src="/doc/images/alex.jpg" border="0" alt="Alex logo"></a><table width="100%" summary="Navigation header" border="0"><tr><td width="20%" align="left"><a accesskey="p" href="os-install.html">Prev</a> </td><th width="60%" align="center">Appendix�C.�Credits</th><td width="20%" align="right"> <a accesskey="n" href="install-resources.html">Next</a></td></tr></table><hr></div><div class="section" lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="os-security"></a>Security Information</h2></div></div></div><p>
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html><head><meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"><title>Security Information</title><meta name="generator" content="DocBook XSL Stylesheets V1.60.1"><link rel="home" href="index.html" title="OpenACS Core Documentation"><link rel="up" href="credits.html" title="Appendix�C.�Credits"><link rel="previous" href="os-install.html" title="Linux Install Guides"><link rel="next" href="install-resources.html" title="Resources"><link rel="stylesheet" href="openacs.css" type="text/css"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><a href="http://openacs.org"><img src="/doc/images/alex.jpg" border="0" alt="Alex logo"></a><table width="100%" summary="Navigation header" border="0"><tr><td width="20%" align="left"><a accesskey="p" href="os-install.html">Prev</a> </td><th width="60%" align="center">Appendix�C.�Credits</th><td width="20%" align="right"> <a accesskey="n" href="install-resources.html">Next</a></td></tr></table><hr></div><div class="section" lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="os-security"></a>Security Information</h2></div></div><div></div></div><p>
       Once you get your OS installed, it's imperative that you secure your
-      installation. As Jon Griffin repeatedly warns us, "No distribution is
-      secure out of the box."  The Reference Platform implements
+      installation. As Jon Griffin repeatedly warns us, &quot;No distribution is
+      secure out of the box.&quot;  The Reference Platform implements
       some basic precautions, but security is a process, not a
       condition.  If you are responsible for a computer hooked to the
       internet, you are responsible for learning some rudiments of
Index: openacs-4/packages/acs-core-docs/www/packages.html
===================================================================
RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/packages.html,v
diff -u -r1.44 -r1.44.4.1
--- openacs-4/packages/acs-core-docs/www/packages.html	17 Jul 2006 05:38:31 -0000	1.44
+++ openacs-4/packages/acs-core-docs/www/packages.html	3 Feb 2008 12:07:40 -0000	1.44.4.1
@@ -1,18 +1,19 @@
-<html><head><meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"><title>OpenACS Packages</title><meta name="generator" content="DocBook XSL Stylesheets V1.70.1"><link rel="home" href="index.html" title="OpenACS Core Documentation"><link rel="up" href="dev-guide.html" title="Chapter�11.�Development Reference"><link rel="previous" href="dev-guide.html" title="Chapter�11.�Development Reference"><link rel="next" href="objects.html" title="OpenACS Data Models and the Object System"><link rel="stylesheet" href="openacs.css" type="text/css"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><a href="http://openacs.org"><img src="/doc/images/alex.jpg" border="0" alt="Alex logo"></a><table width="100%" summary="Navigation header" border="0"><tr><td width="20%" align="left"><a accesskey="p" href="dev-guide.html">Prev</a> </td><th width="60%" align="center">Chapter�11.�Development Reference</th><td width="20%" align="right"> <a accesskey="n" href="objects.html">Next</a></td></tr></table><hr></div><div class="sect1" lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="packages"></a>OpenACS Packages</h2></div></div></div><div class="authorblurb"><p>By Pete Su and Bryan Quinn</p>
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html><head><meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"><title>OpenACS Packages</title><meta name="generator" content="DocBook XSL Stylesheets V1.60.1"><link rel="home" href="index.html" title="OpenACS Core Documentation"><link rel="up" href="dev-guide.html" title="Chapter�11.�Development Reference"><link rel="previous" href="dev-guide.html" title="Chapter�11.�Development Reference"><link rel="next" href="objects.html" title="OpenACS Data Models and the Object System"><link rel="stylesheet" href="openacs.css" type="text/css"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><a href="http://openacs.org"><img src="/doc/images/alex.jpg" border="0" alt="Alex logo"></a><table width="100%" summary="Navigation header" border="0"><tr><td width="20%" align="left"><a accesskey="p" href="dev-guide.html">Prev</a> </td><th width="60%" align="center">Chapter�11.�Development Reference</th><td width="20%" align="right"> <a accesskey="n" href="objects.html">Next</a></td></tr></table><hr></div><div class="sect1" lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="packages"></a>OpenACS Packages</h2></div></div><div></div></div><div class="authorblurb"><p>By Pete Su and Bryan Quinn</p>
           OpenACS docs are written by the named authors, and may be edited
           by OpenACS documentation staff.
-        </div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="packages-overview"></a>Overview</h3></div></div></div><p>
+        </div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="packages-overview"></a>Overview</h3></div></div><div></div></div><p>
       This document is a guide on how to write a software package for
       OpenACS. OpenACS packages are installed and maintained with the
       OpenACS Package Manager (APM) which is part of the acs-admin
       package.  This document presents reasons for packaging software,
       conventions for the file system and naming that must be
       followed, and step by step instructions for creating a new
-      package for the "Notes" example package.
-    </p></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="server-file-layout"></a>Server file layout</h3></div></div></div><p>
+      package for the &quot;Notes&quot; example package.
+    </p></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="server-file-layout"></a>Server file layout</h3></div></div><div></div></div><p>
       Here is how an OpenACS 5 server is laid out
       starting from the Server root (ROOT):
-    </p><div class="figure"><a name="id1040741"></a><p class="title"><b>Figure�11.1.�Server file layout diagram</b></p><div class="figure-contents"><pre class="programlisting">
+    </p><div class="figure"><a name="id3016637"></a><p class="title"><b>Figure�11.1.�Server file layout diagram</b></p><pre class="programlisting">
 ROOT/
     bin/
         Various executables and scripts for server maintanence.
@@ -30,7 +31,7 @@
     tcl/
         bootstrap code
     www/
-        Pages not in packages (static content, customized pages)</pre></div></div><br class="figure-break"></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="packages-looks"></a>What a Package Looks Like</h3></div></div></div><p>
+        Pages not in packages (static content, customized pages)</pre></div></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="packages-looks"></a>What a Package Looks Like</h3></div></div><div></div></div><p>
       Each package encapsulates all of its data model, library code,
       logic, adminstration pages and user pages in a single part of
       the file tree.  This means developers can track down
@@ -49,8 +50,8 @@
     </p><p>
       <a class="indexterm" name="baby"></a>
       To illustrate the general structure of a package, let's see what the
-      package for the "notes" application should look like.
-    </p><div class="figure"><a name="id1032284"></a><p class="title"><b>Figure�11.2.�Package file layout diagram</b></p><div class="figure-contents"><pre class="programlisting">
+      package for the &quot;notes&quot; application should look like.
+    </p><div class="figure"><a name="id3016732"></a><p class="title"><b>Figure�11.2.�Package file layout diagram</b></p><pre class="programlisting">
 ROOT/
   +-- packages/    APM Root
         |
@@ -107,42 +108,38 @@
         |     |     +-- *.adp                             UI Templates
         |     |     +-- *-oracle.xql                      Oracle-specific Queries
         |     |     +-- *-postgresql.xql                  PostgreSQL-specific Queries
-        +-- Other package directories.</pre></div></div><br class="figure-break"><p>
+        +-- Other package directories.</pre></div><p>
       All file locations are relative to the package root, which in this
-      case is <code class="computeroutput">ROOT/packages/notes</code>. The following table
+      case is <tt class="computeroutput">ROOT/packages/notes</tt>. The following table
       describes in detail what each of the files up in the diagram contain.
     </p><p> 
       A special note on the
-      <code class="computeroutput"><span class="replaceable"><span class="replaceable">PACKAGE-KEY</span></span>/www/resources</code>
+      <tt class="computeroutput"><span class="replaceable"><span class="replaceable">PACKAGE-KEY</span></span>/www/resources</tt>
       directory.
       Files in this directory are available at
-      <code class="computeroutput">http://<span class="replaceable"><span class="replaceable">yourserver</span></span>/resources/<span class="replaceable"><span class="replaceable">PACKAGE-KEY</span></span>/...</code>
+      <tt class="computeroutput">http://<span class="replaceable"><span class="replaceable">yourserver</span></span>/resources/<span class="replaceable"><span class="replaceable">PACKAGE-KEY</span></span>/...</tt>
       and are returned without any permissions checking or even checks
       that the package is installed or mounted.  Files are returned
       directly, so .tcl or .adp files are not sourced in these
       directories.  This makes it suitable for storing icons, css
       files, javascript, and other static content which can be treated
       this way.
-    </p><div class="table"><a name="id1071514"></a><p class="title"><b>Table�11.1.�Package files</b></p><div class="table-contents"><table summary="Package files" cellspacing="0" border="1"><colgroup><col><col><col></colgroup><thead><tr><th>File Type</th><th>Its Use</th><th>Naming Convention</th></tr></thead><tbody><tr><td>Package Specification File</td><td>The package specification file is an XML file generated and
+    </p><div class="table"><a name="id2929000"></a><p class="title"><b>Table�11.1.�Package files</b></p><table summary="Package files" cellspacing="0" border="1"><colgroup><col><col><col></colgroup><thead><tr><th>File Type</th><th>Its Use</th><th>Naming Convention</th></tr></thead><tbody><tr><td>Package Specification File</td><td>The package specification file is an XML file generated and
           maintained by the OpenACS Package Manager (APM).  It specifies
           information about the package including its parameters and its
-          files.</td><td><code class="computeroutput">notes.info</code></td></tr><tr><td>Data Model Creation Script</td><td>
+          files.</td><td><tt class="computeroutput">notes.info</tt></td></tr><tr><td>Data Model Creation Script</td><td>
           Contains the SQL that creates the necessary data model and
           PL/SQL packages (or PL/pgSQL or whatever) to support the
           package. The name must match the convention below or the
           package will not be installed correctly. Notice that
           the script must be under the appropriate directory for
           the database you are developing your package for
           (hopefully all OpenACS-supported databases :-))
-        </td><td>
-          <code class="computeroutput">sql/&lt;database&gt;/notes-create.sql</code>
-        </td></tr><tr><td>Data Model Drop Script</td><td>Contains the SQL that removes the data model and PL/SQL
+        </td><td><tt class="computeroutput">sql/&lt;database&gt;/notes-create.sql</tt></td></tr><tr><td>Data Model Drop Script</td><td>Contains the SQL that removes the data model and PL/SQL
           packages generated by the creation script.  The name must
           match the convention below or the package will not be
           installed correctly.
-        </td><td>
-          <code class="computeroutput">sql/&lt;database&gt;/notes-drop.sql</code>
-        </td></tr><tr><td>Data Model File</td><td>Any .sql file that does not match the naming convention above
+        </td><td><tt class="computeroutput">sql/&lt;database&gt;/notes-drop.sql</tt></td></tr><tr><td>Data Model File</td><td>Any .sql file that does not match the naming convention above
           is recognized as a data model file.  It is useful to separate
           the SQL in the creation and drop scripts into several
           files and then have the scripts source the other data model
@@ -151,80 +148,68 @@
           scripts. See the <a href="http://www.orafaq.com/faqplus.htm#AT" target="_top">
         Oracle FAQ</a> for examples. In
           PostgreSQL the same is acomplished by including <span class="emphasis"><em>\i filename</em></span>.
-        </td><td>
-          <code class="computeroutput">sql/&lt;database&gt;/*.sql</code>
-        </td></tr><tr><td>Data Model Upgrade Scripts</td><td>
+        </td><td><tt class="computeroutput">sql/&lt;database&gt;/*.sql</tt></td></tr><tr><td>Data Model Upgrade Scripts</td><td>
               Contain changes to the data model between versions. The APM
               can automatically load the appropriate upgrade scripts when
               upgrading to a new version of a package.
-            </td><td>
-              <code class="computeroutput">sql/&lt;database&gt;/upgrade/upgrade-&lt;old&gt;-&lt;new&gt;.sql</code>
-            </td></tr><tr><td>
+            </td><td><tt class="computeroutput">sql/&lt;database&gt;/upgrade/upgrade-&lt;old&gt;-&lt;new&gt;.sql</tt></td></tr><tr><td>
           SQL92 Query Files
         </td><td>
           Files with queries that are supported by all
           databases. These are usually SQL92 queries. Notice that
           the .xql filename must match the name of the .tcl file
           that uses those queries.
-        </td><td>
-          <code class="computeroutput">
+        </td><td><tt class="computeroutput">
         *.xql
-          </code>
-        </td></tr><tr><td>
+          </tt></td></tr><tr><td>
           Oracle-specific Query Files
         </td><td>
           Files with queries that are Oracle-specific. Notice that
           the .xql filename must match the name of the .tcl file
           that uses those queries.
-        </td><td>
-          <code class="computeroutput">
+        </td><td><tt class="computeroutput">
         *-oracle.xql
-          </code>
-        </td></tr><tr><td>
+          </tt></td></tr><tr><td>
           PostgreSQL-specific Query Files
         </td><td>
           Files with queries that are PostgreSQL-specific. Notice that
           the .xql filename must match the name of the .tcl file
           that uses those queries.
-        </td><td>
-          <code class="computeroutput">
+        </td><td><tt class="computeroutput">
         *-postgresql.xql
-          </code>
-        </td></tr><tr><td>Tcl Library Files</td><td>
+          </tt></td></tr><tr><td>Tcl Library Files</td><td>
           The Tcl library files include a set of procedures that provide
           an application programming interface (API) for the package to
           utilize.
-        </td><td><code class="computeroutput">tcl/notes-procs.tcl</code></td></tr><tr><td>Tcl Initialization</td><td>The initialization files are used to run Tcl procedures that
+        </td><td><tt class="computeroutput">tcl/notes-procs.tcl</tt></td></tr><tr><td>Tcl Initialization</td><td>The initialization files are used to run Tcl procedures that
           should only be sourced once on startup.  Examples of
           statements to put here are registered filters or procedures.
           Tcl initialization files are sourced once on server startup
           after all of the Tcl library files are sourced.
-        </td><td>
-          <code class="computeroutput">tcl/notes-init.tcl</code>
-        </td></tr><tr><td>Administration UI</td><td>The administration UI is used to administer the instances of
+        </td><td><tt class="computeroutput">tcl/notes-init.tcl</tt></td></tr><tr><td>Administration UI</td><td>The administration UI is used to administer the instances of
           the package.  For example, the forums administration UI is
           used to create new forums, moderate postings, and create new
-          categories for forums postings.</td><td><code class="computeroutput">www/admin/*</code></td></tr><tr><td>Administration UI Index Page</td><td>Every package administration UI must have an index page.  In
-          most cases, this is <code class="computeroutput">index.tcl</code> but it can be
-          any file with the name <code class="computeroutput">index</code>, such as
-          index.html or index.adp.</td><td><code class="computeroutput">www/admin/index.tcl</code></td></tr><tr><td>Regression Tests</td><td>Every package should have a set of regression tests that
+          categories for forums postings.</td><td><tt class="computeroutput">www/admin/*</tt></td></tr><tr><td>Administration UI Index Page</td><td>Every package administration UI must have an index page.  In
+          most cases, this is <tt class="computeroutput">index.tcl</tt> but it can be
+          any file with the name <tt class="computeroutput">index</tt>, such as
+          index.html or index.adp.</td><td><tt class="computeroutput">www/admin/index.tcl</tt></td></tr><tr><td>Regression Tests</td><td>Every package should have a set of regression tests that
           verify that it is in working operation.   
           These tests should be able to be run at any time after the package has
           been installed and report helpful error messages when there is
-          a fault in the system.</td><td><code class="computeroutput">www/admin/tests/</code></td></tr><tr><td>Regression Test Index Page</td><td>The regression test directory must have an index page that
+          a fault in the system.</td><td><tt class="computeroutput">www/admin/tests/</tt></td></tr><tr><td>Regression Test Index Page</td><td>The regression test directory must have an index page that
           displays all of the tests available and provides information
           on how to run them.  This file can have any extension, as long
-          as its name is <code class="computeroutput">index</code>.</td><td><code class="computeroutput">www/admin/tests/index.html</code></td></tr><tr><td>Documentation</td><td>Every package must include a full set of documentation that
+          as its name is <tt class="computeroutput">index</tt>.</td><td><tt class="computeroutput">www/admin/tests/index.html</tt></td></tr><tr><td>Documentation</td><td>Every package must include a full set of documentation that
           includes requirements and design documents, and user-level and
-          developer-level documentation where appropriate.</td><td><code class="computeroutput">www/doc/</code></td></tr><tr><td>Documentation Index Page</td><td>The documentation directory must include a static HTML file with the name
-          of <code class="computeroutput">index.html</code>.</td><td><code class="computeroutput">www/doc/index.html</code></td></tr><tr><td>UI Logic Scripts</td><td>Packages provide a UI for users to access the system.  The UI
+          developer-level documentation where appropriate.</td><td><tt class="computeroutput">www/doc/</tt></td></tr><tr><td>Documentation Index Page</td><td>The documentation directory must include a static HTML file with the name
+          of <tt class="computeroutput">index.html</tt>.</td><td><tt class="computeroutput">www/doc/index.html</tt></td></tr><tr><td>UI Logic Scripts</td><td>Packages provide a UI for users to access the system.  The UI
           is split into Logic and Templates.  The logic scripts
           perform database queries and prepare variables for
-          presentation by the associated templates.</td><td><code class="computeroutput">www/*.tcl</code></td></tr><tr><td>UI Templates</td><td>Templates are used to control the presentation of the UI.
+          presentation by the associated templates.</td><td><tt class="computeroutput">www/*.tcl</tt></td></tr><tr><td>UI Templates</td><td>Templates are used to control the presentation of the UI.
           Templates receive a set of data sources from the logic scripts
-          and prepare them for display to the browser.</td><td><code class="computeroutput">www/*.adp</code></td></tr><tr><td>UI Index Page</td><td>The UI must have an index page composed of a logic script
-          called <code class="computeroutput">index.tcl</code> and a template called
-          <code class="computeroutput">index.adp</code>.</td><td><code class="computeroutput">www/index.tcl</code></td></tr></tbody></table></div></div><br class="table-break"></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="packages-apm"></a>The APM</h3></div></div></div><p>
+          and prepare them for display to the browser.</td><td><tt class="computeroutput">www/*.adp</tt></td></tr><tr><td>UI Index Page</td><td>The UI must have an index page composed of a logic script
+          called <tt class="computeroutput">index.tcl</tt> and a template called
+          <tt class="computeroutput">index.adp</tt>.</td><td><tt class="computeroutput">www/index.tcl</tt></td></tr></tbody></table></div></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="packages-apm"></a>The APM</h3></div></div><div></div></div><p>
       The APM is used to create, maintain, and install packages.  It takes
       care of copying all of the files and registering the package in the
       system.  The APM is responsible for:
@@ -252,7 +237,7 @@
     </p><p>
       We will also discuss how to organize your files and queries so
       they work with the OpenACS Query Dispatcher.
-    </p></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="packages-making-a-package"></a>Making a Package</h3></div></div></div><p>
+    </p></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="packages-making-a-package"></a>Making a Package</h3></div></div><div></div></div><p>
       Here is how you make a package.
     </p><div class="orderedlist"><ol type="1"><li><p>Login as a site-wide administrator on your web service.
     </p></li><li><p>Go to the package manager on your server.  The URL is <a href="/acs-admin/apm" target="_top">/acs-admin/apm</a>.
@@ -267,27 +252,27 @@
           distinguish it from all the others. It is used as a database key to
           keep track of the package and as the name of the directory in the file
           system where all the files related to your package will live. Example
-          package keys in the current system include: <code class="computeroutput">forums</code>,
-          <code class="computeroutput">acs-kernel</code> and so on. For the example application, we
-          will use the package key <code class="computeroutput">notes</code>.
+          package keys in the current system include: <tt class="computeroutput">forums</tt>,
+          <tt class="computeroutput">acs-kernel</tt> and so on. For the example application, we
+          will use the package key <tt class="computeroutput">notes</tt>.
         </p></dd><dt><span class="term">Package Name
           </span></dt><dd><p>
           This is a short human readable name for your package. For our example,
-          we will use the name "Notes".
+          we will use the name &quot;Notes&quot;.
         </p></dd><dt><span class="term">Package Plural
           </span></dt><dd><p>
           If your package name is a nice singular noun, this should be the
           plural form of it. I assume the plural form is used when multiple
           instances of the package are used by a single service. We'll talk more
           about package instances later. Our example apllication doesn't really
-          have a good plural name. So just make it also be "Notes".
+          have a good plural name. So just make it also be &quot;Notes&quot;.
         </p></dd><dt><span class="term">Package Type
           </span></dt><dd><p>
           Generally we think of packages as either being <span class="emphasis"><em>applications</em></span>,
           meaning that the package is meant primarily for use by end-users, or
           <span class="emphasis"><em>services</em></span> meaning that the package is meant to be a reusable
-          library of code, to be used by other packages. <code class="computeroutput">forums</code> is
-          a good example of an application, while <code class="computeroutput">acs-templating</code> is
+          library of code, to be used by other packages. <tt class="computeroutput">forums</tt> is
+          a good example of an application, while <tt class="computeroutput">acs-templating</tt> is
           a good example of a service. Our example is an application, so pick
           that.
         </p></dd><dt><span class="term">Package URL
@@ -303,52 +288,52 @@
         </p></dd><dt><span class="term">Summary and Description
           </span></dt><dd><p>
           Enter a short summary and longer description of what the Notes
-          application will do. That is, something like "this application keeps
-          short textual notes in the database", and so on.
+          application will do. That is, something like &quot;this application keeps
+          short textual notes in the database&quot;, and so on.
         </p></dd></dl></div><p>
-    </p></li><li><p>Click the button "Create Package".
+    </p></li><li><p>Click the button &quot;Create Package&quot;.
     </p></li><li><p>At this point, APM will create a directory called
-      <code class="computeroutput">ROOT/packages/notes</code>.
+      <tt class="computeroutput">ROOT/packages/notes</tt>.
     </p></li><li><p>
           The directory that APM created will be empty except for the
-          <code class="computeroutput">notes.info</code> file. Create a file
+          <tt class="computeroutput">notes.info</tt> file. Create a file
           called
-          <code class="computeroutput">ROOT/packages/notes/sql/oracle/notes-create.sql</code>. We'll
+          <tt class="computeroutput">ROOT/packages/notes/sql/oracle/notes-create.sql</tt>. We'll
           fill this file with our <a href="objects.html" title="OpenACS Data Models and the Object System">data model</a>
           very soon. Create a file called
-          <code class="computeroutput">ROOT/packages/notes/sql/oracle/notes-drop.sql</code>. This
+          <tt class="computeroutput">ROOT/packages/notes/sql/oracle/notes-drop.sql</tt>. This
           will contain the instructions to drop the data model. To be
           complete, you would also create the PostgreSQL versions of these
           files as well in
-          <code class="computeroutput">ROOT/packages/notes/sql/postgresql/notes-create.sql</code>
+          <tt class="computeroutput">ROOT/packages/notes/sql/postgresql/notes-create.sql</tt>
           and
-          <code class="computeroutput">ROOT/packages/notes/sql/postgresql/notes-drop.sql</code>.
+          <tt class="computeroutput">ROOT/packages/notes/sql/postgresql/notes-drop.sql</tt>.
         </p><p>
           After you do this, go back to the main APM page. From there,
-          click the link called "notes" to go to the management
-          page for the new package. Now click the link called "Manage
-          file information", then the "Scan the
-          <code class="computeroutput">packages/notes</code> directory for
-          additional files in this package" link on that page to scan
+          click the link called &quot;notes&quot; to go to the management
+          page for the new package. Now click the link called &quot;Manage
+          file information&quot;, then the &quot;Scan the
+          <tt class="computeroutput">packages/notes</tt> directory for
+          additional files in this package&quot; link on that page to scan
           the file system for new files.  This will bring you do a page
           that lists all the files you just added and lets you add them to
-          the <code class="computeroutput">notes</code> package.
+          the <tt class="computeroutput">notes</tt> package.
         </p><p>
-          Note that while the <code class="computeroutput">.sql</code> files
+          Note that while the <tt class="computeroutput">.sql</tt> files
           have been added to the packge, they <span class="emphasis"><em>have not</em></span>
           been loaded into the database. For the purposes of development,
           you have to load the data model by hand, because while OpenACS
           has automatic mechanisms for loading and reloading
-          <code class="computeroutput">.tcl</code> files for code, it does not
+          <tt class="computeroutput">.tcl</tt> files for code, it does not
           do the same thing for data model files.  
-        </p></li><li><p>Now go back to the main management page for the <code class="computeroutput">notes</code>
-          If your package has parameters, create them using the "Manage
-          Parameter Information" link.  Define package callbacks via the "Tcl Callbacks (install,
-        instantiate, mount)" link.</p></li><li><p>The new package has been created and installed in the server. At
+        </p></li><li><p>Now go back to the main management page for the <tt class="computeroutput">notes</tt>
+          If your package has parameters, create them using the &quot;Manage
+          Parameter Information&quot; link.  Define package callbacks via the &quot;Tcl Callbacks (install,
+        instantiate, mount)&quot; link.</p></li><li><p>The new package has been created and installed in the server. At
       this point, you should add your package files to your CVS repository.
       I'll assume that you have set up your development repository according
       to the standards described in 
-      <a href="cvs-tips.html#cvs-service-import">this appendix</a>. If so, then you just do this:
+      <a href="">this appendix</a>. If so, then you just do this:
     </p><pre class="programlisting">% cd ROOT/packages
 % cvs add notes
 % cd notes
@@ -357,18 +342,18 @@
 % cd sql
 % cvs add *.sql
 % cd ROOT/packages/notes
-% cvs commit -m "add new package for notes"
+% cvs commit -m &quot;add new package for notes&quot;
     </pre></li><li><p>
       Now you can start developing the package. In addition to writing code,
       you should also consider the tasks outlined in the <a href="tutorial-newpackage.html" title="Creating an Application Package">package development tutorial</a>.
-    </p></li></ol></div></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="packages-subsites"></a>The Site Map and Package Instances</h3></div></div></div><p>
+    </p></li></ol></div></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="packages-subsites"></a>The Site Map and Package Instances</h3></div></div><div></div></div><p>
       At this point, you are probably excited to see your new package in
       action. But, we haven't added any user visible pages yet. By
       convention, user visible pages go in the
-      <code class="computeroutput">ROOT/packages/notes/www</code> directory. So go there and add a
-      file called <code class="computeroutput">hello.html</code> with some text in it. Now we have
+      <tt class="computeroutput">ROOT/packages/notes/www</tt> directory. So go there and add a
+      file called <tt class="computeroutput">hello.html</tt> with some text in it. Now we have
       to make the user pages visible in the site. Since we didn't put the
-      pages underneath <code class="computeroutput">ROOT/www</code> they will not appear on their
+      pages underneath <tt class="computeroutput">ROOT/www</tt> they will not appear on their
       own.  What we have to do is <span class="emphasis"><em>mount</em></span> the application into the site
       map. That is, we have to define the URL from which the application
       will serve its pages.
@@ -381,8 +366,8 @@
       us to easily map package instances to URLs. As we said before, each
       instance of an application has its own set of parameters and
       runs from its own URL within the site.  What this means is that even
-      though all the code for the <code class="computeroutput">notes</code> application lives in
-      <code class="computeroutput">ROOT/packages/notes</code>, the application itself can run from
+      though all the code for the <tt class="computeroutput">notes</tt> application lives in
+      <tt class="computeroutput">ROOT/packages/notes</tt>, the application itself can run from
       any number of locations in the site. This allows developers and
       administrators to build sites that look to the user like a collection
       of many indedendent applications that actually run on a single shared
@@ -391,27 +376,27 @@
       requested by the user at any given time. The <a href="subsites.html" title="Writing OpenACS Application Pages">page development</a> tutorial shows you how to use this
       information in your user interface.
     </p><p>
-      In order to make the new <code class="computeroutput">notes</code> application visible to
+      In order to make the new <tt class="computeroutput">notes</tt> application visible to
       users, we have to mount it in the site map. You do this by going to
       the <a href="/admin/site-map" target="_top">Site Map</a> page, which is by
-      default available at <code class="computeroutput">/acs-admin/site-map</code>. Use the
-      interface here to add a new sub-folder called <code class="computeroutput">notes</code> to
-      the root of the site, then click "new application" to mount a new
-      instance of the <code class="computeroutput">notes</code> application to the site. Name the
-      new instance <code class="computeroutput">notes-1</code>.
+      default available at <tt class="computeroutput">/acs-admin/site-map</tt>. Use the
+      interface here to add a new sub-folder called <tt class="computeroutput">notes</tt> to
+      the root of the site, then click &quot;new application&quot; to mount a new
+      instance of the <tt class="computeroutput">notes</tt> application to the site. Name the
+      new instance <tt class="computeroutput">notes-1</tt>.
     </p><p>
-      Then type this URL into your browser: <code class="computeroutput">http://<span class="replaceable"><span class="replaceable">yourserver</span></span>/notes/hello.html</code>
+      Then type this URL into your browser: <tt class="computeroutput">http://<span class="replaceable"><span class="replaceable">yourserver</span></span>/notes/hello.html</tt>
     </p><p>
       Now you should see the contents of the page that you added. What has
-      happened is that all URLs that start with <code class="computeroutput">/notes</code> have
+      happened is that all URLs that start with <tt class="computeroutput">/notes</tt> have
       been mapped in such a way as to serve content from the directory
-      <code class="computeroutput">ROOT/packages/notes/www</code>. At this point, you can
+      <tt class="computeroutput">ROOT/packages/notes/www</tt>. At this point, you can
       experiment with the site map by mounting multiple instances of the not
       yet written Notes application at various places in the site. In a
       later document, we'll see how to write your application so that the
       code can detect from what URL it was invoked. This is the key
       to supporting <a href="subsites.html" title="Writing OpenACS Application Pages">subsites</a>.
-    </p></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="packages-summary"></a>Summary</h3></div></div></div><p>
+    </p></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="packages-summary"></a>Summary</h3></div></div><div></div></div><p>
       The APM performs the following tasks in an OpenACS site:
     </p><div class="itemizedlist"><ul type="disc"><li><p>
       Manages creation, installation, and removal of packages from the
@@ -426,4 +411,4 @@
     </p></li><li><p>
       Writes out package distribution files for other people to download and
       install. We'll cover this later.
-    </p></li></ul></div></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="packages-add-reading"></a>Additional Reading</h3></div></div></div><div class="itemizedlist"><ul type="disc"><li><p><a href="apm-design.html">Package Manager Design</a></p></li><li><p><a href="apm-requirements.html">Package Manager Requirements</a></p></li><li><p><a href="tutorial-newpackage.html" title="Creating an Application Package">package development tutorial</a></p></li></ul></div><div class="cvstag">($Id$)</div></div></div><div class="navfooter"><hr><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="dev-guide.html">Prev</a> </td><td width="20%" align="center"><a accesskey="h" href="index.html">Home</a></td><td width="40%" align="right"> <a accesskey="n" href="objects.html">Next</a></td></tr><tr><td width="40%" align="left">Chapter�11.�Development Reference </td><td width="20%" align="center"><a accesskey="u" href="dev-guide.html">Up</a></td><td width="40%" align="right"> OpenACS Data Models and the Object System</td></tr></table><hr><address><a href="mailto:docs@openacs.org">docs@openacs.org</a></address></div><a name="comments"></a><center><a href="http://openacs.org/doc/current/packages.html#comments">View comments on this page at openacs.org</a></center></body></html>
+    </p></li></ul></div></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="packages-add-reading"></a>Additional Reading</h3></div></div><div></div></div><div class="itemizedlist"><ul type="disc"><li><p><a href="apm-design.html">Package Manager Design</a></p></li><li><p><a href="apm-requirements.html">Package Manager Requirements</a></p></li><li><p><a href="tutorial-newpackage.html" title="Creating an Application Package">package development tutorial</a></p></li></ul></div><div class="cvstag">($Id$)</div></div></div><div class="navfooter"><hr><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="dev-guide.html">Prev</a> </td><td width="20%" align="center"><a accesskey="h" href="index.html">Home</a></td><td width="40%" align="right"> <a accesskey="n" href="objects.html">Next</a></td></tr><tr><td width="40%" align="left">Chapter�11.�Development Reference </td><td width="20%" align="center"><a accesskey="u" href="dev-guide.html">Up</a></td><td width="40%" align="right"> OpenACS Data Models and the Object System</td></tr></table><hr><address><a href="mailto:docs@openacs.org">docs@openacs.org</a></address></div><a name="comments"></a><center><a href="http://openacs.org/doc/current/packages.html#comments">View comments on this page at openacs.org</a></center></body></html>
Index: openacs-4/packages/acs-core-docs/www/parties.html
===================================================================
RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/parties.html,v
diff -u -r1.44 -r1.44.4.1
--- openacs-4/packages/acs-core-docs/www/parties.html	25 Sep 2006 20:32:37 -0000	1.44
+++ openacs-4/packages/acs-core-docs/www/parties.html	3 Feb 2008 12:07:40 -0000	1.44.4.1
@@ -1,7 +1,8 @@
-<html><head><meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"><title>Parties in OpenACS</title><meta name="generator" content="DocBook XSL Stylesheets V1.70.1"><link rel="home" href="index.html" title="OpenACS Core Documentation"><link rel="up" href="dev-guide.html" title="Chapter�11.�Development Reference"><link rel="previous" href="subsites.html" title="Writing OpenACS Application Pages"><link rel="next" href="permissions-tediously-explained.html" title="OpenACS Permissions Tediously Explained"><link rel="stylesheet" href="openacs.css" type="text/css"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><a href="http://openacs.org"><img src="/doc/images/alex.jpg" border="0" alt="Alex logo"></a><table width="100%" summary="Navigation header" border="0"><tr><td width="20%" align="left"><a accesskey="p" href="subsites.html">Prev</a> </td><th width="60%" align="center">Chapter�11.�Development Reference</th><td width="20%" align="right"> <a accesskey="n" href="permissions-tediously-explained.html">Next</a></td></tr></table><hr></div><div class="sect1" lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="parties"></a>Parties in OpenACS</h2></div></div></div><div class="authorblurb"><p>By <a href="http://planitia.org" target="_top">Rafael H. Schloming</a></p>
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html><head><meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"><title>Parties in OpenACS</title><meta name="generator" content="DocBook XSL Stylesheets V1.60.1"><link rel="home" href="index.html" title="OpenACS Core Documentation"><link rel="up" href="dev-guide.html" title="Chapter�11.�Development Reference"><link rel="previous" href="subsites.html" title="Writing OpenACS Application Pages"><link rel="next" href="permissions-tediously-explained.html" title="OpenACS Permissions Tediously Explained"><link rel="stylesheet" href="openacs.css" type="text/css"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><a href="http://openacs.org"><img src="/doc/images/alex.jpg" border="0" alt="Alex logo"></a><table width="100%" summary="Navigation header" border="0"><tr><td width="20%" align="left"><a accesskey="p" href="subsites.html">Prev</a> </td><th width="60%" align="center">Chapter�11.�Development Reference</th><td width="20%" align="right"> <a accesskey="n" href="permissions-tediously-explained.html">Next</a></td></tr></table><hr></div><div class="sect1" lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="parties"></a>Parties in OpenACS</h2></div></div><div></div></div><div class="authorblurb"><p>By <a href="http://planitia.org" target="_top">Rafael H. Schloming</a></p>
           OpenACS docs are written by the named authors, and may be edited
           by OpenACS documentation staff.
-        </div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="parties-intro"></a>Introduction</h3></div></div></div><p>While many applications must deal with individuals and many applications
+        </div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="parties-intro"></a>Introduction</h3></div></div><div></div></div><p>While many applications must deal with individuals and many applications
 must deal with groups, most applications must deal with individuals
 <span class="emphasis"><em>or</em></span> groups. It is often the case with such
 applications that
@@ -10,20 +11,20 @@
 practical way to manage both. This concept is
 so mundane that there is
 no need to invent special terminology. This
-supertype is called a "party".</p><p>A classic example of the "party" supertype is evident
+supertype is called a &quot;party&quot;.</p><p>A classic example of the &quot;party&quot; supertype is evident
 in address books. A typical address book might contain
 the address of a doctor, grocery store, and friend. The
 first field in an entry in the address book is not labeled a person or
-company, but a "party".
-</p></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="parties-data-model"></a>The Data Model</h3></div></div></div><p>The parties developer guide begins with
+company, but a &quot;party&quot;.
+</p></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="parties-data-model"></a>The Data Model</h3></div></div><div></div></div><p>The parties developer guide begins with
 an introduction to the parties data model, since OpenACS
-community applications likely require using it in some way.</p><p><span class="strong"><strong>Parties</strong></span></p><p>The central table in the parties data model is the parties table itself.
+community applications likely require using it in some way.</p><p><span class="strong">Parties</span></p><p>The central table in the parties data model is the parties table itself.
 Every party has exactly one row in this table. Every party has an optional
 unique email address and an optional url. A party is an acs object, so
 permissions may be granted and revoked on parties and auditing information is
 stored in the acs objects table.</p><pre class="programlisting">
 
-<code class="computeroutput">
+<tt class="computeroutput">
 create table parties (
     party_id    not null
             constraint parties_party_id_fk references
@@ -33,54 +34,54 @@
             constraint parties_email_un unique,
     url     varchar(200)
 );
-</code>
+</tt>
 
-</pre><p>The <code class="computeroutput">persons</code> and
-<code class="computeroutput">groups</code> tables extend the
-<code class="computeroutput">parties</code> table.  A row in the persons table represents the
+</pre><p>The <tt class="computeroutput">persons</tt> and
+<tt class="computeroutput">groups</tt> tables extend the
+<tt class="computeroutput">parties</tt> table.  A row in the persons table represents the
 most generic form of individual modeled. An individual need not be known to the system as a user. A
 user is a further specialized form of an individual (discussed later). A
 row in the groups table represents the most generic form of group
 modeled, where a group is an aggregation of zero or more
-individuals.</p><p><span class="strong"><strong>Persons</strong></span></p><p>If a party is an individual then there will be a row in the persons table
-containing <code class="computeroutput">first_names</code> and
-<code class="computeroutput">last_name</code>
+individuals.</p><p><span class="strong">Persons</span></p><p>If a party is an individual then there will be a row in the persons table
+containing <tt class="computeroutput">first_names</tt> and
+<tt class="computeroutput">last_name</tt>
  for that individual. The
-primary key of the persons table (<code class="computeroutput">person_id</code>) references the primary key of
-the parties table (<code class="computeroutput">party_id</code>), so that there is a corresponding row in the
+primary key of the persons table (<tt class="computeroutput">person_id</tt>) references the primary key of
+the parties table (<tt class="computeroutput">party_id</tt>), so that there is a corresponding row in the
 parties table when there is a row in the persons table.
 </p><pre class="programlisting">
 
-<code class="computeroutput">create table persons (
+<tt class="computeroutput">create table persons (
     person_id   not null
             constraint persons_person_id_fk
             references parties (party_id)
             constraint persons_person_id_pk primary key,
     first_names varchar(100) not null,
     last_name   varchar(100) not null
 );
-</code>
+</tt>
 
-</pre><p><span class="strong"><strong>Users</strong></span></p><p>The <code class="computeroutput">users</code> table is a more
-specialized form of <code class="computeroutput">persons</code> table. A row
-in <code class="computeroutput">users</code> table represents an individual that has login access to the
+</pre><p><span class="strong">Users</span></p><p>The <tt class="computeroutput">users</tt> table is a more
+specialized form of <tt class="computeroutput">persons</tt> table. A row
+in <tt class="computeroutput">users</tt> table represents an individual that has login access to the
 system. The primary key of the users table references the primary
 key of the persons table. This guarantees that if there is a row
-in <code class="computeroutput">users</code> table then there must be a
-corresponding row in <code class="computeroutput">persons</code> 
-and <code class="computeroutput">parties</code> tables.</p><p>Decomposing all the information
+in <tt class="computeroutput">users</tt> table then there must be a
+corresponding row in <tt class="computeroutput">persons</tt> 
+and <tt class="computeroutput">parties</tt> tables.</p><p>Decomposing all the information
 associated with a user into the four tables (acs_objects, parties, persons,
 users) has some immediate benefits.  For instance, it is possible to remove access to a user from a live
 system by removing his entry from the users table, while leaving the rest of
 his information present (i.e. turning him from a user into a
-person).</p><p>Wherever possible the OpenACS data model references the <code class="computeroutput">persons</code> or
-<code class="computeroutput">parties</code> table, <span class="strong"><strong>not</strong></span> the <code class="computeroutput">users</code> table.
+person).</p><p>Wherever possible the OpenACS data model references the <tt class="computeroutput">persons</tt> or
+<tt class="computeroutput">parties</tt> table, <span class="strong">not</span> the <tt class="computeroutput">users</tt> table.
 Developers should be careful to
 only reference the users table in situations where it is clear that the
 reference is to a user for all cases and not to any other individual
 for any case.</p><pre class="programlisting">
 
-<code class="computeroutput">create table users (
+<tt class="computeroutput">create table users (
     user_id         not null
                 constraint users_user_id_fk
                 references persons (person_id)
@@ -105,34 +106,34 @@
     password_question   varchar(1000),
     password_answer     varchar(1000)
 );
-</code>
+</tt>
 
-</pre><p><span class="strong"><strong>Groups</strong></span></p><p>The final piece of the parties data model is the groups data model. A
+</pre><p><span class="strong">Groups</span></p><p>The final piece of the parties data model is the groups data model. A
 group is a specialization of a party that represents an aggregation of
 zero or more other
 parties. The only extra information directly associated with a group (beyond
 that in the parties table) is the name of the group:</p><pre class="programlisting">
 
-<code class="computeroutput">create table groups (
+<tt class="computeroutput">create table groups (
     group_id    not null
             constraint groups_group_id_fk
             references parties (party_id)
             constraint groups_group_id_pk primary key,
     group_name  varchar(100) not null
 );
-</code>
+</tt>
 
 </pre><p>
 There is another piece to the groups data model that records relations between
 parties and groups.
-</p><p><span class="strong"><strong>Group Relations</strong></span></p><p>Two types of group relations are represented in the data model:
+</p><p><span class="strong">Group Relations</span></p><p>Two types of group relations are represented in the data model:
 membership relations and composite relations.
 The full range of sophisticated group structures that exist in the real
 world can be modelled in OpenACS by these two relationship types.</p><p>Membership relations represent direct membership relation between parties and groups. A party may be
-a "member" of a group.  Direct membership relations are
+a &quot;member&quot; of a group.  Direct membership relations are
 common in administrative practices, and do not follow basic set
 theory rules.  If A is a member of B, and B is a member of C, A is
-<span class="strong"><strong>not</strong></span> a member of C. Membership relations are not transitive.
+<span class="strong">not</span> a member of C. Membership relations are not transitive.
 </p><p>Composition relation represents composite relation
 between <span class="emphasis"><em>two groups</em></span>. Composite relation is
 transitive. That is, it works like
@@ -148,11 +149,11 @@
 group that is a member of Greenpeace.  Now, consider a multinational
 corporation (MC) that has a U.S. division and a Eurasian division. A member of either the
 U.S. or Eurasian division is automatically a member of the MC. In this
-situation the U.S. and Eurasian divisions are "components" of
+situation the U.S. and Eurasian divisions are &quot;components&quot; of
 the MC, i.e., membership <span class="emphasis"><em>is</em></span> transitive with respect to
 composition. Furthermore, a member of a European (or other) office of the MC
 is automatically a member of the MC.
-</p><p><span class="strong"><strong>Group Membership</strong></span></p><p>Group memberships can be created and manipulated using the membership_rel
+</p><p><span class="strong">Group Membership</span></p><p>Group memberships can be created and manipulated using the membership_rel
 package. Only one membership object can be created for a given
 group, party pair.
 </p><p>
@@ -165,7 +166,7 @@
 member of a household (indirect membership) at a video rental store.
 </p><pre class="programlisting">
 
-<code class="computeroutput">
+<tt class="computeroutput">
 # sql code
 create or replace package membership_rel
 as
@@ -207,17 +208,17 @@
 end membership_rel;
 /
 show errors
-</code>
+</tt>
 
-</pre><p><span class="strong"><strong>Group Composition</strong></span></p><p>Composition relations can be created or destroyed using the
+</pre><p><span class="strong">Group Composition</span></p><p>Composition relations can be created or destroyed using the
 composition_rel package. The only restriction on compositions is that there
 cannot be a reference loop, i.e., a group cannot be a component of itself either
 directly or indirectly. This constraint is maintained for you by the API. 
 So users do not see some random PL/SQL error message, 
 do not give them the option to create a composition relation that
 would result in a circular reference.</p><pre class="programlisting">
 
-<code class="computeroutput">
+<tt class="computeroutput">
 # sql code
 create or replace package composition_rel
 as
@@ -238,88 +239,88 @@
 end composition_rel;
 /
 show errors
-</code>
+</tt>
 
-</pre></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="parties-views"></a>Views</h3></div></div></div><p>The parties data model does a reasonable job of representing many
+</pre></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="parties-views"></a>Views</h3></div></div><div></div></div><p>The parties data model does a reasonable job of representing many
 of the situations one is likely to encounter when modeling organizational
 structures. We still need to be able to efficiently answer questions like
-"what members are in this group and all of its components?", and
-"of what groups is this party a member either directly or
-indirectly?". Composition relations allow you to describe an arbitrary
+&quot;what members are in this group and all of its components?&quot;, and
+&quot;of what groups is this party a member either directly or
+indirectly?&quot;. Composition relations allow you to describe an arbitrary
 Directed Acyclic Graph (DAG) between a group and its components. For these
 reasons the party system provides a bunch of views that take advantage of the
 internal representation of group relations to answer questions like these
-very quickly.</p><p>The <code class="computeroutput">group_component_map</code>
+very quickly.</p><p>The <tt class="computeroutput">group_component_map</tt>
  view returns all the subcomponents of a group including components of
-sub components and so forth. The <code class="computeroutput">container_id</code> column is the <code class="computeroutput">group_id</code> of the
-group in which <code class="computeroutput">component_id</code> is directly contained. This allows you to easily
+sub components and so forth. The <tt class="computeroutput">container_id</tt> column is the <tt class="computeroutput">group_id</tt> of the
+group in which <tt class="computeroutput">component_id</tt> is directly contained. This allows you to easily
 distinguish whether a component is a direct component or an indirect
-component. If a component is a direct component then <code class="computeroutput">group_id</code> will be equal
-to <code class="computeroutput">container_id</code>. You can think of this view as having a primary key of
-<code class="computeroutput">group_id</code>, <code class="computeroutput">component_id</code>, and <code class="computeroutput">container_id</code>. The <code class="computeroutput">rel_id</code> column points to the row
-in <code class="computeroutput">acs_rels</code> table that contains the relation object that relates <code class="computeroutput">component_id</code> to
-<code class="computeroutput">container_id</code>. The <code class="computeroutput">rel_id</code> might be useful for retrieving or updating standard
+component. If a component is a direct component then <tt class="computeroutput">group_id</tt> will be equal
+to <tt class="computeroutput">container_id</tt>. You can think of this view as having a primary key of
+<tt class="computeroutput">group_id</tt>, <tt class="computeroutput">component_id</tt>, and <tt class="computeroutput">container_id</tt>. The <tt class="computeroutput">rel_id</tt> column points to the row
+in <tt class="computeroutput">acs_rels</tt> table that contains the relation object that relates <tt class="computeroutput">component_id</tt> to
+<tt class="computeroutput">container_id</tt>. The <tt class="computeroutput">rel_id</tt> might be useful for retrieving or updating standard
 auditing info for the relation.</p><pre class="programlisting">
 
-<code class="computeroutput">create or replace view group_component_map
+<tt class="computeroutput">create or replace view group_component_map
 as select group_id, component_id, container_id, rel_id
 ...
-</code>
+</tt>
 
-</pre><p>The <code class="computeroutput">group_member_map</code> view is similar to <code class="computeroutput">group_component_map</code> except for membership relations.
+</pre><p>The <tt class="computeroutput">group_member_map</tt> view is similar to <tt class="computeroutput">group_component_map</tt> except for membership relations.
 This view returns all membership relations regardless of membership state.</p><pre class="programlisting">
 
-<code class="computeroutput">create or replace view group_member_map
+<tt class="computeroutput">create or replace view group_member_map
 as select group_id, member_id, container_id, rel_id
 ...
-</code>
+</tt>
 
-</pre><p>The <code class="computeroutput">group_approved_member_map</code>
-view is the same as <code class="computeroutput">group_member_map</code> except
+</pre><p>The <tt class="computeroutput">group_approved_member_map</tt>
+view is the same as <tt class="computeroutput">group_member_map</tt> except
 it only returns entries that relate to approved members.</p><pre class="programlisting">
 
-<code class="computeroutput">create or replace view group_approved_member_map
+<tt class="computeroutput">create or replace view group_approved_member_map
 as select group_id, member_id, container_id, rel_id
 ...
-</code>
+</tt>
 
-</pre><p>The <code class="computeroutput">group_distinct_member_map</code>
+</pre><p>The <tt class="computeroutput">group_distinct_member_map</tt>
 view is a
 useful view if you do not care about the distinction between
 direct membership and indirect membership. It returns all members of a
 group including members of components --the transitive closure.</p><pre class="programlisting">
 
-<code class="computeroutput">create or replace view group_distinct_member_map
+<tt class="computeroutput">create or replace view group_distinct_member_map
 as select group_id, member_id
 ...
-</code>
+</tt>
 
-</pre><p>The <code class="computeroutput">party_member_map</code> view is the same as <code class="computeroutput">group_distinct_member_map</code>, except it includes the
+</pre><p>The <tt class="computeroutput">party_member_map</tt> view is the same as <tt class="computeroutput">group_distinct_member_map</tt>, except it includes the
 identity mapping. It maps from a party to the fully expanded
 list of parties represented by that party including the party itself. So if a
 party is an individual, this view will have exactly one mapping that is from
 that party to itself. If a view is a group containing three individuals, this
 view will have four rows for that party, one for each member, and one from
 the party to itself.</p><pre class="programlisting">
 
-<code class="computeroutput">create or replace view party_member_map
+<tt class="computeroutput">create or replace view party_member_map
 as select party_id, member_id
 ...
-</code>
+</tt>
 
-</pre><p>The <code class="computeroutput">party_approved_member_map</code> view is the same as <code class="computeroutput">party_member_map</code> except that when it expands groups, it only
+</pre><p>The <tt class="computeroutput">party_approved_member_map</tt> view is the same as <tt class="computeroutput">party_member_map</tt> except that when it expands groups, it only
 pays attention to approved members.</p><pre class="programlisting">
 
-<code class="computeroutput">create or replace view party_approved_member_map
+<tt class="computeroutput">create or replace view party_approved_member_map
 as select party_id, member_id
 ...
-</code>
+</tt>
 
-</pre></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="parties-extending-data-model"></a>Extending The Parties Data Model</h3></div></div></div><p>The parties data model can represent some fairly sophisticated real
+</pre></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="parties-extending-data-model"></a>Extending The Parties Data Model</h3></div></div><div></div></div><p>The parties data model can represent some fairly sophisticated real
 world situations. Still, it would be foolish to assume that this data
 model is sufficiently efficient for every
 application. This section describes some
-of the more common ways to extend the parties data model.</p><p><span class="strong"><strong>Specializing Users</strong></span></p><p>Some applications will want to collect more
+of the more common ways to extend the parties data model.</p><p><span class="strong">Specializing Users</span></p><p>Some applications will want to collect more
 detailed information for people using the system. If 
 there can be only one such piece of information per user, then it might make
 sense to create another type of individual that is a further specialization
@@ -330,12 +331,12 @@
 have a primary key that references the users table, thereby guaranteeing that
 each row in the chess_club_users table has a corresponding row in each of the
 users, persons, parties, and acs_objects tables. This child table could then
-store any extra information relevant to the Chess Club community.</p><p><span class="strong"><strong>Specializing Groups</strong></span></p><p>If one were to build an intranet application on top of the party
+store any extra information relevant to the Chess Club community.</p><p><span class="strong">Specializing Groups</span></p><p>If one were to build an intranet application on top of the party
 system, it is likely that one would want to take advantage of the systems
 efficient representation of sophisticated organizational structures, but
 there would be much more specialized information associated with each group.
 In this case it would make sense to specialize the group party type into a
-company party type in the same manner as Specializing Users.</p><p><span class="strong"><strong>Specializing Membership Relations</strong></span></p><p>The final portion of the parties data model that is designed to be
+company party type in the same manner as Specializing Users.</p><p><span class="strong">Specializing Membership Relations</span></p><p>The final portion of the parties data model that is designed to be
 extended is the membership relationship. Consider the intranet example again.
 It is likely that a membership in a company would have more information
 associated with it than a membership in an ordinary group. An obvious example
Index: openacs-4/packages/acs-core-docs/www/permissions-design.html
===================================================================
RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/permissions-design.html,v
diff -u -r1.27 -r1.27.4.1
--- openacs-4/packages/acs-core-docs/www/permissions-design.html	17 Jul 2006 05:38:31 -0000	1.27
+++ openacs-4/packages/acs-core-docs/www/permissions-design.html	3 Feb 2008 12:07:40 -0000	1.27.4.1
@@ -1,10 +1,11 @@
-<html><head><meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"><title>Permissions Design</title><meta name="generator" content="DocBook XSL Stylesheets V1.70.1"><link rel="home" href="index.html" title="OpenACS Core Documentation"><link rel="up" href="kernel-doc.html" title="Chapter�15.�Kernel Documentation"><link rel="previous" href="permissions-requirements.html" title="Permissions Requirements"><link rel="next" href="groups-requirements.html" title="Groups Requirements"><link rel="stylesheet" href="openacs.css" type="text/css"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><a href="http://openacs.org"><img src="/doc/images/alex.jpg" border="0" alt="Alex logo"></a><table width="100%" summary="Navigation header" border="0"><tr><td width="20%" align="left"><a accesskey="p" href="permissions-requirements.html">Prev</a> </td><th width="60%" align="center">Chapter�15.�Kernel Documentation</th><td width="20%" align="right"> <a accesskey="n" href="groups-requirements.html">Next</a></td></tr></table><hr></div><div class="sect1" lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="permissions-design"></a>Permissions Design</h2></div></div></div><div class="authorblurb"><p>By John Prevost and <a href="http://planitia.org" target="_top">Rafael H. Schloming</a> </p>
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html><head><meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"><title>Permissions Design</title><meta name="generator" content="DocBook XSL Stylesheets V1.60.1"><link rel="home" href="index.html" title="OpenACS Core Documentation"><link rel="up" href="kernel-doc.html" title="Chapter�15.�Kernel Documentation"><link rel="previous" href="permissions-requirements.html" title="Permissions Requirements"><link rel="next" href="groups-requirements.html" title="Groups Requirements"><link rel="stylesheet" href="openacs.css" type="text/css"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><a href="http://openacs.org"><img src="/doc/images/alex.jpg" border="0" alt="Alex logo"></a><table width="100%" summary="Navigation header" border="0"><tr><td width="20%" align="left"><a accesskey="p" href="permissions-requirements.html">Prev</a> </td><th width="60%" align="center">Chapter�15.�Kernel Documentation</th><td width="20%" align="right"> <a accesskey="n" href="groups-requirements.html">Next</a></td></tr></table><hr></div><div class="sect1" lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="permissions-design"></a>Permissions Design</h2></div></div><div></div></div><div class="authorblurb"><p>By John Prevost and <a href="http://planitia.org" target="_top">Rafael H. Schloming</a> </p>
           OpenACS docs are written by the named authors, and may be edited
           by OpenACS documentation staff.
-        </div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="permissions-design-essentials"></a>Essentials</h3></div></div></div><div class="itemizedlist"><ul type="disc"><li><p>Tcl in <code class="computeroutput">packages/acs-kernel</code></p></li><li><p><a href="permissions-requirements.html">OpenACS 4 Permissions Requirements</a></p></li><li><p><a href="/doc/sql/display-sql?url=acs-permissions-create.sql&amp;package_key=acs-kernel" target="_top">
+        </div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="permissions-design-essentials"></a>Essentials</h3></div></div><div></div></div><div class="itemizedlist"><ul type="disc"><li><p>Tcl in <tt class="computeroutput">packages/acs-kernel</tt></p></li><li><p><a href="permissions-requirements.html">OpenACS 4 Permissions Requirements</a></p></li><li><p><a href="/doc/sql/display-sql?url=acs-permissions-create.sql&amp;package_key=acs-kernel" target="_top">
 SQL file</a></p></li><li><p><a href="images/permissions-er.png" target="_top">ER diagram</a> 
 
-</p></li></ul></div></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="permissions-design-intro"></a>Introduction</h3></div></div></div><p>The goal of the Permissions system is to provide generic means to both
+</p></li></ul></div></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="permissions-design-intro"></a>Introduction</h3></div></div><div></div></div><p>The goal of the Permissions system is to provide generic means to both
 programmers and site administrators to designate operations (methods) as
 requiring permissions, and then to check, grant, or revoke permissions via a
 consistent interface. For example, we might decide that the transaction that
@@ -21,66 +22,66 @@
 those package objects on which a user has certain permissions.</p><p>For site administrators and other authorized users, the Permissions UI
 provides a means to aggregate the primitive operations (methods) made
 available by the programmer into logical privileges (like read, write, and
-admin) that can be granted and revoked.</p></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="permissions-design-history"></a>Historical Considerations</h3></div></div></div><p>In earlier versions of the OpenACS, permissions and access control was handled
+admin) that can be granted and revoked.</p></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="permissions-design-history"></a>Historical Considerations</h3></div></div><div></div></div><p>In earlier versions of the OpenACS, permissions and access control was handled
 on a module-by-module basis, often even on a page-by-page basis. For example,
 a typical module might allow any registered user to access its pages
 read-only, but only allow members of a certain group to make changes. The way
 this group was determined also varied greatly between modules. Some modules
-used "roles", while others did not. Other modules did all access
+used &quot;roles&quot;, while others did not. Other modules did all access
 control based simply on coded rules regarding who can act on a given database
 row based on the information in that row.</p><p>Problems resulting from this piecemeal approach to permissions and access
 control were many, the two major ones being inconsistency, and
 repeated/redundant code. Thus the drive in OpenACS 4 to provide a unified,
 consistent permissions system that both programmers and administrators can
-readily use.</p></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="permissions-design-competitors"></a>Competitive Analysis</h3></div></div></div><p><span class="emphasis"><em>None available as of 10/2000.</em></span></p></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="permissions-design-design-tradeoffs"></a>Design Tradeoffs</h3></div></div></div><p>The core of the permissions data model is quite simple. Unfortunately, the
+readily use.</p></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="permissions-design-competitors"></a>Competitive Analysis</h3></div></div><div></div></div><p><span class="emphasis"><em>None available as of 10/2000.</em></span></p></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="permissions-design-design-tradeoffs"></a>Design Tradeoffs</h3></div></div><div></div></div><p>The core of the permissions data model is quite simple. Unfortunately, the
 hierarchical nature of default permissions entails quite a number of tree
 queries which could slow the system down. Since every page will have at least
 one permissions check, a number of views and auxiliary tables
 (de-normalizations of the data model) have been created to speed up access
 queries. As a consequence, speed of updates are decreased and requirements
-for additional storage space increase.</p></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="permissions-design-data-model"></a>Data Model Discussion</h3></div></div></div><p>As described in section V., the core of the permissions data model is
+for additional storage space increase.</p></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="permissions-design-data-model"></a>Data Model Discussion</h3></div></div><div></div></div><p>As described in section V., the core of the permissions data model is
 simple, though a number of views and auxiliary tables exist to ensure
-adequate performance. The core model consists of five tables:</p><div class="variablelist"><dl><dt><span class="term"><code class="computeroutput">acs_methods</code>
+adequate performance. The core model consists of five tables:</p><div class="variablelist"><dl><dt><span class="term"><tt class="computeroutput">acs_methods</tt>
 
-</span></dt><dd><p>The set of all defined methods.</p></dd><dt><span class="term"><code class="computeroutput">acs_privileges</code>
+</span></dt><dd><p>The set of all defined methods.</p></dd><dt><span class="term"><tt class="computeroutput">acs_privileges</tt>
 
-</span></dt><dd><p>The set of all defined privileges.</p></dd><dt><span class="term"><code class="computeroutput">acs_privilege_method_rules</code>
+</span></dt><dd><p>The set of all defined privileges.</p></dd><dt><span class="term"><tt class="computeroutput">acs_privilege_method_rules</tt>
 
-</span></dt><dd><p>A relation describing the set of methods <span class="strong"><strong>directly</strong></span>
-associated with each privilege.</p></dd><dt><span class="term"><code class="computeroutput">acs_privilege_hierarchy</code>
+</span></dt><dd><p>A relation describing the set of methods <span class="strong">directly</span>
+associated with each privilege.</p></dd><dt><span class="term"><tt class="computeroutput">acs_privilege_hierarchy</tt>
 
-</span></dt><dd><p>A relation describing which privileges <span class="strong"><strong>directly</strong></span>
-"contain" other privileges.</p></dd><dt><span class="term"><code class="computeroutput">acs_permissions</code>
+</span></dt><dd><p>A relation describing which privileges <span class="strong">directly</span>
+&quot;contain&quot; other privileges.</p></dd><dt><span class="term"><tt class="computeroutput">acs_permissions</tt>
 
 </span></dt><dd><p>A table with one (<span class="emphasis"><em>party</em></span>, <span class="emphasis"><em>object</em></span>, <span class="emphasis"><em>privilege</em></span>)
-row for every privilege <span class="strong"><strong>directly</strong></span> granted on any object in
+row for every privilege <span class="strong">directly</span> granted on any object in
 the system - this is a denormalization of
-<code class="computeroutput">acs_privilege_method_rules</code> and
-<code class="computeroutput">acs_privilege_hierarchy</code></p></dd></dl></div><p>There are also a number of views to make it easier to ask specific
+<tt class="computeroutput">acs_privilege_method_rules</tt> and
+<tt class="computeroutput">acs_privilege_hierarchy</tt></p></dd></dl></div><p>There are also a number of views to make it easier to ask specific
 questions about permissions. For example, a number of the above tables
-describe "direct" or explicit permissions. Inheritance and default
+describe &quot;direct&quot; or explicit permissions. Inheritance and default
 values can, however, introduce permissions which are not directly specified.
 (For example, read access on a forum allows read access on all the messages
 in the forum.)</p><p>The following views provide flattened versions of inherited
-information:</p><div class="variablelist"><dl><dt><span class="term"><code class="computeroutput">acs_privilege_method_map</code>
+information:</p><div class="variablelist"><dl><dt><span class="term"><tt class="computeroutput">acs_privilege_method_map</tt>
 
 </span></dt><dd><p>Map of privileges to the methods they contain either directly or because
-of another privilege which is included (at any depth).</p></dd><dt><span class="term"><code class="computeroutput">acs_object_grantee_priv_map</code>
+of another privilege which is included (at any depth).</p></dd><dt><span class="term"><tt class="computeroutput">acs_object_grantee_priv_map</tt>
 
 </span></dt><dd><p>Relation on (<span class="emphasis"><em>object</em></span>, <span class="emphasis"><em>party</em></span>, <span class="emphasis"><em>privilege</em></span>) for
-privileges from <code class="computeroutput">acs_privileges</code>) granted directly on the object, or
-on the context of the object (at any depth).</p></dd><dt><span class="term"><code class="computeroutput">acs_object_party_privilege_map</code>
+privileges from <tt class="computeroutput">acs_privileges</tt>) granted directly on the object, or
+on the context of the object (at any depth).</p></dd><dt><span class="term"><tt class="computeroutput">acs_object_party_privilege_map</tt>
 
 </span></dt><dd><p>Relation on (<span class="emphasis"><em>object</em></span>, <span class="emphasis"><em>party</em></span>, <span class="emphasis"><em>privilege</em></span>) for
-privileges directly from <code class="computeroutput">acs_object_grantee_priv_map</code> or also because
-a party is a member of a group (at any depth).</p></dd><dt><span class="term"><code class="computeroutput">acs_object_party_method_map</code>
+privileges directly from <tt class="computeroutput">acs_object_grantee_priv_map</tt> or also because
+a party is a member of a group (at any depth).</p></dd><dt><span class="term"><tt class="computeroutput">acs_object_party_method_map</tt>
 
 </span></dt><dd><p>Relation with every (<span class="emphasis"><em>object</em></span>, <span class="emphasis"><em>party</em></span>, <span class="emphasis"><em>method</em></span>)
-tuple implied by the above trees.</p></dd></dl></div><p>In general, <span class="strong"><strong>only <code class="computeroutput">acs_object_party_method_map</code></strong></span>
+tuple implied by the above trees.</p></dd></dl></div><p>In general, <span class="strong">only <tt class="computeroutput">acs_object_party_method_map</tt></span>
 should be used for queries from other modules. The other views are
 intermediate steps in building that query.</p><p>The data model also includes two simple PL/SQL procedures
-(<code class="computeroutput">acs_permission.grant_permission</code> and
-<code class="computeroutput">acs_permission.revoke_permission</code>) for granting and revoking a
+(<tt class="computeroutput">acs_permission.grant_permission</tt> and
+<tt class="computeroutput">acs_permission.revoke_permission</tt>) for granting and revoking a
 specific privilege for a specific user on a specific object.</p><p>To sum up, the PL/SQL procedures are meant to be used to grant or revoke
 permissions. The five base tables represent the basic data model of the
 system, with a set of views provided to convert them into a format suitable
@@ -90,50 +91,50 @@
 which:</p><div class="itemizedlist"><ul type="disc"><li><p>parties get the privileges of any groups they are directly or indirectly
 a member of</p></li><li><p>privileges get associated with the methods of any other privileges they
 have taken methods from (at any level) (see
-<code class="computeroutput">acs_privilege_hierarchy</code>)</p></li><li><p>objects get access control from direct grants, or inherit permissions
-from their context (unless the "don't inherit" flag is
-set)</p></li></ul></div></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="permissions-design-transactions"></a>Legal Transactions</h3></div></div></div><p>There are three essential areas in which all transactions in the
-permissions system fall:</p><div class="itemizedlist"><ul type="disc"><li><p>Modification of methods and privileges</p></li><li><p>Modification of permissions</p></li><li><p>Queries on permissions</p></li></ul></div><p><span class="strong"><strong>"Modification of methods and privileges."</strong></span> This
+<tt class="computeroutput">acs_privilege_hierarchy</tt>)</p></li><li><p>objects get access control from direct grants, or inherit permissions
+from their context (unless the &quot;don't inherit&quot; flag is
+set)</p></li></ul></div></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="permissions-design-transactions"></a>Legal Transactions</h3></div></div><div></div></div><p>There are three essential areas in which all transactions in the
+permissions system fall:</p><div class="itemizedlist"><ul type="disc"><li><p>Modification of methods and privileges</p></li><li><p>Modification of permissions</p></li><li><p>Queries on permissions</p></li></ul></div><p><span class="strong">&quot;Modification of methods and privileges.&quot;</span> This
 refers to actions that happen mainly at package installation time - a package
 will create a number of methods for its own use, then associate them with the
 system's standard privileges, or new privileges which the package has
 created. The association step might also happen later, if the site-wide
-administrator chooses to change permissions policy.</p><p>These steps involve directly manipulating the <code class="computeroutput">acs_methods</code>,
-<code class="computeroutput">acs_privileges</code>, and <code class="computeroutput">acs_privilege_method_rules</code> tables. A
+administrator chooses to change permissions policy.</p><p>These steps involve directly manipulating the <tt class="computeroutput">acs_methods</tt>,
+<tt class="computeroutput">acs_privileges</tt>, and <tt class="computeroutput">acs_privilege_method_rules</tt> tables. A
 web page for manipulating these features should be limited to site-wide
-administrators.</p><p><span class="strong"><strong>"Modification of permissions"</strong></span> - involves fairly
+administrators.</p><p><span class="strong">&quot;Modification of permissions&quot;</span> - involves fairly
 common operations. Users are typically able to administer permissions for
 objects they themselves create. The two basic operations here are
-"grant" and "revoke". Granting permissions is done via
-<code class="computeroutput">acs_permissions.grant_permission</code>, and revocation via
-<code class="computeroutput">acs_permissions.revoke_permission</code>. These directly manipulate the
-<code class="computeroutput">acs_permissions</code> table.</p><p>Web pages for making these changes are available to all users, so they
+&quot;grant&quot; and &quot;revoke&quot;. Granting permissions is done via
+<tt class="computeroutput">acs_permissions.grant_permission</tt>, and revocation via
+<tt class="computeroutput">acs_permissions.revoke_permission</tt>. These directly manipulate the
+<tt class="computeroutput">acs_permissions</tt> table.</p><p>Web pages for making these changes are available to all users, so they
 should not be in an admin area. In order to grant and revoke permissions on
-an object, the user must have the <code class="computeroutput">administer_privileges</code> method
-permission on that object.</p><p><span class="strong"><strong>"Queries on permissions"</strong></span> - by far the most
+an object, the user must have the <tt class="computeroutput">administer_privileges</tt> method
+permission on that object.</p><p><span class="strong">&quot;Queries on permissions&quot;</span> - by far the most
 common operation is querying the permissions database. Several kinds of
-questions are commonly asked: First, and most commonly, "Can this party
-perform this method on this object?" Two Tcl functions are provided to
+questions are commonly asked: First, and most commonly, &quot;Can this party
+perform this method on this object?&quot; Two Tcl functions are provided to
 answer this - one which returns a boolean, the other of which results in an
 error page. These tcl functions directly access the
-<code class="computeroutput">acs_object_party_method_map</code>.</p><p>The second most commonly asked question occurs when a list of objects is
+<tt class="computeroutput">acs_object_party_method_map</tt>.</p><p>The second most commonly asked question occurs when a list of objects is
 being displayed, often in order to provide appropriate UI functionality:
-"For this party, what methods are available on these objects?"
+&quot;For this party, what methods are available on these objects?&quot;
 Here, the SQL query needs to filter based on whether the party/user can
 perform some operation on the object. This is done via a join or sub-select
-against <code class="computeroutput">acs_object_party_method_map</code>, or by calling the Tcl functions
+against <tt class="computeroutput">acs_object_party_method_map</tt>, or by calling the Tcl functions
 for appropriate methods.</p><p>Finally, when administering the permissions for an object, a web page
 needs to know all permissions directly granted on that object. This is done
-by querying against <code class="computeroutput">acs_permissions</code>.</p></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="permissions-design-api"></a>API</h3></div></div></div><p>The API to the permissions system consists of a few well-known tables,
-plus a pair of PL/SQL procedures and a pair of Tcl functions.</p><p><span class="strong"><strong>Tables</strong></span></p><p><code class="computeroutput">acs_methods</code>, <code class="computeroutput">acs_privileges</code>, and
-<code class="computeroutput">acs_privilege_method_rules</code> manage the set of permissions in the
+by querying against <tt class="computeroutput">acs_permissions</tt>.</p></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="permissions-design-api"></a>API</h3></div></div><div></div></div><p>The API to the permissions system consists of a few well-known tables,
+plus a pair of PL/SQL procedures and a pair of Tcl functions.</p><p><span class="strong">Tables</span></p><p><tt class="computeroutput">acs_methods</tt>, <tt class="computeroutput">acs_privileges</tt>, and
+<tt class="computeroutput">acs_privilege_method_rules</tt> manage the set of permissions in the
 system. At installation time, a package will add to these three tables to
-introduce new permissions into the system.</p><p>The main table for queries is <code class="computeroutput">acs_object_party_method_map</code>, which
+introduce new permissions into the system.</p><p>The main table for queries is <tt class="computeroutput">acs_object_party_method_map</tt>, which
 contains (<span class="emphasis"><em>object</em></span>, <span class="emphasis"><em>party</em></span>, <span class="emphasis"><em>method</em></span>) triples for all
-allowed operations in the system.</p><p>Also of interest for queries is <code class="computeroutput">acs_permissions</code>, which lists
-directly granted privileges. Neither <code class="computeroutput">acs_object_party_method_map</code>
-(which is a view) nor <code class="computeroutput">acs_permissions</code> should be updated
-directly.</p><p><span class="strong"><strong>PL/SQL Procedures</strong></span></p><p><code class="computeroutput">acs_permissions.grant_permission</code> introduces new permissions for
+allowed operations in the system.</p><p>Also of interest for queries is <tt class="computeroutput">acs_permissions</tt>, which lists
+directly granted privileges. Neither <tt class="computeroutput">acs_object_party_method_map</tt>
+(which is a view) nor <tt class="computeroutput">acs_permissions</tt> should be updated
+directly.</p><p><span class="strong">PL/SQL Procedures</span></p><p><tt class="computeroutput">acs_permissions.grant_permission</tt> introduces new permissions for
 an object. It should be given an (<span class="emphasis"><em>object</em></span>, <span class="emphasis"><em>party</em></span>,
 <span class="emphasis"><em>privilege</em></span>) triple, and will always succeed. If the permission is
 already in the system, no change occurs. The interface for this procedure
@@ -143,7 +144,7 @@
   grantee_id   acs_permissions.grantee_id%TYPE,
   privilege    acs_permissions.privilege%TYPE
 );
-</pre><p><code class="computeroutput">acs_permissions.revoke_permission</code> removes a permission entry
+</pre><p><tt class="computeroutput">acs_permissions.revoke_permission</tt> removes a permission entry
 given a triple. It always succeeds--if a permission does not exist, nothing
 changes. The interface for this procedure is:</p><pre class="programlisting">
 procedure revoke_permission (
@@ -152,34 +153,34 @@
   privilege    acs_permissions.privilege%TYPE
 );
 </pre><p>These procedures are defined in <a href="/doc/sql/display-sql?url=acs-permissions-create.sql&amp;package_key=acs-kernel" target="_top">
-<code class="computeroutput">permissions-create.sql</code></a></p><p><span class="strong"><strong>Tcl Procedures</strong></span></p><p>Two tcl procedures provide a simple call for the query, "Can this
-user perform this method on this object?" One returns true or false, the
+<tt class="computeroutput">permissions-create.sql</tt></a></p><p><span class="strong">Tcl Procedures</span></p><p>Two tcl procedures provide a simple call for the query, &quot;Can this
+user perform this method on this object?&quot; One returns true or false, the
 other presents an error page.</p><p>To receive a true or false value, Tcl code should call:</p><pre class="programlisting">
 ad_permission_p $object_id $object_type $method -user_id $user_id
-</pre><p>If the <code class="computeroutput">user_id</code> argument is left out, then the currently logged in
+</pre><p>If the <tt class="computeroutput">user_id</tt> argument is left out, then the currently logged in
 user is checked. To create an error page, Tcl code should call:</p><pre class="programlisting">
 ad_require_permission $object_id $object_type $method
-</pre><p>These procedures are defined in <code class="computeroutput">acs-permissions-procs.tcl</code>.</p></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="permissions-design-ui"></a>User Interface</h3></div></div></div><p>All users of the permissions system are the same at the user-interface
-level. If you have the <code class="computeroutput">administer_privileges</code> method permission on an
+</pre><p>These procedures are defined in <tt class="computeroutput">acs-permissions-procs.tcl</tt>.</p></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="permissions-design-ui"></a>User Interface</h3></div></div><div></div></div><p>All users of the permissions system are the same at the user-interface
+level. If you have the <tt class="computeroutput">administer_privileges</tt> method permission on an
 object, then you may edit privileges for that object with the UI.</p><p>The UI currently provides a list of all granted permissions on the object.
 If the user wishes to revoke privileges, she may select a set of grants,
 choose revoke, confirm their deletion, and be returned to the same page after
 those privileges have been revoked.</p><p>Granting permissions currently (as of 10/2000) works by providing a list
 of all possible permissions and a list of all parties in the system. (For
 large sites, some future search mechanism will be necessary.) After choosing
-privileges to grant, the user is returned to the "edit privileges for
-one object" screen.</p><p>If it makes sense, the system will also display a checkbox which the user
+privileges to grant, the user is returned to the &quot;edit privileges for
+one object&quot; screen.</p><p>If it makes sense, the system will also display a checkbox which the user
 may select to toggle whether permissions are inherited from the object's
 context.</p><p>There are a number of potential future enhancements for the permissions
-UI, outlined below.</p></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="permissions-design-configure"></a>Configuration/Parameters</h3></div></div></div><p>There are no configuration options for the permissions system.</p></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="permissions-design-future"></a>Future Improvements/Areas of Likely Change</h3></div></div></div><p>The most important future changes to the Permissions system are likely to
+UI, outlined below.</p></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="permissions-design-configure"></a>Configuration/Parameters</h3></div></div><div></div></div><p>There are no configuration options for the permissions system.</p></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="permissions-design-future"></a>Future Improvements/Areas of Likely Change</h3></div></div><div></div></div><p>The most important future changes to the Permissions system are likely to
 be in the UI:</p><div class="itemizedlist"><ul type="disc"><li><p>There should be a page displaying a list of all objects for which the
 current user is allowed to administer privileges.</p></li><li><p>Users should be able to view the permissions on any object, or perhaps on
-objects which they have the "read_permissions" method. This would
+objects which they have the &quot;read_permissions&quot; method. This would
 allow them to see what grants are affecting their objects through
-inheritance.</p></li></ul></div></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="permissions-design-authors"></a>Authors</h3></div></div></div><div class="variablelist"><dl><dt><span class="term">System creator
+inheritance.</p></li></ul></div></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="permissions-design-authors"></a>Authors</h3></div></div><div></div></div><div class="variablelist"><dl><dt><span class="term">System creator
 
 </span></dt><dd><p><a href="mailto:rhs@mit.edu" target="_top">Rafael H. Schloming</a></p></dd><dt><span class="term">System owner
 
 </span></dt><dd><p><a href="mailto:rhs@mit.edu" target="_top">Rafael H. Schloming</a></p></dd><dt><span class="term">Documentation author
 
-</span></dt><dd><p>John Prevost</p></dd></dl></div></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="permissions-design-rev-history"></a>Revision History</h3></div></div></div><div class="informaltable"><table cellspacing="0" border="1"><colgroup><col><col><col><col></colgroup><tbody><tr><td><span class="strong"><strong>Document Revision #</strong></span></td><td><span class="strong"><strong>Action Taken, Notes</strong></span></td><td><span class="strong"><strong>When?</strong></span></td><td><span class="strong"><strong>By Whom?</strong></span></td></tr><tr><td>0.1</td><td>Creation</td><td>9/11/2000</td><td>John Prevost</td></tr><tr><td>0.2</td><td>Edited for ACS 4 Beta release</td><td>10/04/2000</td><td>Kai Wu</td></tr></tbody></table></div></div></div><div class="navfooter"><hr><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="permissions-requirements.html">Prev</a> </td><td width="20%" align="center"><a accesskey="h" href="index.html">Home</a></td><td width="40%" align="right"> <a accesskey="n" href="groups-requirements.html">Next</a></td></tr><tr><td width="40%" align="left">Permissions Requirements </td><td width="20%" align="center"><a accesskey="u" href="kernel-doc.html">Up</a></td><td width="40%" align="right"> Groups Requirements</td></tr></table><hr><address><a href="mailto:docs@openacs.org">docs@openacs.org</a></address></div><a name="comments"></a><center><a href="http://openacs.org/doc/current/permissions-design.html#comments">View comments on this page at openacs.org</a></center></body></html>
+</span></dt><dd><p>John Prevost</p></dd></dl></div></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="permissions-design-rev-history"></a>Revision History</h3></div></div><div></div></div><div class="informaltable"><table cellspacing="0" border="1"><colgroup><col><col><col><col></colgroup><tbody><tr><td><span class="strong">Document Revision #</span></td><td><span class="strong">Action Taken, Notes</span></td><td><span class="strong">When?</span></td><td><span class="strong">By Whom?</span></td></tr><tr><td>0.1</td><td>Creation</td><td>9/11/2000</td><td>John Prevost</td></tr><tr><td>0.2</td><td>Edited for ACS 4 Beta release</td><td>10/04/2000</td><td>Kai Wu</td></tr></tbody></table></div></div></div><div class="navfooter"><hr><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="permissions-requirements.html">Prev</a> </td><td width="20%" align="center"><a accesskey="h" href="index.html">Home</a></td><td width="40%" align="right"> <a accesskey="n" href="groups-requirements.html">Next</a></td></tr><tr><td width="40%" align="left">Permissions Requirements </td><td width="20%" align="center"><a accesskey="u" href="kernel-doc.html">Up</a></td><td width="40%" align="right"> Groups Requirements</td></tr></table><hr><address><a href="mailto:docs@openacs.org">docs@openacs.org</a></address></div><a name="comments"></a><center><a href="http://openacs.org/doc/current/permissions-design.html#comments">View comments on this page at openacs.org</a></center></body></html>
Index: openacs-4/packages/acs-core-docs/www/permissions-requirements.html
===================================================================
RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/permissions-requirements.html,v
diff -u -r1.27 -r1.27.4.1
--- openacs-4/packages/acs-core-docs/www/permissions-requirements.html	17 Jul 2006 05:38:31 -0000	1.27
+++ openacs-4/packages/acs-core-docs/www/permissions-requirements.html	3 Feb 2008 12:07:40 -0000	1.27.4.1
@@ -1,10 +1,11 @@
-<html><head><meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"><title>Permissions Requirements</title><meta name="generator" content="DocBook XSL Stylesheets V1.70.1"><link rel="home" href="index.html" title="OpenACS Core Documentation"><link rel="up" href="kernel-doc.html" title="Chapter�15.�Kernel Documentation"><link rel="previous" href="object-system-design.html" title="Object Model Design"><link rel="next" href="permissions-design.html" title="Permissions Design"><link rel="stylesheet" href="openacs.css" type="text/css"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><a href="http://openacs.org"><img src="/doc/images/alex.jpg" border="0" alt="Alex logo"></a><table width="100%" summary="Navigation header" border="0"><tr><td width="20%" align="left"><a accesskey="p" href="object-system-design.html">Prev</a> </td><th width="60%" align="center">Chapter�15.�Kernel Documentation</th><td width="20%" align="right"> <a accesskey="n" href="permissions-design.html">Next</a></td></tr></table><hr></div><div class="sect1" lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="permissions-requirements"></a>Permissions Requirements</h2></div></div></div><div class="authorblurb"><p>By John McClary Prevost</p>
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html><head><meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"><title>Permissions Requirements</title><meta name="generator" content="DocBook XSL Stylesheets V1.60.1"><link rel="home" href="index.html" title="OpenACS Core Documentation"><link rel="up" href="kernel-doc.html" title="Chapter�15.�Kernel Documentation"><link rel="previous" href="object-system-design.html" title="Object Model Design"><link rel="next" href="permissions-design.html" title="Permissions Design"><link rel="stylesheet" href="openacs.css" type="text/css"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><a href="http://openacs.org"><img src="/doc/images/alex.jpg" border="0" alt="Alex logo"></a><table width="100%" summary="Navigation header" border="0"><tr><td width="20%" align="left"><a accesskey="p" href="object-system-design.html">Prev</a> </td><th width="60%" align="center">Chapter�15.�Kernel Documentation</th><td width="20%" align="right"> <a accesskey="n" href="permissions-design.html">Next</a></td></tr></table><hr></div><div class="sect1" lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="permissions-requirements"></a>Permissions Requirements</h2></div></div><div></div></div><div class="authorblurb"><p>By John McClary Prevost</p>
           OpenACS docs are written by the named authors, and may be edited
           by OpenACS documentation staff.
-        </div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="permissions-requirements-intro"></a>Introduction</h3></div></div></div><p>This document records requirements for the OpenACS 4 Permissions system, a
+        </div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="permissions-requirements-intro"></a>Introduction</h3></div></div><div></div></div><p>This document records requirements for the OpenACS 4 Permissions system, a
 component of the OpenACS 4 Kernel. The Permissions system is meant to unify and
-centralize the handling of access and control on a given OpenACS 4 system.</p></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="permissions-requirements-vision"></a>Vision Statement</h3></div></div></div><p>Any multi-user software system must address the general problem of
-permissions, or "who can do what, on what." On web services, which
+centralize the handling of access and control on a given OpenACS 4 system.</p></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="permissions-requirements-vision"></a>Vision Statement</h3></div></div><div></div></div><p>Any multi-user software system must address the general problem of
+permissions, or &quot;who can do what, on what.&quot; On web services, which
 typically involve large numbers of users belonging to different groups,
 permissions handling is a critical need: access to content, services, and
 information generally must be controlled. The OpenACS 4 Permissions system is
@@ -13,78 +14,78 @@
 manner reduces both cost and risk: cost, in that less code has to be written
 and maintained for dealing with recurring permissions situations; risk, in
 that we need not rely on any single programmer's diligence to ensure
-access control is implemented and enforced correctly.</p><p><span class="strong"><strong>Historical Motivations</strong></span></p><p>In earlier versions of the OpenACS, permissions and access control was handled
+access control is implemented and enforced correctly.</p><p><span class="strong">Historical Motivations</span></p><p>In earlier versions of the OpenACS, permissions and access control was handled
 on a module-by-module basis, often even on a page-by-page basis. For example,
 a typical module might allow any registered user to access its pages
 read-only, but only allow members of a certain group to make changes. The way
 this group was determined also varied greatly between modules. Some modules
-used "roles", while others did not. Other modules did all access
+used &quot;roles&quot;, while others did not. Other modules did all access
 control based simply on coded rules regarding who can act on a given database
 row based on the information in that row.</p><p>Problems resulting from this piecemeal approach to permissions and access
 control were many, the two major ones being inconsistency, and
 repeated/redundant code. Thus the drive in OpenACS 4 to provide a unified,
 consistent permissions system that both programmers and administrators can
-readily use.</p></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="permissions-requirements-system-overview"></a>System Overview</h3></div></div></div><p>The OpenACS 4 Permissions system has two main pieces: first, an API for
+readily use.</p></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="permissions-requirements-system-overview"></a>System Overview</h3></div></div><div></div></div><p>The OpenACS 4 Permissions system has two main pieces: first, an API for
 developers to readily handle access control in their applications. The second
 piece of the system is a UI meant primarily for (subsite) administrators to
 grant and revoke permissions to system entities under their control.</p><p>Consistency is a key characteristic of the Permissions system - both for a
 common administrative interface, and easily deployed and maintained access
 control. The system must be flexible enough to support every access model
 required in OpenACS applications, but not so flexible that pieces will go unused
-or fall outside the common administrative interfaces.</p></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="permissions-requirements-"></a>Use Cases and User Scenarios</h3></div></div></div><p><span class="strong"><strong>Terminology</strong></span></p><p>The primary question an access control system must answer is a three-way
+or fall outside the common administrative interfaces.</p></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="permissions-requirements-"></a>Use Cases and User Scenarios</h3></div></div><div></div></div><p><span class="strong">Terminology</span></p><p>The primary question an access control system must answer is a three-way
 relation, like that between the parts of most simple sentences. A simple
 sentence generally has three parts, a subject, an object, and a verb - in the
-context of OpenACS Permissions, our simple sentence is, "Can this party
-perform this operation on this target?" Definitions:</p><p>The subject of the sentence is "<span class="strong"><strong>party</strong></span>" - a
+context of OpenACS Permissions, our simple sentence is, &quot;Can this party
+perform this operation on this target?&quot; Definitions:</p><p>The subject of the sentence is &quot;<span class="strong">party</span>&quot; - a
 distinguishable actor whose access may be controlled, this special word is
 used because one person may be represented by several parties, and one party
-may represent many users (or no users at all).</p><p>The object of the sentence is "<span class="strong"><strong>target</strong></span>" - this
+may represent many users (or no users at all).</p><p>The object of the sentence is &quot;<span class="strong">target</span>&quot; - this
 is an entity, or object, that the party wishes to perform some action on. An
-entity/object here is anything that can be put under access control.</p><p>The verb of the sentence is "operation" - a behavior on the OpenACS
+entity/object here is anything that can be put under access control.</p><p>The verb of the sentence is &quot;operation&quot; - a behavior on the OpenACS
 system subject to control, this word is used to represent the fact that a
 single operation may be part of many larger actions the system wants to
-perform. If "foo" is an operation, than we sometimes refer to the
-foo "privilege" to mean that a user has the privilege to perform
+perform. If &quot;foo&quot; is an operation, than we sometimes refer to the
+foo &quot;privilege&quot; to mean that a user has the privilege to perform
 that operation.</p><p>Examples of the essential question addressed by the Permissions system:
 Can jane@attacker.com delete the web security forum? Can the Boston office
 (a party) within the VirtuaCorp intranet/website create its own news
-instance?</p></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="permissions-requirements-links"></a>Related Links</h3></div></div></div><div class="itemizedlist"><ul type="disc"><li><p><a href="permissions-design.html">OpenACS 4 Permissions Design</a></p></li></ul></div></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="permissions-requirements-func-req"></a>Functional Requirements</h3></div></div></div><p><span class="strong"><strong>10.0 Granularity</strong></span></p><p>The system must support access control down to the level of a single
+instance?</p></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="permissions-requirements-links"></a>Related Links</h3></div></div><div></div></div><div class="itemizedlist"><ul type="disc"><li><p><a href="permissions-design.html">OpenACS 4 Permissions Design</a></p></li></ul></div></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="permissions-requirements-func-req"></a>Functional Requirements</h3></div></div><div></div></div><p><span class="strong">10.0 Granularity</span></p><p>The system must support access control down to the level of a single
 entity (this would imply down to the level of a row in the OpenACS Objects data
-model).</p><p><span class="strong"><strong>20.0 Operations</strong></span></p><p>The system itself must be able to answer the essential permissions
-question as well as several derived questions.</p><div class="blockquote"><blockquote class="blockquote"><p><span class="strong"><strong>20.10 Basic Access Check</strong></span></p><p>The system must be able to answer the question, "May party P perform
-operation O on target T?"</p></blockquote></div><div class="blockquote"><blockquote class="blockquote"><p><span class="strong"><strong>20.20 Allowed Parties Check</strong></span></p><p>The system must be able to answer the question, "Which parties may
-perform operation O on target T?"</p></blockquote></div><div class="blockquote"><blockquote class="blockquote"><p><span class="strong"><strong>20.30 Allowed Operations Check</strong></span></p><p>The system must be able to answer the question, "Which operations may
-party P perform on target T?"</p></blockquote></div><div class="blockquote"><blockquote class="blockquote"><p><span class="strong"><strong>20.40 Allowed Targets Check</strong></span></p><p>The system must be able to answer the question, "Upon which targets
-may party P perform operation O?"</p></blockquote></div></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="permissions-requirements-behave-req"></a>Behavioral Requirements</h3></div></div></div><p><span class="strong"><strong>40.0 Scale of Privileges</strong></span></p><p>Privileges must be designed with appropriate scope for a given OpenACS
-package. Some privileges are of general utility (e.g. "read" and
-"write"). Others are of more limited use (e.g. "moderate"
+model).</p><p><span class="strong">20.0 Operations</span></p><p>The system itself must be able to answer the essential permissions
+question as well as several derived questions.</p><div class="blockquote"><blockquote class="blockquote"><p><span class="strong">20.10 Basic Access Check</span></p><p>The system must be able to answer the question, &quot;May party P perform
+operation O on target T?&quot;</p></blockquote></div><div class="blockquote"><blockquote class="blockquote"><p><span class="strong">20.20 Allowed Parties Check</span></p><p>The system must be able to answer the question, &quot;Which parties may
+perform operation O on target T?&quot;</p></blockquote></div><div class="blockquote"><blockquote class="blockquote"><p><span class="strong">20.30 Allowed Operations Check</span></p><p>The system must be able to answer the question, &quot;Which operations may
+party P perform on target T?&quot;</p></blockquote></div><div class="blockquote"><blockquote class="blockquote"><p><span class="strong">20.40 Allowed Targets Check</span></p><p>The system must be able to answer the question, &quot;Upon which targets
+may party P perform operation O?&quot;</p></blockquote></div></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="permissions-requirements-behave-req"></a>Behavioral Requirements</h3></div></div><div></div></div><p><span class="strong">40.0 Scale of Privileges</span></p><p>Privileges must be designed with appropriate scope for a given OpenACS
+package. Some privileges are of general utility (e.g. &quot;read&quot; and
+&quot;write&quot;). Others are of more limited use (e.g. &quot;moderate&quot;
 - applies mainly to a package like forum, where many users are contributing
 content simultaneously). A package defining its own privileges should do so
 with moderation, being careful not to overload a privilege like
-"read" to mean too many things.</p><p><span class="strong"><strong>50.0 Aggregation of Operations (Privileges)</strong></span></p><p>For user interface purposes, it can be appropriate to group certain
-privileges under others. For example, anyone with the "admin"
-privilege may also automatically receive "read", "write",
-"delete", etc. privileges.</p><p><span class="strong"><strong>60.0 Aggregation of Parties (Groups)</strong></span></p><p>The system must allow aggregation of parties. The exact method used for
-aggregation will probably be addressed by the OpenACS 4 "Groups"
+&quot;read&quot; to mean too many things.</p><p><span class="strong">50.0 Aggregation of Operations (Privileges)</span></p><p>For user interface purposes, it can be appropriate to group certain
+privileges under others. For example, anyone with the &quot;admin&quot;
+privilege may also automatically receive &quot;read&quot;, &quot;write&quot;,
+&quot;delete&quot;, etc. privileges.</p><p><span class="strong">60.0 Aggregation of Parties (Groups)</span></p><p>The system must allow aggregation of parties. The exact method used for
+aggregation will probably be addressed by the OpenACS 4 &quot;Groups&quot;
 system. Regardless of the exact behavior of aggregate parties, if an
 aggregate party exists, then access which is granted to the aggregate party
-should be available to all members of that aggregate.</p><p><span class="strong"><strong>70.0 Scope of Access Control</strong></span></p><div class="blockquote"><blockquote class="blockquote"><p><span class="strong"><strong>70.10 Context</strong></span></p><p>There must be a method for objects to receive default access control from
+should be available to all members of that aggregate.</p><p><span class="strong">70.0 Scope of Access Control</span></p><div class="blockquote"><blockquote class="blockquote"><p><span class="strong">70.10 Context</span></p><p>There must be a method for objects to receive default access control from
 some context. For example, if you do not have read access to a forum, you
-should not have read access to a message in that forum.</p></blockquote></div><div class="blockquote"><blockquote class="blockquote"><p><span class="strong"><strong>70.20 Overriding</strong></span></p><p>It must be possible to override defaults provided by the context of an
-object (as in 70.10), in both a positive and negative manner.</p></blockquote></div><div class="blockquote"><blockquote class="blockquote"><p><span class="strong"><strong>70.20.10 Positive Overriding</strong></span></p><p>It must be possible to allow a party more access to some target than they
+should not have read access to a message in that forum.</p></blockquote></div><div class="blockquote"><blockquote class="blockquote"><p><span class="strong">70.20 Overriding</span></p><p>It must be possible to override defaults provided by the context of an
+object (as in 70.10), in both a positive and negative manner.</p></blockquote></div><div class="blockquote"><blockquote class="blockquote"><p><span class="strong">70.20.10 Positive Overriding</span></p><p>It must be possible to allow a party more access to some target than they
 would get by default. (For example, a user does not have the right to edit
 any message on a forum. But a user does possibly have the right to edit
-their own messages.)</p></blockquote></div><div class="blockquote"><blockquote class="blockquote"><p><span class="strong"><strong>70.20.20 Negative Overriding</strong></span></p><p>It must be possible to deny a party access to some target that their
+their own messages.)</p></blockquote></div><div class="blockquote"><blockquote class="blockquote"><p><span class="strong">70.20.20 Negative Overriding</span></p><p>It must be possible to deny a party access to some target that their
 inherited privileges would have allowed. (For example, a subdirectory in the
 file-storage might normally have its parent directory as context. It should
-be possible, however, to make a subdirectory private to some group.)</p></blockquote></div><p><span class="strong"><strong>100.0 Efficiency</strong></span></p><p>At least the basic access check (20.10) and the allowed targets check
+be possible, however, to make a subdirectory private to some group.)</p></blockquote></div><p><span class="strong">100.0 Efficiency</span></p><p>At least the basic access check (20.10) and the allowed targets check
 (20.40) must be efficient enough for general use, i.e. scalable under fairly
 heavy website traffic. It can be expected that almost every page will contain
 at least one basic access check, and most pages will contain an allowed
-targets check (20.40).</p><p>In particular, constraining a <code class="computeroutput">SELECT</code> to return only rows the
-current user has access to should not be much slower than the <code class="computeroutput">SELECT</code>
-on its own.</p><p><span class="strong"><strong>120.0 Ease of Use</strong></span></p><p>Since most SQL queries will contain an allowed target check in the where
+targets check (20.40).</p><p>In particular, constraining a <tt class="computeroutput">SELECT</tt> to return only rows the
+current user has access to should not be much slower than the <tt class="computeroutput">SELECT</tt>
+on its own.</p><p><span class="strong">120.0 Ease of Use</span></p><p>Since most SQL queries will contain an allowed target check in the where
 clause, whatever mechanism is used to make checks in SQL should be fairly
-small and simple.</p><p>In particular, constraining a <code class="computeroutput">SELECT</code> to return only rows the
-current user has access to should not add more than one line to a query.</p></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="permissions-requirements-history"></a>Revision History</h3></div></div></div><div class="informaltable"><table cellspacing="0" border="1"><colgroup><col><col><col><col></colgroup><tbody><tr><td><span class="strong"><strong>Document Revision #</strong></span></td><td><span class="strong"><strong>Action Taken, Notes</strong></span></td><td><span class="strong"><strong>When?</strong></span></td><td><span class="strong"><strong>By Whom?</strong></span></td></tr><tr><td>0.1</td><td>Creation</td><td>8/17/2000</td><td>John Prevost</td></tr><tr><td>0.2</td><td>Revised, updated with new terminology</td><td>8/25/2000</td><td>John Prevost</td></tr><tr><td>0.3</td><td>Edited, reformatted to conform to requirements template, pending
+small and simple.</p><p>In particular, constraining a <tt class="computeroutput">SELECT</tt> to return only rows the
+current user has access to should not add more than one line to a query.</p></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="permissions-requirements-history"></a>Revision History</h3></div></div><div></div></div><div class="informaltable"><table cellspacing="0" border="1"><colgroup><col><col><col><col></colgroup><tbody><tr><td><span class="strong">Document Revision #</span></td><td><span class="strong">Action Taken, Notes</span></td><td><span class="strong">When?</span></td><td><span class="strong">By Whom?</span></td></tr><tr><td>0.1</td><td>Creation</td><td>8/17/2000</td><td>John Prevost</td></tr><tr><td>0.2</td><td>Revised, updated with new terminology</td><td>8/25/2000</td><td>John Prevost</td></tr><tr><td>0.3</td><td>Edited, reformatted to conform to requirements template, pending
 freeze.</td><td>8/26/2000</td><td>Kai Wu</td></tr><tr><td>0.4</td><td>Edited for ACS 4 Beta release.</td><td>10/03/2000</td><td>Kai Wu</td></tr></tbody></table></div></div></div><div class="navfooter"><hr><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="object-system-design.html">Prev</a> </td><td width="20%" align="center"><a accesskey="h" href="index.html">Home</a></td><td width="40%" align="right"> <a accesskey="n" href="permissions-design.html">Next</a></td></tr><tr><td width="40%" align="left">Object Model Design </td><td width="20%" align="center"><a accesskey="u" href="kernel-doc.html">Up</a></td><td width="40%" align="right"> Permissions Design</td></tr></table><hr><address><a href="mailto:docs@openacs.org">docs@openacs.org</a></address></div><a name="comments"></a><center><a href="http://openacs.org/doc/current/permissions-requirements.html#comments">View comments on this page at openacs.org</a></center></body></html>
Index: openacs-4/packages/acs-core-docs/www/permissions-tediously-explained.html
===================================================================
RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/permissions-tediously-explained.html,v
diff -u -r1.40 -r1.40.4.1
--- openacs-4/packages/acs-core-docs/www/permissions-tediously-explained.html	25 Sep 2006 20:32:37 -0000	1.40
+++ openacs-4/packages/acs-core-docs/www/permissions-tediously-explained.html	3 Feb 2008 12:07:40 -0000	1.40.4.1
@@ -1,10 +1,11 @@
-<html><head><meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"><title>OpenACS Permissions Tediously Explained</title><meta name="generator" content="DocBook XSL Stylesheets V1.70.1"><link rel="home" href="index.html" title="OpenACS Core Documentation"><link rel="up" href="dev-guide.html" title="Chapter�11.�Development Reference"><link rel="previous" href="parties.html" title="Parties in OpenACS"><link rel="next" href="object-identity.html" title="Object Identity"><link rel="stylesheet" href="openacs.css" type="text/css"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><a href="http://openacs.org"><img src="/doc/images/alex.jpg" border="0" alt="Alex logo"></a><table width="100%" summary="Navigation header" border="0"><tr><td width="20%" align="left"><a accesskey="p" href="parties.html">Prev</a> </td><th width="60%" align="center">Chapter�11.�Development Reference</th><td width="20%" align="right"> <a accesskey="n" href="object-identity.html">Next</a></td></tr></table><hr></div><div class="sect1" lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="permissions-tediously-explained"></a>OpenACS Permissions Tediously Explained</h2></div></div></div><p>
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html><head><meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"><title>OpenACS Permissions Tediously Explained</title><meta name="generator" content="DocBook XSL Stylesheets V1.60.1"><link rel="home" href="index.html" title="OpenACS Core Documentation"><link rel="up" href="dev-guide.html" title="Chapter�11.�Development Reference"><link rel="previous" href="parties.html" title="Parties in OpenACS"><link rel="next" href="object-identity.html" title="Object Identity"><link rel="stylesheet" href="openacs.css" type="text/css"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><a href="http://openacs.org"><img src="/doc/images/alex.jpg" border="0" alt="Alex logo"></a><table width="100%" summary="Navigation header" border="0"><tr><td width="20%" align="left"><a accesskey="p" href="parties.html">Prev</a> </td><th width="60%" align="center">Chapter�11.�Development Reference</th><td width="20%" align="right"> <a accesskey="n" href="object-identity.html">Next</a></td></tr></table><hr></div><div class="sect1" lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="permissions-tediously-explained"></a>OpenACS Permissions Tediously Explained</h2></div></div><div></div></div><p>
     by Vadim Nasardinov. Modified and converted to Docbook XML by Roberto Mello
-  </p><p>The code has been modified since this document was written so it is now out of date.  See <a href="http://openacs.org/forums/message-view?message_id=121807" target="_top">this forum thread</a>.</p><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="permissions-tedious-overview"></a>Permissions Overview</h3></div></div></div><p><span class="strong"><strong>Who
-   (<code class="computeroutput">grantee_id</code>) can do what
-   (<code class="computeroutput">privilege</code>) on which object
-   (<code class="computeroutput">object_id</code>).
-   </strong></span></p><p>
+  </p><p>The code has been modified since this document was written so it is now out of date.  See <a href="http://openacs.org/forums/message-view?message_id=121807" target="_top">this forum thread</a>.</p><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="permissions-tedious-overview"></a>Permissions Overview</h3></div></div><div></div></div><p><span class="strong">Who
+   (<tt class="computeroutput">grantee_id</tt>) can do what
+   (<tt class="computeroutput">privilege</tt>) on which object
+   (<tt class="computeroutput">object_id</tt>).
+   </span></p><p>
       The general permissions system has a flexible (and relatively complex) data model in OpenACS.
       Developers who have not had the time to learn the internals of the data model
       may end up writing seemingly correct code that crashes their system in
@@ -18,11 +19,11 @@
       system internals.
     </p><p>
       In OpenACS, most of the interesting tables are expected to extend (subtype)
-      the <code class="computeroutput">acs_objects</code> table, i.e. they are expected to have an integer
-      primary key column that references the <code class="computeroutput">object_id</code> column of
-      <code class="computeroutput">acs_objects</code>. 
+      the <tt class="computeroutput">acs_objects</tt> table, i.e. they are expected to have an integer
+      primary key column that references the <tt class="computeroutput">object_id</tt> column of
+      <tt class="computeroutput">acs_objects</tt>. 
     </p><a name="acs_objects"></a><pre class="programlisting">
-create table <span class="bold"><strong>acs_objects</strong></span> (
+create table <span class="bold"><b>acs_objects</b></span> (
       object_id             integer
           not null
           constraint acs_objects_pk primary key,
@@ -46,23 +47,23 @@
 );
     </pre><p>
       This means that items that want to use the features of the
-      OpenACS object system needs to have an entry in the <code class="computeroutput">acs_objects</code>. This
+      OpenACS object system needs to have an entry in the <tt class="computeroutput">acs_objects</tt>. This
       allows developers to define relationships between any two entities <span class="emphasis"><em>A</em></span>
       and <span class="emphasis"><em>B</em></span> by defining a relationship between their corresponding entries
-      in the <code class="computeroutput">acs_objects</code> table.  One of the applications of this
+      in the <tt class="computeroutput">acs_objects</tt> table.  One of the applications of this
       powerful capability is the general permissions system. 
     </p><p>
-      At the heart of the permission system are two tables: <code class="computeroutput">acs_privileges</code>
-      and <code class="computeroutput">acs_permissions</code>. 
+      At the heart of the permission system are two tables: <tt class="computeroutput">acs_privileges</tt>
+      and <tt class="computeroutput">acs_permissions</tt>. 
     </p><a name="acs_privileges"></a><pre class="programlisting">
-  create table <span class="bold"><strong>acs_privileges</strong></span> (
+  create table <span class="bold"><b>acs_privileges</b></span> (
       privilege           varchar2(100) not null
           constraint acs_privileges_pk primary key,
       pretty_name         varchar2(100),
       pretty_plural       varchar2(100)
   );
     </pre><a name="acs_permissions"></a><pre class="programlisting">
-  create table <span class="bold"><strong>acs_permissions</strong></span> (
+  create table <span class="bold"><b>acs_permissions</b></span> (
       object_id
           not null
           constraint acs_permissions_on_what_id_fk references <a href="permissions-tediously-explained.html#acs_objects">acs_objects</a> (object_id),
@@ -76,14 +77,14 @@
           primary key (object_id, grantee_id, privilege)
   );
     </pre><p>
-      The <code class="computeroutput">acs_privileges</code> table stores 
+      The <tt class="computeroutput">acs_privileges</tt> table stores 
       named privileges like <span class="emphasis"><em>read</em></span>, 
       <span class="emphasis"><em>write</em></span>, <span class="emphasis"><em>delete</em></span>, <span class="emphasis"><em>create</em></span>, and 
-      <span class="emphasis"><em>admin</em></span>. The <code class="computeroutput">acs_permissions</code>
+      <span class="emphasis"><em>admin</em></span>. The <tt class="computeroutput">acs_permissions</tt>
       table stores assertions of the form: 
     </p><p>
-      Who (<code class="computeroutput">grantee_id</code>) can do what (<code class="computeroutput">privilege</code>) 
-      on which object (<code class="computeroutput">object_id</code>).
+      Who (<tt class="computeroutput">grantee_id</tt>) can do what (<tt class="computeroutput">privilege</tt>) 
+      on which object (<tt class="computeroutput">object_id</tt>).
     </p><p>
       The micromanaging approach to system security would be to require application developers
       to store permission information explicitly about every object, i.e. if the system has 100,000 and 1,000 users
@@ -101,44 +102,26 @@
       necessity to explicitly maintain security information for every single
       object.  There are three kinds of hierarchies involved.
       These are discussed in the following sections.
-    </p></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="permissions-tedious-context-hierarchy"></a>Context Hierarchy</h3></div></div></div><p>
+    </p></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="permissions-tedious-context-hierarchy"></a>Context Hierarchy</h3></div></div><div></div></div><p>
       Suppose objects <span class="emphasis"><em>A</em></span>, <span class="emphasis"><em>B</em></span>, ..., 
       and <span class="emphasis"><em>F</em></span> form the following hierarchy. 
-    </p><div class="table"><a name="id1071479"></a><p class="title"><b>Table�11.2.�Context Hierarchy Example</b></p><div class="table-contents"><table summary="Context Hierarchy Example" cellspacing="0" border="1"><colgroup><col align="center"><col align="center"><col align="center"></colgroup><tbody><tr><td colspan="3" align="center">
-	      <span class="bold"><strong>A</strong></span>
-	      <p>
-  	        <code class="computeroutput">object_id=10</code>
-              </p>
-	    </td></tr><tr><td colspan="2" align="center">
-	      <span class="bold"><strong>B</strong></span>
-	      <p>
-  	        <code class="computeroutput">object_id=20</code>
-              </p>
-	    </td><td align="center">
-	      <span class="bold"><strong>C</strong></span>
-	      <p>
-  	        <code class="computeroutput">object_id=30</code>
-              </p>
-	    </td></tr><tr><td align="center">
-	      <span class="bold"><strong>D</strong></span>
-	      <p>
-  	        <code class="computeroutput">object_id=40</code>
-              </p>
-	    </td><td align="center">
-	      <span class="bold"><strong>E</strong></span>
-	      <p>
-  	        <code class="computeroutput">object_id=50</code>
-              </p>
-	    </td><td align="center">
-	      <span class="bold"><strong>F</strong></span>
-	      <p>
-  	        <code class="computeroutput">object_id=60</code>
-              </p>
-	    </td></tr></tbody></table></div></div><br class="table-break"><p>
+    </p><div class="table"><a name="id3038081"></a><p class="title"><b>Table�11.2.�Context Hierarchy Example</b></p><table summary="Context Hierarchy Example" cellspacing="0" border="1"><colgroup><col align="center"><col align="center"><col align="center"></colgroup><tbody><tr><td colspan="3" align="center"><span class="bold"><b>A</b></span><p>
+  	        <tt class="computeroutput">object_id=10</tt>
+              </p></td></tr><tr><td colspan="2" align="center"><span class="bold"><b>B</b></span><p>
+  	        <tt class="computeroutput">object_id=20</tt>
+              </p></td><td align="center"><span class="bold"><b>C</b></span><p>
+  	        <tt class="computeroutput">object_id=30</tt>
+              </p></td></tr><tr><td align="center"><span class="bold"><b>D</b></span><p>
+  	        <tt class="computeroutput">object_id=40</tt>
+              </p></td><td align="center"><span class="bold"><b>E</b></span><p>
+  	        <tt class="computeroutput">object_id=50</tt>
+              </p></td><td align="center"><span class="bold"><b>F</b></span><p>
+  	        <tt class="computeroutput">object_id=60</tt>
+              </p></td></tr></tbody></table></div><p>
       This can be represented in the 
       <a href="permissions-tediously-explained.html#acs_objects">acs_objects</a> table
       by the following entries: 
-    </p><div class="table"><a name="id1101711"></a><p class="title"><b>Table�11.3.�acs_objects example data</b></p><div class="table-contents"><table summary="acs_objects example data" cellspacing="0" border="1"><colgroup><col align="center"><col align="center"></colgroup><thead><tr><th align="center">object_id</th><th align="center">context_id</th></tr></thead><tbody><tr><td align="center">20</td><td align="center">10</td></tr><tr><td align="center">30</td><td align="center">10</td></tr><tr><td align="center">40</td><td align="center">20</td></tr><tr><td align="center">50</td><td align="center">20</td></tr><tr><td align="center">60</td><td align="center">30</td></tr></tbody></table></div></div><br class="table-break"><p>
+    </p><div class="table"><a name="id3039226"></a><p class="title"><b>Table�11.3.�acs_objects example data</b></p><table summary="acs_objects example data" cellspacing="0" border="1"><colgroup><col align="center"><col align="center"></colgroup><thead><tr><th align="center">object_id</th><th align="center">context_id</th></tr></thead><tbody><tr><td align="center">20</td><td align="center">10</td></tr><tr><td align="center">30</td><td align="center">10</td></tr><tr><td align="center">40</td><td align="center">20</td></tr><tr><td align="center">50</td><td align="center">20</td></tr><tr><td align="center">60</td><td align="center">30</td></tr></tbody></table></div><p>
       The first entry tells us that object 20 is the descendant of object 10, and
       the third entry shows that object 40 is the descendant of object 20. By
       running a <a href="http://www.oradoc.com/ora817/server.817/a85397/expressi.htm#1023748" target="_top">CONNECT BY</a> query,
@@ -164,9 +147,9 @@
       Despite its potentially great storage costs, maintaining a
       flattened representation of the context tree is exactly what OpenACS
       does.  The flattened context tree is stored in the
-      <code class="computeroutput">acs_object_context_index</code> table.
+      <tt class="computeroutput">acs_object_context_index</tt> table.
     </p><a name="acs_object_context_index"></a><pre class="programlisting">
-  create table <span class="bold"><strong>acs_object_context_index</strong></span> (
+  create table <span class="bold"><b>acs_object_context_index</b></span> (
       object_id
           not null
           constraint acs_obj_context_idx_obj_id_fk references <a href="permissions-tediously-explained.html#acs_objects">acs_objects</a> (object_id),
@@ -184,12 +167,12 @@
       an <a href="http://www.oradoc.com/ora817/server.817/a85397/statem3e.htm#2061922" target="_top">index-organized
       table</a>, which means it is substantially optimized for access by primary key.
       Number two, as the above computations suggest, the size of the table
-      grows <span class="strong"><strong>polynomially</strong></span>
+      grows <span class="strong">polynomially</span>
       with respect to the average number of descendants that an object
-      has, and <span class="strong"><strong>exponentially</strong></span>
+      has, and <span class="strong">exponentially</span>
       with respect to the depth of the context tree. 
     </p><p>
-      The <code class="computeroutput">acs_object_context_index</code> is kept in sync with the
+      The <tt class="computeroutput">acs_object_context_index</tt> is kept in sync with the
       <a href="permissions-tediously-explained.html#acs_objects">acs_objects</a>
       table by triggers like this: 
     </p><pre class="programlisting">
@@ -222,46 +205,34 @@
 </pre><p>
       One final note about 
       <a href="permissions-tediously-explained.html#acs_objects">acs_objects</a>. By setting
-      an object's <code class="computeroutput">security_inherit_p</code> column to 'f', you can stop permissions
+      an object's <tt class="computeroutput">security_inherit_p</tt> column to 'f', you can stop permissions
       from cascading down the context tree. In the following example, Joe does not have
       the read permissions on <span class="emphasis"><em>C</em></span> and <span class="emphasis"><em>F</em></span>. 
-    </p><div class="informaltable"><table cellspacing="0" border="1"><colgroup><col align="center"><col align="center"><col align="center"></colgroup><tbody><tr><td colspan="3" align="center">
-	      <div class="literallayout"><p><br>
-<span class="bold"><strong>A</strong></span><br>
-<code class="computeroutput">object_id=10</code><br>
+    </p><div class="informaltable"><table cellspacing="0" border="1"><colgroup><col align="center"><col align="center"><col align="center"></colgroup><tbody><tr><td colspan="3" align="center"><div class="literallayout"><p><br>
+<span class="bold"><b>A</b></span><br>
+<tt class="computeroutput">object_id=10</tt><br>
 <span class="emphasis"><em>readable�by�Joe</em></span><br>
-	������</p></div>
-	    </td></tr><tr><td colspan="2" align="center">
-	      <div class="literallayout"><p><br>
-<span class="bold"><strong>B</strong></span><br>
-<code class="computeroutput">object_id=20</code><br>
+	������</p></div></td></tr><tr><td colspan="2" align="center"><div class="literallayout"><p><br>
+<span class="bold"><b>B</b></span><br>
+<tt class="computeroutput">object_id=20</tt><br>
 <span class="emphasis"><em>readable�by�Joe</em></span><br>
-��������������</p></div>
-	    </td><td align="center">
-	      <div class="literallayout"><p><br>
-<span class="bold"><strong>C</strong></span><br>
-<code class="computeroutput">object_id=30</code><br>
+��������������</p></div></td><td align="center"><div class="literallayout"><p><br>
+<span class="bold"><b>C</b></span><br>
+<tt class="computeroutput">object_id=30</tt><br>
 security_inherit_p�=�'f'<br>
 <span class="emphasis"><em>not�readable�by�Joe</em></span><br>
-	������</p></div>
-	    </td></tr><tr><td align="center">
-	      <div class="literallayout"><p><br>
-<span class="bold"><strong>D</strong></span><br>
-<code class="computeroutput">object_id=40</code><br>
-	������</p></div>
-	    </td><td align="center">
-	      <div class="literallayout"><p><br>
-<span class="bold"><strong>E</strong></span><br>
-<code class="computeroutput">object_id=50</code><br>
-	������</p></div>
-	    </td><td align="center">
-	      <div class="literallayout"><p><br>
-<span class="bold"><strong>F</strong></span><br>
-<code class="computeroutput">object_id=60</code><br>
+	������</p></div></td></tr><tr><td align="center"><div class="literallayout"><p><br>
+<span class="bold"><b>D</b></span><br>
+<tt class="computeroutput">object_id=40</tt><br>
+	������</p></div></td><td align="center"><div class="literallayout"><p><br>
+<span class="bold"><b>E</b></span><br>
+<tt class="computeroutput">object_id=50</tt><br>
+	������</p></div></td><td align="center"><div class="literallayout"><p><br>
+<span class="bold"><b>F</b></span><br>
+<tt class="computeroutput">object_id=60</tt><br>
 security_inherit_p�=�'f'<br>
 <span class="emphasis"><em>not�readable�by�Joe</em></span><br>
-	������</p></div>
-	    </td></tr></tbody></table></div></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="permissions-tedious-privilege-hierarchy"></a>Privilege Hierarchy</h3></div></div></div><p>
+	������</p></div></td></tr></tbody></table></div></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="permissions-tedious-privilege-hierarchy"></a>Privilege Hierarchy</h3></div></div><div></div></div><p>
       Privileges are also organized hierarchically.  In addition to
       the five main system privileges defined in the ACS Kernel data
       model, application developers may define their own. Note,
@@ -276,14 +247,14 @@
       <span class="emphasis"><em>admin</em></span> privilege to which the first four
       privileges are tied. Privileges are structured as follows.
     </p><div class="informaltable"><table cellspacing="0" border="1"><colgroup><col align="center"><col align="center"><col align="center"><col align="center"></colgroup><tbody><tr><td colspan="4" align="center">admin</td></tr><tr><td align="center">create</td><td align="center">delete</td><td align="center">read</td><td align="center">write</td></tr></tbody></table></div><p>
-      Note that <code class="computeroutput">admin</code> privileges are
+      Note that <tt class="computeroutput">admin</tt> privileges are
       greater than read, write, create and delete privileges combined.
        Issuing someone read, write, create and delete privileges will
       not result in the person getting
-      <code class="computeroutput">admin</code> privileges.</p><p>The parent-child relationship between privileges is represented in
-      the <code class="computeroutput">acs_privilege_hierarchy</code> table: 
+      <tt class="computeroutput">admin</tt> privileges.</p><p>The parent-child relationship between privileges is represented in
+      the <tt class="computeroutput">acs_privilege_hierarchy</tt> table: 
     </p><a name="acs_privilege_hierarchy"></a><pre class="programlisting">
-  create table <span class="bold"><strong>acs_privilege_hierarchy</strong></span> (
+  create table <span class="bold"><b>acs_privilege_hierarchy</b></span> (
       privilege
           not null
           constraint acs_priv_hier_priv_fk references <a href="permissions-tediously-explained.html#acs_privileges">acs_privileges</a> (privilege),
@@ -297,7 +268,7 @@
       As in the case of the context hierarchy, it is convenient to have a flattened representation
       of this hierarchal structure.  This is accomplished by defining the following view. 
     </p><a name="acs_privilege_descendant_map"></a><pre class="programlisting">
-  create or replace view <span class="bold"><strong>acs_privilege_descendant_map</strong></span>
+  create or replace view <span class="bold"><b>acs_privilege_descendant_map</b></span>
   as
   select
     p1.privilege,
@@ -322,59 +293,51 @@
       reasonably small, there is no pressing need to cache the flattened ansector-descendant
       view of the privilege hierarchy in a specially maintained table like
       it is done in the case of the context hierarchy.
-    </p></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="permissions-tedious-party-hierarchy"></a>Party Hierarchy</h3></div></div></div><p>
+    </p></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="permissions-tedious-party-hierarchy"></a>Party Hierarchy</h3></div></div><div></div></div><p>
       Now for the third hierarchy playing a promiment role in the permission system. The party
       data model is set up as follows. 
-    </p><div class="informaltable"><table cellspacing="0" border="1"><colgroup><col align="center"><col align="center"></colgroup><tbody><tr><td colspan="2" align="center">
-	      <a href="permissions-tediously-explained.html#tedious-parties">parties</a>
-	    </td></tr><tr><td align="center">
-	      <a href="permissions-tediously-explained.html#persons">persons</a>
-	    </td><td rowspan="2" align="center" valign="top">
-	      <a href="permissions-tediously-explained.html#groups">groups</a>
-	    </td></tr><tr><td align="center">
-              <a href="permissions-tediously-explained.html#users">users</a>
-	    </td></tr></tbody></table></div><a name="tedious-parties"></a><pre class="programlisting">
-  create table <span class="bold"><strong>parties</strong></span> (
+    </p><div class="informaltable"><table cellspacing="0" border="1"><colgroup><col align="center"><col align="center"></colgroup><tbody><tr><td colspan="2" align="center"><a href="permissions-tediously-explained.html#tedious-parties">parties</a></td></tr><tr><td align="center"><a href="permissions-tediously-explained.html#persons">persons</a></td><td rowspan="2" align="center" valign="top"><a href="permissions-tediously-explained.html#groups">groups</a></td></tr><tr><td align="center"><a href="permissions-tediously-explained.html#users">users</a></td></tr></tbody></table></div><a name="tedious-parties"></a><pre class="programlisting">
+  create table <span class="bold"><b>parties</b></span> (
       party_id
           not null
           constraint parties_party_id_fk references <a href="permissions-tediously-explained.html#acs_objects">acs_objects</a> (object_id)
-          constraint parties_party_id_pk primary key,
+          constraint parties_pk primary key,
       email               varchar2(100)
           constraint parties_email_un unique,
       url                 varchar2(200)
   );
     </pre><a name="persons"></a><pre class="programlisting">
-  create table <span class="bold"><strong>persons</strong></span> (
+  create table <span class="bold"><b>persons</b></span> (
       person_id
           not null
           constraint persons_person_id_fk references <a href="permissions-tediously-explained.html#tedious-parties">parties</a> (party_id)
-          constraint persons_person_id_pk primary key,
+          constraint persons_pk primary key,
       first_names          varchar2(100)
           not null,
       last_name            varchar2(100)
           not null
   );
     </pre><a name="users"></a><pre class="programlisting">
-  create table <span class="bold"><strong>users</strong></span> (
+  create table <span class="bold"><b>users</b></span> (
       user_id
           not null
           constraint users_user_id_fk references <a href="permissions-tediously-explained.html#persons">persons</a> (person_id)
-          constraint users_user_id_pk primary key,
+          constraint users_pk primary key,
       password        char(40),
       -- other attributes
   );
     </pre><a name="groups"></a><pre class="programlisting"> 
-  create table <span class="bold"><strong>groups</strong></span> (
+  create table <span class="bold"><b>groups</b></span> (
       group_id
           not null
           constraint groups_group_id_fk references <a href="permissions-tediously-explained.html#tedious-parties">parties</a> (party_id)
-          constraint groups_group_id_pk primary key,
+          constraint groups_pk primary key,
       group_name           varchar2(100) not null
   );
     </pre><p>
-      Recall that the <code class="computeroutput">grantee_id</code> column of the
+      Recall that the <tt class="computeroutput">grantee_id</tt> column of the
       <a href="permissions-tediously-explained.html#acs_permissions">acs_permissions</a> table references 
-      <code class="computeroutput">parties.party_id</code>.
+      <tt class="computeroutput">parties.party_id</tt>.
       This means that you can grant a privilege on an object to a party, person, user, or group.
       Groups represent aggregations of parties. The most common scenario that you are likely
       to encounter is a group that is a collection of users, although you could also
@@ -385,9 +348,9 @@
       a group named <span class="emphasis"><em>Pranksters</em></span>, you can assign membership to Pete,
       Poly, and Penelope. The fact that these users are members of the
       <span class="emphasis"><em>Pranksters</em></span> group will be recorded in the
-      <code class="computeroutput">membership_rels</code> and <code class="computeroutput">acs_rels</code> tables: 
+      <tt class="computeroutput">membership_rels</tt> and <tt class="computeroutput">acs_rels</tt> tables: 
     </p><a name="acs_rels"></a><pre class="programlisting">
-  create table <span class="bold"><strong>acs_rels</strong></span> (
+  create table <span class="bold"><b>acs_rels</b></span> (
       rel_id
           not null
           constraint acs_rels_rel_id_fk references <a href="permissions-tediously-explained.html#acs_objects">acs_objects</a> (object_id)
@@ -405,7 +368,7 @@
           unique (rel_type, object_id_one, object_id_two)
   );
     </pre><a name="membership_rels"></a><pre class="programlisting">
-  create table <span class="bold"><strong>membership_rels</strong></span> (
+  create table <span class="bold"><b>membership_rels</b></span> (
       rel_id
           constraint membership_rel_rel_id_fk references <a href="permissions-tediously-explained.html#acs_rels">acs_rels</a> (rel_id)
           constraint membership_rel_rel_id_pk primary key,
@@ -417,13 +380,7 @@
     </pre><p>
       The <a href="permissions-tediously-explained.html#acs_rels">acs_rels</a>
       table entries would look like so: 
-    </p><div class="informaltable"><table cellspacing="0" border="1"><colgroup><col align="center"><col align="center"><col align="center"></colgroup><thead><tr><th align="center">
-              <code class="computeroutput">rel_type</code>
-	    </th><th align="center">
-              <code class="computeroutput">object_one</code>
-	    </th><th align="center">
-	      <code class="computeroutput">object_two</code>
-	    </th></tr></thead><tbody><tr><td align="center">
+    </p><div class="informaltable"><table cellspacing="0" border="1"><colgroup><col align="center"><col align="center"><col align="center"></colgroup><thead><tr><th align="center"><tt class="computeroutput">rel_type</tt></th><th align="center"><tt class="computeroutput">object_one</tt></th><th align="center"><tt class="computeroutput">object_two</tt></th></tr></thead><tbody><tr><td align="center">
 	      membership_rel
 	    </td><td align="center">
 	      Pranksters
@@ -441,34 +398,28 @@
 	      Pranksters
 	    </td><td align="center">
 	      Penelope
-	    </td></tr></tbody></table></div><p>Read <code class="computeroutput">acs_rels</code>: right-side is a
+	    </td></tr></tbody></table></div><p>Read <tt class="computeroutput">acs_rels</tt>: right-side is a
         subset of left-side, ie
-        <code class="computeroutput">object2</code> is a part of
-        <code class="computeroutput">object1</code>.
+        <tt class="computeroutput">object2</tt> is a part of
+        <tt class="computeroutput">object1</tt>.
 </p><p>
       Another way of building up groups is by adding subgroups.  Suppose
       we define <span class="emphasis"><em>Merry Pranksters</em></span> and <span class="emphasis"><em>Sad Pranksters</em></span> as subgroups
       of <span class="emphasis"><em>Pranksters</em></span>.  We say that the <span class="emphasis"><em>Pranksters</em></span> group
-      is <span class="strong"><strong>composed</strong></span> of 
+      is <span class="strong">composed</span> of 
       groups <span class="emphasis"><em>Merry Pranksters</em></span> and <span class="emphasis"><em>Sad Pranksters</em></span>.  This
       information is stored in the <a href="permissions-tediously-explained.html#acs_rels">acs_rels</a>
-      and <code class="computeroutput">composition_rels</code> tables. 
+      and <tt class="computeroutput">composition_rels</tt> tables. 
     </p><a name="composition_rels"></a><pre class="programlisting">
-create table <span class="bold"><strong>composition_rels</strong></span> (
+create table <span class="bold"><b>composition_rels</b></span> (
     rel_id
-        constraint composition_rel_rel_id_fk references <a href="permissions-tediously-explained.html#acs_rels">acs_rels</a> (rel_id)
-        constraint composition_rel_rel_id_pk primary key
+        constraint composition_rels_rel_id_fk references <a href="permissions-tediously-explained.html#acs_rels">acs_rels</a> (rel_id)
+        constraint composition_rels_rel_id_pk primary key
 );
     </pre><p>
       The relevant entries in the 
       <a href="permissions-tediously-explained.html#acs_rels">acs_rels</a> look like so. 
-    </p><div class="informaltable"><table cellspacing="0" border="1"><colgroup><col align="center"><col align="center"><col align="center"></colgroup><thead><tr><th align="center">
-              <code class="computeroutput">rel_type</code>
-	    </th><th align="center">
-              <code class="computeroutput">object_one</code>
-	    </th><th align="center">
-	      <code class="computeroutput">object_two</code>
-	    </th></tr></thead><tbody><tr><td align="center">
+    </p><div class="informaltable"><table cellspacing="0" border="1"><colgroup><col align="center"><col align="center"><col align="center"></colgroup><thead><tr><th align="center"><tt class="computeroutput">rel_type</tt></th><th align="center"><tt class="computeroutput">object_one</tt></th><th align="center"><tt class="computeroutput">object_two</tt></th></tr></thead><tbody><tr><td align="center">
 	      composition_rel
 	    </td><td align="center">
 	      Pranksters
@@ -498,7 +449,7 @@
       reducing the performance hit incurred by hierarchical queries is to cache query results in
       a table maintained by triggers.  The OpenACS data model defines two such tables:
     </p><a name="group_component_index"></a><pre class="programlisting">
- create table <span class="bold"><strong>group_component_index</strong></span> (
+ create table <span class="bold"><b>group_component_index</b></span> (
           group_id        not null
                           constraint group_comp_index_group_id_fk
                           references <a href="permissions-tediously-explained.html#groups">groups</a> (group_id),
@@ -517,7 +468,7 @@
           primary key (group_id, component_id, rel_id)
   ) organization index;
     </pre><a name="group_member_index"></a><pre class="programlisting">
-  create table <span class="bold"><strong>group_member_index</strong></span> (
+  create table <span class="bold"><b>group_member_index</b></span> (
       group_id
           not null
           constraint group_member_index_grp_id_fk references <a href="permissions-tediously-explained.html#groups">groups</a> (group_id),
@@ -534,11 +485,11 @@
           primary key (member_id, group_id, rel_id)
   ) organization index;
     </pre><p>
-      The <code class="computeroutput">group_component_index</code> table stores a flattened representation of the
+      The <tt class="computeroutput">group_component_index</tt> table stores a flattened representation of the
       group composition hierarchy that is maintained in sync with the <a href="permissions-tediously-explained.html#acs_rels">acs_rels</a>
-      and <code class="computeroutput">composition_rels</code> tables through triggers. 
-    </p><p><span class="strong"><strong>additional comments</strong></span></p><p>
-      As far as the <code class="computeroutput">group_member_index</code> table goes, I am not sure I understand its
+      and <tt class="computeroutput">composition_rels</tt> tables through triggers. 
+    </p><p><span class="strong">additional comments</span></p><p>
+      As far as the <tt class="computeroutput">group_member_index</tt> table goes, I am not sure I understand its
       purpose.  It maintains group-member relationships that are resolved with respect
       to group composition.  Note that information stored in
       <a href="permissions-tediously-explained.html#group_member_index">group_member_index</a> can be trivially derived by joining
@@ -569,7 +520,7 @@
   mr.rel_id = r.rel_id
   and r.object_id_one = gci.component_id;
     </pre><p>
-      A heuristic way to verify that <code class="computeroutput">group_member_view</code> is essentially identical
+      A heuristic way to verify that <tt class="computeroutput">group_member_view</tt> is essentially identical
       to <a href="permissions-tediously-explained.html#group_member_index">group_member_index</a> is to compute the
       symmetric difference between the two: 
     </p><pre class="programlisting">
@@ -597,16 +548,16 @@
       membership relationship resolution can be computed trivially with no hierarchical
       queries involved. There is no need to keep the view in a denormalized
       table, unless doing so results in substantial performance gains.
-    </p></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="permissions-tedious-putting-all-together"></a>Putting It All Together</h3></div></div></div><p>
-      Security information is queried by calling the <code class="computeroutput">acs_permission.permission_p</code>
+    </p></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="permissions-tedious-putting-all-together"></a>Putting It All Together</h3></div></div><div></div></div><p>
+      Security information is queried by calling the <tt class="computeroutput">acs_permission.permission_p</tt>
       function in OpenACS. This is accessible from Tcl via the
-      <code class="computeroutput">permission::permission_p</code> procedure. 
+      <tt class="computeroutput">permission::permission_p</tt> procedure. 
     </p><pre class="programlisting">  
   create or replace package body acs_permission
   as
     -- some stuff removed for the sake of brevity
   
-    function <span class="bold"><strong>permission_p</strong></span> (
+    function <span class="bold"><b>permission_p</b></span> (
       object_id	 acs_objects.object_id%TYPE,
       party_id	 parties.party_id%TYPE,
       privilege	 acs_privileges.privilege%TYPE
@@ -624,15 +575,15 @@
     end;
 
   end acs_permission;
-    </pre><p><span class="strong"><strong>problem avoidance</strong></span></p><p>
+    </pre><p><span class="strong">problem avoidance</span></p><p>
       The function queries 
       <a href="permissions-tediously-explained.html#acs_object_party_privilege_map">acs_object_party_privilege_map</a>,
       which is a humongous view that joins three flattened hierarchies:
       the context tree, the privilege hierarchy,
       the party composition (and membership) hierarchy. 
       It contains an extremely large number of rows. About
       the only kind of query you can run against it is the one
-      performed by the <code class="computeroutput">acs_permission.permission_p</code>
+      performed by the <tt class="computeroutput">acs_permission.permission_p</tt>
       function.  Anything other than that would take forever to
       finish or would ultimately result in a query error.
     </p><p>
@@ -668,7 +619,7 @@
   end;
   /
     </pre><p>
-      The <code class="computeroutput">acs_permission.revoke_permission</code> function merely runs a
+      The <tt class="computeroutput">acs_permission.revoke_permission</tt> function merely runs a
       delete statement like so: 
     </p><pre class="programlisting">  
   delete from
@@ -678,15 +629,9 @@
      and grantee_id = revoke_permission.grantee_id
      and privilege = revoke_permission.privilege;
     </pre><p>
-      Note that in the above example, <code class="computeroutput">acs_permissions</code> had only
+      Note that in the above example, <tt class="computeroutput">acs_permissions</tt> had only
       one entry that needed to be deleted: 
-    </p><div class="informaltable"><table cellspacing="0" border="1"><colgroup><col align="center"><col align="center"><col align="center"></colgroup><thead><tr><th align="center">
-              <code class="computeroutput">object_id</code>
-	    </th><th align="center">
-	      <code class="computeroutput">grantee_id</code>
-	    </th><th align="center">
-	      <code class="computeroutput">privilege</code>
-	    </th></tr></thead><tbody><tr><td align="center">
+    </p><div class="informaltable"><table cellspacing="0" border="1"><colgroup><col align="center"><col align="center"><col align="center"></colgroup><thead><tr><th align="center"><tt class="computeroutput">object_id</tt></th><th align="center"><tt class="computeroutput">grantee_id</tt></th><th align="center"><tt class="computeroutput">privilege</tt></th></tr></thead><tbody><tr><td align="center">
 	      default_context
 	    </td><td align="center">
 	      registered_users
@@ -695,9 +640,9 @@
 	    </td></tr></tbody></table></div><p>
       The above script would never get around to deleting this entry because it had
       to loop through a gazillion rows in the humongous
-      <code class="computeroutput">acs_object_party_privilege_map</code> view. 
-    </p></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="permissions-tedious-appendix"></a>Appendix: Various View Definitions</h3></div></div></div><a name="acs_object_party_privilege_map"></a><pre class="programlisting">
-create or replace view <span class="bold"><strong>acs_object_party_privilege_map</strong></span>
+      <tt class="computeroutput">acs_object_party_privilege_map</tt> view. 
+    </p></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="permissions-tedious-appendix"></a>Appendix: Various View Definitions</h3></div></div><div></div></div><a name="acs_object_party_privilege_map"></a><pre class="programlisting">
+create or replace view <span class="bold"><b>acs_object_party_privilege_map</b></span>
 as
 select
   ogpm.object_id,
@@ -716,7 +661,7 @@
 from
   <a href="permissions-tediously-explained.html#acs_object_grantee_priv_map">acs_object_grantee_priv_map</a>;
     </pre><a name="acs_object_grantee_priv_map"></a><pre class="programlisting">
-create or replace view <span class="bold"><strong>acs_object_grantee_priv_map</strong></span>
+create or replace view <span class="bold"><b>acs_object_grantee_priv_map</b></span>
 as
 select
   a.object_id,
@@ -728,7 +673,7 @@
 where
   a.privilege = m.privilege;
     </pre><a name="acs_permissions_all"></a><pre class="programlisting"> 
-create or replace view <span class="bold"><strong>acs_permissions_all</strong></span>
+create or replace view <span class="bold"><b>acs_permissions_all</b></span>
 as
 select
   op.object_id,
@@ -740,7 +685,7 @@
 where
   op.ancestor_id = p.object_id;
     </pre><a name="acs_object_paths"></a><pre class="programlisting">
-create or replace view <span class="bold"><strong>acs_object_paths</strong></span>
+create or replace view <span class="bold"><b>acs_object_paths</b></span>
 as
 select
   object_id,
@@ -750,7 +695,7 @@
   <a href="permissions-tediously-explained.html#acs_object_context_index">acs_object_context_index</a>;
     </pre><a name="group_member_map"></a><pre class="programlisting"> 
 
-create or replace view <span class="bold"><strong>group_member_map</strong></span>
+create or replace view <span class="bold"><b>group_member_map</b></span>
 as
 select
   group_id,
Index: openacs-4/packages/acs-core-docs/www/permissions.html
===================================================================
RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/permissions.html,v
diff -u -r1.43 -r1.43.4.1
--- openacs-4/packages/acs-core-docs/www/permissions.html	5 Aug 2006 05:18:20 -0000	1.43
+++ openacs-4/packages/acs-core-docs/www/permissions.html	3 Feb 2008 12:07:40 -0000	1.43.4.1
@@ -1,11 +1,12 @@
-<html><head><meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"><title>Groups, Context, Permissions</title><meta name="generator" content="DocBook XSL Stylesheets V1.70.1"><link rel="home" href="index.html" title="OpenACS Core Documentation"><link rel="up" href="dev-guide.html" title="Chapter�11.�Development Reference"><link rel="previous" href="templates.html" title="Using Templates in OpenACS"><link rel="next" href="subsites.html" title="Writing OpenACS Application Pages"><link rel="stylesheet" href="openacs.css" type="text/css"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><a href="http://openacs.org"><img src="/doc/images/alex.jpg" border="0" alt="Alex logo"></a><table width="100%" summary="Navigation header" border="0"><tr><td width="20%" align="left"><a accesskey="p" href="templates.html">Prev</a> </td><th width="60%" align="center">Chapter�11.�Development Reference</th><td width="20%" align="right"> <a accesskey="n" href="subsites.html">Next</a></td></tr></table><hr></div><div class="sect1" lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="permissions"></a>Groups, Context, Permissions</h2></div></div></div><div class="authorblurb"><p>By Pete Su</p>
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html><head><meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"><title>Groups, Context, Permissions</title><meta name="generator" content="DocBook XSL Stylesheets V1.60.1"><link rel="home" href="index.html" title="OpenACS Core Documentation"><link rel="up" href="dev-guide.html" title="Chapter�11.�Development Reference"><link rel="previous" href="templates.html" title="Using Templates in OpenACS"><link rel="next" href="subsites.html" title="Writing OpenACS Application Pages"><link rel="stylesheet" href="openacs.css" type="text/css"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><a href="http://openacs.org"><img src="/doc/images/alex.jpg" border="0" alt="Alex logo"></a><table width="100%" summary="Navigation header" border="0"><tr><td width="20%" align="left"><a accesskey="p" href="templates.html">Prev</a> </td><th width="60%" align="center">Chapter�11.�Development Reference</th><td width="20%" align="right"> <a accesskey="n" href="subsites.html">Next</a></td></tr></table><hr></div><div class="sect1" lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="permissions"></a>Groups, Context, Permissions</h2></div></div><div></div></div><div class="authorblurb"><p>By Pete Su</p>
           OpenACS docs are written by the named authors, and may be edited
           by OpenACS documentation staff.
-        </div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="permissions-overview"></a>Overview</h3></div></div></div><p>
-The OpenACS 5.2.3rc1 Permissions system allows developers and administrators to
+        </div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="permissions-overview"></a>Overview</h3></div></div><div></div></div><p>
+The OpenACS 5.4.0 Permissions system allows developers and administrators to
 set access control policies at the object level, that is, any
 application or system object represented by a row in the
-<code class="computeroutput">acs_objects</code> table can be access-controlled via a
+<tt class="computeroutput">acs_objects</tt> table can be access-controlled via a
 PL/SQL or Tcl interface. The permissions system manages a data model
 that then allows scripts to check permissions using another API call.
 </p><p>
@@ -19,10 +20,10 @@
 together into larger security domains.
 </p></li></ol></div><p>The rest of this document discusses each of these parts, and how they fit together with the
 permissions system.
-</p></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="permissions-groups"></a>Groups</h3></div></div></div><p>
-OpenACS 5.2.3rc1 has an abstraction called a <span class="emphasis"><em>party</em></span>. Parties have a recursive
+</p></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="permissions-groups"></a>Groups</h3></div></div><div></div></div><p>
+OpenACS 5.4.0 has an abstraction called a <span class="emphasis"><em>party</em></span>. Parties have a recursive
 definition. We can illustrate how it works with the following
-simplified data model. First, we define the <code class="computeroutput">parties</code>
+simplified data model. First, we define the <tt class="computeroutput">parties</tt>
 table, where each party has an email address and a URL for contact
 information.
 </p><pre class="programlisting">
@@ -50,8 +51,8 @@
 )
 
 </pre><p>
-The <code class="computeroutput">users</code> table is also defined in this data model as a
-subtype of <code class="computeroutput">person</code>. 
+The <tt class="computeroutput">users</tt> table is also defined in this data model as a
+subtype of <tt class="computeroutput">person</tt>. 
 </p><p>
 Finally, we define two relations, one for group <span class="emphasis"><em>membership</em></span> and
 one for group <span class="emphasis"><em>composition</em></span>.  
@@ -70,7 +71,7 @@
 </p><p>
 The full details of the groups data model is beyond the scope of this
 tutorial. See <a href="parties.html">Parties in OpenACS</a> or <a href="groups-design.html">OpenACS 4 Groups Design</a> for more details.
-</p></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="permissions-permissions"></a>Permissions</h3></div></div></div><p>
+</p></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="permissions-permissions"></a>Permissions</h3></div></div><div></div></div><p>
   NOTE: Much more detailed information about the permissions system
   and how to use it is available in the
   <a href="permissions-tediously-explained.html">OpenACS Permissions Tediously Explained</a> document.
@@ -83,14 +84,14 @@
 some object. Privileges are the basic units out of which we build access
 control policies.  For example in the Unix filesystem, access is controlled by granting users some combination of
 read, write, or execute privileges on files and directories. In
-OpenACS 5.2.3rc1,
+OpenACS 5.4.0,
 the table of privileges is organized hierarchically so that developers
 can define privileges that aggregate some set of privileges
 together. For example, if we have read, write, create and delete
 privileges, it might be convenient to combine them into a new privilege
-called "admin". Then, when a user is granted "admin" privilege, she is
+called &quot;admin&quot;. Then, when a user is granted &quot;admin&quot; privilege, she is
 automatically granted all the child privileges that the privilege
-contains. The OpenACS 5.2.3rc1 kernel data model defines these
+contains. The OpenACS 5.4.0 kernel data model defines these
 privileges:
 </p><pre class="programlisting">
 # 
@@ -116,7 +117,7 @@
 </p><p>
 To give a user permission to perform a particular operation on a
 particular object you call
-<code class="computeroutput">acs_permission.grant_permission</code> like this:
+<tt class="computeroutput">acs_permission.grant_permission</tt> like this:
 
  </p><pre class="programlisting">
 # sql code
@@ -134,12 +135,12 @@
 would become very tedious.
 OpenACS provides a object contexts as a means for controlling permissions of a large group
 of objects at the same time. 
-</p></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="permissions-object-context"></a>Object Context</h3></div></div></div><p>
-In OpenACS 5.2.3rc1, object context is a scoping
-mechanism.  "Scoping" and "scope" are terms best
+</p></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="permissions-object-context"></a>Object Context</h3></div></div><div></div></div><p>
+In OpenACS 5.4.0, object context is a scoping
+mechanism.  &quot;Scoping&quot; and &quot;scope&quot; are terms best
 explained by example: consider some hypothetical rows in the
-<code class="computeroutput">address_book</code> table:
-</p><div class="informaltable"><table cellspacing="0" border="1"><colgroup><col><col><col><col><col></colgroup><thead><tr><th>...</th><th><code class="computeroutput">scope</code></th><th><code class="computeroutput">user_id</code></th><th><code class="computeroutput">group_id</code></th><th>...</th></tr></thead><tbody><tr><td>...</td><td><code class="computeroutput">user</code></td><td><code class="computeroutput">123</code></td><td> </td><td>...</td></tr><tr><td>...</td><td><code class="computeroutput">group</code></td><td> </td><td><code class="computeroutput">456</code></td><td>...</td></tr><tr><td>...</td><td><code class="computeroutput">public</code></td><td> </td><td> </td><td>...</td></tr></tbody></table></div><p>
+<tt class="computeroutput">address_book</tt> table:
+</p><div class="informaltable"><table cellspacing="0" border="1"><colgroup><col><col><col><col><col></colgroup><thead><tr><th>...</th><th><tt class="computeroutput">scope</tt></th><th><tt class="computeroutput">user_id</tt></th><th><tt class="computeroutput">group_id</tt></th><th>...</th></tr></thead><tbody><tr><td>...</td><td><tt class="computeroutput">user</tt></td><td><tt class="computeroutput">123</tt></td><td>�</td><td>...</td></tr><tr><td>...</td><td><tt class="computeroutput">group</tt></td><td>�</td><td><tt class="computeroutput">456</tt></td><td>...</td></tr><tr><td>...</td><td><tt class="computeroutput">public</tt></td><td>�</td><td>�</td><td>...</td></tr></tbody></table></div><p>
 The first row represents an entry in User 123's personal address book,
 the second row represents an entry in User Group 456's shared address
 book, and the third row represents an entry in the site's public
@@ -152,25 +153,25 @@
 another object that represents the security domain to which the object
 belongs. By convention, if an object A does not have any permissions
 explicitly attached to it, then the system will look at the
-<code class="computeroutput">context_id</code> column in <code class="computeroutput">acs_objects</code> and check
+<tt class="computeroutput">context_id</tt> column in <tt class="computeroutput">acs_objects</tt> and check
 the context object there for permissions. Two things control the scope
 of this search:</p><div class="orderedlist"><ol type="1"><li><p>the structure of the context hierarchy
 itself, and 
 </p></li><li><p>
-the value of the <code class="computeroutput">security_inherit_p</code>
+the value of the <tt class="computeroutput">security_inherit_p</tt>
 flag in each object.
 </p></li></ol></div><p>If
-<code class="computeroutput">security_inherit_p</code> flag is set to <code class="computeroutput">'t'</code>, then the automatic search
+<tt class="computeroutput">security_inherit_p</tt> flag is set to <tt class="computeroutput">'t'</tt>, then the automatic search
 through the context happens, otherwise it does not. You might set this
-field to <code class="computeroutput">'f'</code> if you want to override the default
+field to <tt class="computeroutput">'f'</tt> if you want to override the default
 permissions in a subtree of some context.
 </p><p>For an example of how to use context hierarchy, consider the forums
 application. With only row-level permissions it is not obvious how to
 reasonably initialize the access control list when creating a
 message. At best, we have to explicitly grant various read and write
 privileges whenever we create a message, which is tedious.  
 A reasonable thing to do is to create an object representing a forum,
-and point the <code class="computeroutput">context_id</code> field of a new message at the
+and point the <tt class="computeroutput">context_id</tt> field of a new message at the
 forum. Then, suppose we grant every user in the system read-access to
 this forum. By default, they will automatically have read-access to
 the new message we just inserted, since the system automatically
@@ -182,23 +183,23 @@
 hierarchy that matches the structure they need for access control in
 their application.  The following picture shows a typical context
 hierarchy for a hypothetical site:
-</p><div class="blockquote"><blockquote class="blockquote"><div><img src="images/context-hierarchy.gif"></div></blockquote></div><p>
+</p><div class="blockquote"><blockquote class="blockquote"><div><img src="../images/context-hierarchy.gif"></div></blockquote></div><p>
 The top two contexts in the diagram
-are called "magic" numbers, because in some sense, they are created by default by OpenACS
-for a specific purpose. The object <code class="computeroutput">default_context</code>
+are called &quot;magic&quot; numbers, because in some sense, they are created by default by OpenACS
+for a specific purpose. The object <tt class="computeroutput">default_context</tt>
 represents the root of the context hierarchy for the entire site. All
 permission searches walk up the tree to this point and then stop. If
 you grant permissions on this object, then by default those
 permissions will hold for every object in the system, regardless of
 which subsite they happen to live in. The object
-<code class="computeroutput">security_context_root</code> has a slightly different role. If
+<tt class="computeroutput">security_context_root</tt> has a slightly different role. If
 some object has no permissions attached to it, and its value for
-<code class="computeroutput">security_inherit_p</code> is <code class="computeroutput">'f'</code>, or
-<code class="computeroutput">context_id</code> is null, this context is used by default.
+<tt class="computeroutput">security_inherit_p</tt> is <tt class="computeroutput">'f'</tt>, or
+<tt class="computeroutput">context_id</tt> is null, this context is used by default.
 </p><p>See the package developer tutorials for examples on how to use
 permissions code.
-</p></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="permissions-summary"></a>Summary</h3></div></div></div><p>
-OpenACS 5.2.3rc1 defines three separate mechanisms for specifying access control
+</p></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="permissions-summary"></a>Summary</h3></div></div><div></div></div><p>
+OpenACS 5.4.0 defines three separate mechanisms for specifying access control
 in applications. </p><div class="orderedlist"><ol type="1"><li><p>
 The Groups data model allows you to define 
 hierarchical organizations of users and groups of users. 
Index: openacs-4/packages/acs-core-docs/www/postgres.html
===================================================================
RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/postgres.html,v
diff -u -r1.44 -r1.44.4.1
--- openacs-4/packages/acs-core-docs/www/postgres.html	21 Sep 2006 22:01:43 -0000	1.44
+++ openacs-4/packages/acs-core-docs/www/postgres.html	3 Feb 2008 12:07:40 -0000	1.44.4.1
@@ -1,7 +1,8 @@
-<html><head><meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"><title>Install PostgreSQL</title><meta name="generator" content="DocBook XSL Stylesheets V1.70.1"><link rel="home" href="index.html" title="OpenACS Core Documentation"><link rel="up" href="complete-install.html" title="Chapter�3.�Complete Installation"><link rel="previous" href="oracle.html" title="Install Oracle 8.1.7"><link rel="next" href="aolserver4.html" title="Install AOLserver 4"><link rel="stylesheet" href="openacs.css" type="text/css"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><a href="http://openacs.org"><img src="/doc/images/alex.jpg" border="0" alt="Alex logo"></a><table width="100%" summary="Navigation header" border="0"><tr><td width="20%" align="left"><a accesskey="p" href="oracle.html">Prev</a> </td><th width="60%" align="center">Chapter�3.�Complete Installation</th><td width="20%" align="right"> <a accesskey="n" href="aolserver4.html">Next</a></td></tr></table><hr></div><div class="sect1" lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="postgres"></a>Install PostgreSQL</h2></div></div></div><div class="authorblurb"><p>by <a href="mailto:vinod@kurup.com" target="_top">Vinod Kurup</a></p>
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html><head><meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"><title>Install PostgreSQL</title><meta name="generator" content="DocBook XSL Stylesheets V1.60.1"><link rel="home" href="index.html" title="OpenACS Core Documentation"><link rel="up" href="complete-install.html" title="Chapter�3.�Complete Installation"><link rel="previous" href="oracle.html" title="Install Oracle 8.1.7"><link rel="next" href="aolserver4.html" title="Install AOLserver 4"><link rel="stylesheet" href="openacs.css" type="text/css"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><a href="http://openacs.org"><img src="/doc/images/alex.jpg" border="0" alt="Alex logo"></a><table width="100%" summary="Navigation header" border="0"><tr><td width="20%" align="left"><a accesskey="p" href="oracle.html">Prev</a> </td><th width="60%" align="center">Chapter�3.�Complete Installation</th><td width="20%" align="right"> <a accesskey="n" href="aolserver4.html">Next</a></td></tr></table><hr></div><div class="sect1" lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="postgres"></a>Install PostgreSQL</h2></div></div><div></div></div><div class="authorblurb"><p>by <a href="mailto:vinod@kurup.com" target="_top">Vinod Kurup</a></p>
           OpenACS docs are written by the named authors, and may be edited
           by OpenACS documentation staff.
-        </div><p>Skip this section if you will run only Oracle.</p><p>OpenACS 5.2.3rc1 will run with <a href="individual-programs.html#source-postgresql">PostgreSQL</a> 7.3.2, 7.3.3, and 7.3.4 and 7.4.x.  7.4.7 is the recommended version of PostgreSQL.</p><div class="itemizedlist"><ul type="disc"><li><p><a name="install-postgres-mac"></a><b>Special notes for Mac OS X.�</b>If you are running Mac OS X prior to 10.3, you should be
+        </div><p>Skip this section if you will run only Oracle.</p><p>OpenACS 5.4.0 will run with <a href="individual-programs.html#source-postgresql">PostgreSQL</a> 7.3.2, 7.3.3, and 7.3.4 and 7.4.x.  7.4.7 is the recommended version of PostgreSQL.</p><div class="itemizedlist"><ul type="disc"><li><p><a name="install-postgres-mac"></a><b>Special notes for Mac OS X.�</b>If you are running Mac OS X prior to 10.3, you should be
         able to install and use PostGreSQL 7.3.x.  Mac OS X 10.3
         requires PostGreSQL 7.4. </p></li><li><p><a name="install-postgres-debian"></a><b>Special Notes for Debian.�</b></p><p>Debian stable user should install PostGreSQL from source
       as detailed below, or they should use the www.backports.org
@@ -10,78 +11,78 @@
       (but you should double-check that the version of PostGreSQL is
       7.3 or above):</p><p>For Debian stable users, you can use backports, by adding
       this line to the /etc/apt/sources.list</p><pre class="screen">
-        <strong class="userinput"><code>deb http://www.backports.org/debian stable bison postgresql openssl openssh tcl8.4 courier debconf spamassassin tla diff patch neon chkrootkit
-        </code></strong>
-      </pre><pre class="screen"><strong class="userinput"><code>apt-get install postgresql postgresql-dev postgresql-doc
+        <b class="userinput"><tt>deb http://www.backports.org/debian stable bison postgresql openssl openssh tcl8.4 courier debconf spamassassin tla diff patch neon chkrootkit
+        </tt></b>
+      </pre><pre class="screen"><b class="userinput"><tt>apt-get install postgresql postgresql-dev postgresql-doc
 ln -s /usr/include/postgresql/ /usr/include/pgsql
 ln -s /var/lib/postgres /usr/local/pgsql
 ln -s /usr/include/pgsql /usr/local/pgsql/include
-su postgres -c "/usr/lib/postgresql/bin/createlang plpgsql template1"</code></strong></pre><p>and proceed to <a href="postgres.html#postgres-tune" title="Tune postgres.  (OPTIONAL)">Tune postgres.  (OPTIONAL)</a> or to the
+su postgres -c &quot;/usr/lib/postgresql/bin/createlang plpgsql template1&quot;</tt></b></pre><p>and proceed to <a href="postgres.html#postgres-tune" title="Tune postgres.  (OPTIONAL)">Tune postgres.  (OPTIONAL)</a> or to the
       next section.</p></li><li><p><a name="install-postgres-rpm"></a><b>Special Notes for Red Hat.�</b>Red Hat users: If you install PostgreSQL 7.3.2 from the Red Hat 9 RPM, you
   can skip a few steps.  These shell commands add some links for compatibility with the directories from a source-based install; start the service; create a new group for web service
   users, and modify the postgres user's
   environment (<a href="postgres.html#install-postgres-env">more
-  information</a>):</p><pre class="screen">[root root]# <strong class="userinput"><code>ln -s /usr/lib/pgsql/ /var/lib/pgsql/lib</code></strong>
-[root root]# <strong class="userinput"><code>ln -s /var/lib/pgsql /usr/local/pgsql</code></strong>
-[root root]# <strong class="userinput"><code>ln -s /etc/init.d/postgresql /etc/init.d/postgres</code></strong>
-[root root]# <strong class="userinput"><code>ln -s /usr/bin /usr/local/pgsql/bin</code></strong>
-[root root]# <strong class="userinput"><code>service postgresql start</code></strong>
+  information</a>):</p><pre class="screen">[root root]# <b class="userinput"><tt>ln -s /usr/lib/pgsql/ /var/lib/pgsql/lib</tt></b>
+[root root]# <b class="userinput"><tt>ln -s /var/lib/pgsql /usr/local/pgsql</tt></b>
+[root root]# <b class="userinput"><tt>ln -s /etc/init.d/postgresql /etc/init.d/postgres</tt></b>
+[root root]# <b class="userinput"><tt>ln -s /usr/bin /usr/local/pgsql/bin</tt></b>
+[root root]# <b class="userinput"><tt>service postgresql start</tt></b>
 Initializing database:
                                                            [  OK  ]
 Starting postgresql service:                               [  OK  ]
-[root root]# <strong class="userinput"><code>echo "export LD_LIBRARY_PATH=/usr/local/pgsql/lib" &gt;&gt; ~postgres/.bash_profile</code></strong>
-[root root]# <strong class="userinput"><code>echo "export PATH=$PATH:/usr/local/pgsql/bin" &gt;&gt; ~postgres/.bash_profile</code></strong>
-[root root]# <strong class="userinput"><code>groupadd web</code></strong>
-[root root]# <strong class="userinput"><code>su - postgres</code></strong>
+[root root]# <b class="userinput"><tt>echo &quot;export LD_LIBRARY_PATH=/usr/local/pgsql/lib&quot; &gt;&gt; ~postgres/.bash_profile</tt></b>
+[root root]# <b class="userinput"><tt>echo &quot;export PATH=$PATH:/usr/local/pgsql/bin&quot; &gt;&gt; ~postgres/.bash_profile</tt></b>
+[root root]# <b class="userinput"><tt>groupadd web</tt></b>
+[root root]# <b class="userinput"><tt>su - postgres</tt></b>
 -bash-2.05b$
 <span class="action"><span class="action">
 ln -s /usr/lib/pgsql/ /var/lib/pgsql/lib
 ln -s /var/lib/pgsql /usr/local/pgsql
 ln -s /usr/bin /usr/local/pgsql/bin
 service postgresql start
-echo "export LD_LIBRARY_PATH=/usr/local/pgsql/lib" &gt;&gt; ~postgres/.bash_profile
-echo "export PATH=$PATH:/usr/local/pgsql/bin" &gt;&gt; ~postgres/.bash_profile
+echo &quot;export LD_LIBRARY_PATH=/usr/local/pgsql/lib&quot; &gt;&gt; ~postgres/.bash_profile
+echo &quot;export PATH=$PATH:/usr/local/pgsql/bin&quot; &gt;&gt; ~postgres/.bash_profile
 groupadd web
 su - postgres</span></span></pre><p>... and then skip to <a href="postgres.html#install-plpgsql" title="">8</a>.  Something similar may work for other binary packages as well.</p></li><li><p>Safe approach: install from source</p><div class="orderedlist"><ol type="1"><li><p><b>Unpack PostgreSQL 7.4.7.�</b>If you have not downloaded the postgresql tarball to
-        <code class="computeroutput">/var/tmp/postgresql-7.4.7.tar.gz</code>,
-        <a href="individual-programs.html#source-postgresql">get it</a>.</p><pre class="screen">[root root]# <strong class="userinput"><code>cd /usr/local/src</code></strong>
-[root src]# <strong class="userinput"><code>tar xzf /var/tmp/postgresql-7.4.7.tar.gz</code></strong>
+        <tt class="computeroutput">/var/tmp/postgresql-7.4.7.tar.gz</tt>,
+        <a href="individual-programs.html#source-postgresql">get it</a>.</p><pre class="screen">[root root]# <b class="userinput"><tt>cd /usr/local/src</tt></b>
+[root src]# <b class="userinput"><tt>tar xzf /var/tmp/postgresql-7.4.7.tar.gz</tt></b>
 [root src]# 
 <span class="action"><span class="action">cd /usr/local/src
 tar xzf /var/tmp/postgresql-7.4.7.tar.gz</span></span></pre></li><li><p><b>ALTERNATIVE: Unpack PostgreSQL 7.4.7.�</b>If you have not downloaded the postgresql tarball to
-        <code class="computeroutput">/var/tmp/postgresql-7.4.7.tar.bz2</code>,
-        <a href="individual-programs.html#source-postgresql">get it</a>.</p><pre class="screen">[root root]# <strong class="userinput"><code>cd /usr/local/src</code></strong>
-[root src]# <strong class="userinput"><code>tar xfj /var/tmp/postgresql-7.4.7.tar.bz2</code></strong>
+        <tt class="computeroutput">/var/tmp/postgresql-7.4.7.tar.bz2</tt>,
+        <a href="individual-programs.html#source-postgresql">get it</a>.</p><pre class="screen">[root root]# <b class="userinput"><tt>cd /usr/local/src</tt></b>
+[root src]# <b class="userinput"><tt>tar xfj /var/tmp/postgresql-7.4.7.tar.bz2</tt></b>
 [root src]# 
 <span class="action"><span class="action">cd /usr/local/src
-tar xfj /var/tmp/postgresql-7.4.7.tar.bz2</span></span></pre></li><li><p><b>Install Bison.�</b>Only do this if <strong class="userinput"><code>bison --version</code></strong> is smaller than 1.875 and you install PostgreSQL 7.4 from cvs instead of tarball.</p><pre class="screen">[root root]# <strong class="userinput"><code>cd /usr/local/src</code></strong>
-[root src]# <strong class="userinput"><code>wget http://ftp.gnu.org/gnu/bison/bison-1.875.tar.gz</code></strong>
-[root src]# <strong class="userinput"><code>tar xfz bison-1.875.tar.gz</code></strong>
-[root src]# <strong class="userinput"><code>cd bison-1.875</code></strong>
-[root src]# <strong class="userinput"><code>./configure</code></strong>
-[root src]# <strong class="userinput"><code>make install</code></strong>
+tar xfj /var/tmp/postgresql-7.4.7.tar.bz2</span></span></pre></li><li><p><b>Install Bison.�</b>Only do this if <b class="userinput"><tt>bison --version</tt></b> is smaller than 1.875 and you install PostgreSQL 7.4 from cvs instead of tarball.</p><pre class="screen">[root root]# <b class="userinput"><tt>cd /usr/local/src</tt></b>
+[root src]# <b class="userinput"><tt>wget http://ftp.gnu.org/gnu/bison/bison-1.875.tar.gz</tt></b>
+[root src]# <b class="userinput"><tt>tar xfz bison-1.875.tar.gz</tt></b>
+[root src]# <b class="userinput"><tt>cd bison-1.875</tt></b>
+[root src]# <b class="userinput"><tt>./configure</tt></b>
+[root src]# <b class="userinput"><tt>make install</tt></b>
       </pre></li><li><p><b>Create the Postgres user.�</b>
 	  Create a user and group (if you haven't done so before) for
 	  PostgreSQL. This is the account that PostgreSQL will run as
 	  since it will not run as root.  Since nobody will log in
 	  directly as that user, we'll leave the password blank.
 	</p><p>
 	  Debian users should probably use adduser instead of
-	  useradd. Type <code class="computeroutput">man adduser</code>
-	</p><pre class="screen">[root src]# <strong class="userinput"><code>groupadd web</code></strong>
-[root src]# <strong class="userinput"><code>useradd -g web -d /usr/local/pgsql postgres</code></strong>
-[root src]# <strong class="userinput"><code>mkdir -p /usr/local/pgsql</code></strong>
-[root src]# <strong class="userinput"><code>chown -R postgres.web /usr/local/pgsql /usr/local/src/postgresql-7.4.7</code></strong>
-[root src]# <strong class="userinput"><code>chmod 750 /usr/local/pgsql</code></strong>
+	  useradd. Type <tt class="computeroutput">man adduser</tt>
+	</p><pre class="screen">[root src]# <b class="userinput"><tt>groupadd web</tt></b>
+[root src]# <b class="userinput"><tt>useradd -g web -d /usr/local/pgsql postgres</tt></b>
+[root src]# <b class="userinput"><tt>mkdir -p /usr/local/pgsql</tt></b>
+[root src]# <b class="userinput"><tt>chown -R postgres.web /usr/local/pgsql /usr/local/src/postgresql-7.4.7</tt></b>
+[root src]# <b class="userinput"><tt>chmod 750 /usr/local/pgsql</tt></b>
 [root src]#
 <span class="action"><span class="action">groupadd web
 useradd -g web -d /usr/local/pgsql postgres
 mkdir -p /usr/local/pgsql
 chown -R postgres.web /usr/local/pgsql /usr/local/src/postgresql-7.4.7
 chmod 750 /usr/local/pgsql</span></span></pre><div class="itemizedlist"><ul type="circle"><li><p><b>Mac OS X: Do instead:�</b>First make sure the gids and uids below are available (change them if 
-they  are not).To list taken uids and gids:</p><pre class="screen"><strong class="userinput"><code>nireport / /groups name gid | grep "[0123456789][0123456789]"
-nireport / /users name uid | grep "[0123456789][0123456789]"</code></strong>
-          </pre><p>Now you can install the users</p><pre class="screen"><strong class="userinput"><code>sudo niutil -create / /groups/web
+they  are not).To list taken uids and gids:</p><pre class="screen"><b class="userinput"><tt>nireport / /groups name gid | grep &quot;[0123456789][0123456789]&quot;
+nireport / /users name uid | grep &quot;[0123456789][0123456789]&quot;</tt></b>
+          </pre><p>Now you can install the users</p><pre class="screen"><b class="userinput"><tt>sudo niutil -create / /groups/web
 sudo niutil -createprop / /groups/web gid <span class="replaceable"><span class="replaceable">201</span></span>
 sudo niutil -create / /users/postgres
 sudo niutil -createprop / /users/postgres gid <span class="replaceable"><span class="replaceable">201</span></span>
@@ -92,46 +93,46 @@
 sudo niutil -createprop / /users/<span class="replaceable"><span class="replaceable">$OPENACS_SERVICE_NAME</span></span> uid <span class="replaceable"><span class="replaceable">201</span></span>
 mkdir -p /usr/local/pgsql
 chown -R postgres:web /usr/local/pgsql /usr/local/src/postgresql-7.4.7
-chmod 750 /usr/local/pgsql</code></strong></pre></li><li><p><b>FreeBSD users:�</b> need to add more parameters.
-          </p><pre class="screen">[root src]# <strong class="userinput"><code>mkdir -p /usr/local/pgsql</code></strong>
-[root src]# <strong class="userinput"><code>pw groupadd -n web</code></strong>
-[root src]# <strong class="userinput"><code>pw useradd -n postgres -g web -d /usr/local/pgsql -s /bin/bash</code></strong>
-[root src]# <strong class="userinput"><code>chown -R postgres:web /usr/local/pgsql /usr/local/src/postgresql-7.4.7</code></strong>
-[root src]# <strong class="userinput"><code>chmod -R 750 /usr/local/pgsql</code></strong>
+chmod 750 /usr/local/pgsql</tt></b></pre></li><li><p><b>FreeBSD users:�</b> need to add more parameters.
+          </p><pre class="screen">[root src]# <b class="userinput"><tt>mkdir -p /usr/local/pgsql</tt></b>
+[root src]# <b class="userinput"><tt>pw groupadd -n web</tt></b>
+[root src]# <b class="userinput"><tt>pw useradd -n postgres -g web -d /usr/local/pgsql -s /bin/bash</tt></b>
+[root src]# <b class="userinput"><tt>chown -R postgres:web /usr/local/pgsql /usr/local/src/postgresql-7.4.7</tt></b>
+[root src]# <b class="userinput"><tt>chmod -R 750 /usr/local/pgsql</tt></b>
 [root src]#
 <span class="action"><span class="action">mkdir -p /usr/local/pgsql
 pw groupadd -n web
 pw useradd -n postgres -g web -d /usr/local/pgsql -s /bin/bash
 chown -R postgres:web /usr/local/pgsql /usr/local/src/postgresql-7.4.7
 chmod -R 750 /usr/local/pgsql</span></span></pre></li></ul></div></li><li><a name="install-postgres-env"></a><p><b>Set up postgres's environment variables.�</b>They are necessary for the executable to find its supporting
-	libraries.  Put the following lines into the postgres user's environment.</p><pre class="screen">[root src]# <strong class="userinput"><code>su - postgres</code></strong>
-[postgres ~] <strong class="userinput"><code>emacs ~postgres/.bashrc</code></strong></pre><p>Paste this line into <code class="computeroutput">.bash_profile</code>:</p><pre class="programlisting">source $HOME/.bashrc</pre><p>Paste these lines into <code class="computeroutput">.bashrc</code>:</p><pre class="programlisting">export PATH=/usr/local/bin/:$PATH:/usr/local/pgsql/bin
+	libraries.  Put the following lines into the postgres user's environment.</p><pre class="screen">[root src]# <b class="userinput"><tt>su - postgres</tt></b>
+[postgres ~] <b class="userinput"><tt>emacs ~postgres/.bashrc</tt></b></pre><p>Paste this line into <tt class="computeroutput">.bash_profile</tt>:</p><pre class="programlisting">source $HOME/.bashrc</pre><p>Paste these lines into <tt class="computeroutput">.bashrc</tt>:</p><pre class="programlisting">export PATH=/usr/local/bin/:$PATH:/usr/local/pgsql/bin
 export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/pgsql/lib</pre><p>Test this by logging in as
-	<code class="computeroutput">postgres</code> and checking the
-	paths; you should see <code class="computeroutput">/usr/local/pgsql/bin</code> somewhere in the output (the total output is system-dependent so yours may vary)</p><pre class="screen">[root src]# <strong class="userinput"><code>su - postgres</code></strong>
-[postgres pgsql]$ <strong class="userinput"><code>env | grep PATH</code></strong>
+	<tt class="computeroutput">postgres</tt> and checking the
+	paths; you should see <tt class="computeroutput">/usr/local/pgsql/bin</tt> somewhere in the output (the total output is system-dependent so yours may vary)</p><pre class="screen">[root src]# <b class="userinput"><tt>su - postgres</tt></b>
+[postgres pgsql]$ <b class="userinput"><tt>env | grep PATH</tt></b>
 LD_LIBRARY_PATH=:/usr/local/pgsql/lib
 PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin:/usr/bin/X11:/usr/X11R6/bin:/root/bin:/usr/local/pgsql/bin:/usr/local/pgsql/bin
-[postgres pgsql]$ <strong class="userinput"><code>exit</code></strong>
+[postgres pgsql]$ <b class="userinput"><tt>exit</tt></b>
 </pre><p>Don't continue unless you see correct output from
-      <code class="computeroutput">env | grep PATH</code></p></li><li><a name="install-postgres-compile"></a><p><b>Compile and install PostgreSQL.�</b>
-	  Change to the postgres user and run <code class="computeroutput">./configure</code> to set the compilation options automatically. This is the point at which you can
-	  configure PostgreSQL in various ways. For example, if you are installing on "OS X" add the flags <code class="computeroutput"> --with-includes=/sw/include/ --with-libraries=/sw/lib</code>. If you want to see what the other possibilities are, run <code class="computeroutput">./configure --help</code>.
-	</p><p>On debian woody (stable, 3.0), do <code class="computeroutput">./configure --without-readline --without-zlib</code>.</p><pre class="screen">[root src]# <strong class="userinput"><code>su - postgres</code></strong>
-[postgres pgsql]$<strong class="userinput"><code> cd /usr/local/src/postgresql-7.4.7</code></strong>
-[postgres postgresql-7.4.7]$ <strong class="userinput"><code>./configure</code></strong>
+      <tt class="computeroutput">env | grep PATH</tt></p></li><li><a name="install-postgres-compile"></a><p><b>Compile and install PostgreSQL.�</b>
+	  Change to the postgres user and run <tt class="computeroutput">./configure</tt> to set the compilation options automatically. This is the point at which you can
+	  configure PostgreSQL in various ways. For example, if you are installing on &quot;OS X&quot; add the flags <tt class="computeroutput"> --with-includes=/sw/include/ --with-libraries=/sw/lib</tt>. If you want to see what the other possibilities are, run <tt class="computeroutput">./configure --help</tt>.
+	</p><p>On debian woody (stable, 3.0), do <tt class="computeroutput">./configure --without-readline --without-zlib</tt>.</p><pre class="screen">[root src]# <b class="userinput"><tt>su - postgres</tt></b>
+[postgres pgsql]$<b class="userinput"><tt> cd /usr/local/src/postgresql-7.4.7</tt></b>
+[postgres postgresql-7.4.7]$ <b class="userinput"><tt>./configure</tt></b>
 creating cache ./config.cache
 checking host system type... i686-pc-linux-gnu
 (many lines omitted&gt;
 linking ./src/makefiles/Makefile.linux to src/Makefile.port
 linking ./src/backend/port/tas/dummy.s to src/backend/port/tas.s
-[postgres postgresql-7.4.7]$ <strong class="userinput"><code>make all</code></strong>
+[postgres postgresql-7.4.7]$ <b class="userinput"><tt>make all</tt></b>
 make -C doc all
 make[1]: Entering directory `/usr/local/src/postgresql-7.4.7/doc'
 (many lines omitted)
 make[1]: Leaving directory `/usr/local/src/postgresql-7.4.7/src'
 All of PostgreSQL successfully made. Ready to install.
-[postgres postgresql-7.4.7]$ <strong class="userinput"><code>make install</code></strong>
+[postgres postgresql-7.4.7]$ <b class="userinput"><tt>make install</tt></b>
 make -C doc install
 make[1]: Entering directory `/usr/local/src/postgresql-7.4.7/doc'
 (many lines omitted)
@@ -142,31 +143,29 @@
 ./configure 
 make all
 make install</span></span></pre></li><li><a name="install-postgres-startup"></a><p><b>Start PostgreSQL.�</b>
-	  The <code class="computeroutput">initdb</code> command initializes the
-	  database. <code class="computeroutput">pg_ctl</code> is used to start up
+	  The <tt class="computeroutput">initdb</tt> command initializes the
+	  database. <tt class="computeroutput">pg_ctl</tt> is used to start up
 	  PostgreSQL. If PostgreSQL is unable to allocate enough memory, see section 11
           Tuning PostgreSQL (below).
-	</p><pre class="screen">[postgres postgresql-7.4.7]$ <strong class="userinput"><code>/usr/local/pgsql/bin/initdb -D /usr/local/pgsql/data</code></strong>
-The files belonging to this database system will be owned by user "postgres".
+	</p><pre class="screen">[postgres postgresql-7.4.7]$ <b class="userinput"><tt>/usr/local/pgsql/bin/initdb -D /usr/local/pgsql/data</tt></b>
+The files belonging to this database system will be owned by user &quot;postgres&quot;.
 This user must also own the server process.
 (17 lines omitted)
 or
     /usr/local/pgsql/bin/pg_ctl -D /usr/local/pgsql/data -l logfile start
-[postgres postgresql-7.4.7]$ <strong class="userinput"><code>/usr/local/pgsql/bin/pg_ctl -D /usr/local/pgsql/data -l /usr/local/pgsql/data/server.log start</code></strong>
+[postgres postgresql-7.4.7]$ <b class="userinput"><tt>/usr/local/pgsql/bin/pg_ctl -D /usr/local/pgsql/data -l /usr/local/pgsql/data/server.log start</tt></b>
 postmaster successfully started
 [postgres postgresql-7.4.7]$
 <span class="action"><span class="action">/usr/local/pgsql/bin/initdb -D /usr/local/pgsql/data
 /usr/local/pgsql/bin/pg_ctl -D /usr/local/pgsql/data -l /usr/local/pgsql/data/server.log start</span></span></pre><p>
 	  PostgreSQL errors will be logged in
-	  <code class="computeroutput">/usr/local/pgsql/data/server.log</code>
+	  <tt class="computeroutput">/usr/local/pgsql/data/server.log</tt>
 	</p></li><li><a name="install-plpgsql"></a><p><b>Install Pl/pgSQL.�</b>Set up plpgsq and allow your user to have
 	  access. Plpgsql is a PL/SQL-like language.  We add it to
 	  template1, which is the template from which all new
 	  databases are created.  We can verify that it was created
-	  with the createlang command in list mode.</p>
-	  <p><a href="http://openacs.org/xowiki/en/How_to_install_in_Postgres_8%2e1%2ex">Additionals to install in Postgres 8.1.x</a></p>
-<pre class="screen">[postgres postgresql-7.4.7]$ <strong class="userinput"><code>createlang plpgsql template1</code></strong>
-[postgres pgsql]$ <strong class="userinput"><code>createlang -l template1</code></strong>
+	  with the createlang command in list mode.</p><pre class="screen">[postgres postgresql-7.4.7]$ <b class="userinput"><tt>createlang plpgsql template1</tt></b>
+[postgres pgsql]$ <b class="userinput"><tt>createlang -l template1</tt></b>
 Procedural languages
   Name   | Trusted?
 ---------+----------
@@ -176,9 +175,9 @@
 [postgres pgsql-7.4.7]$
 <span class="action"><span class="action">createlang plpgsql template1
 createlang -l template1</span></span></pre></li><li><a name="install-postgres-test"></a><p><b>Test PostgreSQL (OPTIONAL).�</b>Create a database and try some simple commands. The output should be as shown.
-	</p><pre class="screen">[postgres pgsql]$ <strong class="userinput"><code>createdb mytestdb</code></strong>
+	</p><pre class="screen">[postgres pgsql]$ <b class="userinput"><tt>createdb mytestdb</tt></b>
 CREATE DATABASE
-[postgres pgsql]$ <strong class="userinput"><code>psql mytestdb</code></strong>
+[postgres pgsql]$ <b class="userinput"><tt>psql mytestdb</tt></b>
 Welcome to psql, the PostgreSQL interactive terminal.
 
 Type:  \copyright for distribution terms
@@ -187,24 +186,24 @@
        \g or terminate with semicolon to execute query
        \q to quit
 
-mytestdb=# <strong class="userinput"><code>select current_timestamp;</code></strong>
+mytestdb=# <b class="userinput"><tt>select current_timestamp;</tt></b>
           timestamptz
 -------------------------------
  2003-03-07 22:18:29.185413-08
 (1 row)
 
-mytestdb=# <strong class="userinput"><code>create function test1() returns integer as 'begin return 1; end;' language 'plpgsql';</code></strong>
+mytestdb=# <b class="userinput"><tt>create function test1() returns integer as 'begin return 1; end;' language 'plpgsql';</tt></b>
 CREATE
-mytestdb=#<strong class="userinput"><code> select test1();</code></strong>
+mytestdb=#<b class="userinput"><tt> select test1();</tt></b>
  test1
 -------
      1
 (1 row)
 
-mytestdb=# <strong class="userinput"><code>\q</code></strong>
-[postgres pgsql]$<strong class="userinput"><code> dropdb mytestdb</code></strong>
+mytestdb=# <b class="userinput"><tt>\q</tt></b>
+[postgres pgsql]$<b class="userinput"><tt> dropdb mytestdb</tt></b>
 DROP DATABASE
-[postgres pgsql]$ <strong class="userinput"><code>exit</code></strong>
+[postgres pgsql]$ <b class="userinput"><tt>exit</tt></b>
 logout
 
 [root src]#</pre></li><li><p><a name="install-postgres-startonboot"></a>Set PostgreSQL to start on boot.  First, we copy the
@@ -215,42 +214,42 @@
         changes runlevels, postgresql goes to the appropriate
         state. Red Hat and Debian and SuSE each work a little
         differently.  If you haven't <a href="openacs.html#install-from-tarball" title="Installation Option 2: Install from tarball"> untarred the OpenACS tarball</a>, you will need to do so now to access the postgresql.txt file.
-	</p><div class="itemizedlist"><ul type="circle"><li><p>Red Hat RPM:</p><p>The init script is already installed; just turn it on for the appropriate run levels.</p><pre class="screen">[root root]# <strong class="userinput"><code>chkconfig --level 345 postgresql on</code></strong>
-[root root]# </pre></li><li><p>Red Hat from source:</p><pre class="screen">[root src]# <strong class="userinput"><code>cp /var/tmp/openacs-5.2.3rc1/packages/acs-core-docs/www/files/postgresql.txt /etc/init.d/postgresql</code></strong>
-[root src]# <strong class="userinput"><code>chown root.root /etc/rc.d/init.d/postgresql</code></strong>
-[root src]# <strong class="userinput"><code>chmod 755 /etc/rc.d/init.d/postgresql</code></strong>
+	</p><div class="itemizedlist"><ul type="circle"><li><p>Red Hat RPM:</p><p>The init script is already installed; just turn it on for the appropriate run levels.</p><pre class="screen">[root root]# <b class="userinput"><tt>chkconfig --level 345 postgresql on</tt></b>
+[root root]# </pre></li><li><p>Red Hat from source:</p><pre class="screen">[root src]# <b class="userinput"><tt>cp /var/tmp/openacs-5.4.0/packages/acs-core-docs/www/files/postgresql.txt /etc/init.d/postgresql</tt></b>
+[root src]# <b class="userinput"><tt>chown root.root /etc/rc.d/init.d/postgresql</tt></b>
+[root src]# <b class="userinput"><tt>chmod 755 /etc/rc.d/init.d/postgresql</tt></b>
 [root src]# 
-<span class="action"><span class="action">cp /var/tmp/openacs-5.2.3rc1/packages/acs-core-docs/www/files/postgresql.txt /etc/init.d/postgresql
+<span class="action"><span class="action">cp /var/tmp/openacs-5.4.0/packages/acs-core-docs/www/files/postgresql.txt /etc/init.d/postgresql
 chown root.root /etc/rc.d/init.d/postgresql
-chmod 755 /etc/rc.d/init.d/postgresql</span></span></pre><p>Test the script.</p><pre class="screen">[root root]# <strong class="userinput"><code>service postgresql stop</code></strong>
+chmod 755 /etc/rc.d/init.d/postgresql</span></span></pre><p>Test the script.</p><pre class="screen">[root root]# <b class="userinput"><tt>service postgresql stop</tt></b>
 Stopping PostgreSQL: ok
 [root root]# </pre><p>If PostgreSQL successfully stopped, then use the following
 		  command to make sure that the script is run appropriately at boot
 		  and shutdown.  And turn it back on because we'll use
 		  it later.
 
-		</p><pre class="screen">[root root]# <strong class="userinput"><code>chkconfig --add postgresql</code></strong>
-[root root]# <strong class="userinput"><code>chkconfig --level 345 postgresql on</code></strong>
-[root root]# <strong class="userinput"><code>chkconfig --list postgresql</code></strong>
+		</p><pre class="screen">[root root]# <b class="userinput"><tt>chkconfig --add postgresql</tt></b>
+[root root]# <b class="userinput"><tt>chkconfig --level 345 postgresql on</tt></b>
+[root root]# <b class="userinput"><tt>chkconfig --list postgresql</tt></b>
 postgresql      0:off   1:off   2:on    3:on    4:on    5:on    6:off
-[root root]# <strong class="userinput"><code>service postgresql start</code></strong>
+[root root]# <b class="userinput"><tt>service postgresql start</tt></b>
 Starting PostgreSQL: ok
 [root root]#
 <span class="action"><span class="action">chkconfig --add postgresql
 chkconfig --level 345 postgresql on
 chkconfig --list postgresql
-service postgresql start</span></span></pre></li><li><p>Debian:</p><pre class="screen">[root ~]# <strong class="userinput"><code>cp /var/tmp/packages/acs-core-docs/www/files/postgresql.txt /etc/init.d/postgresql</code></strong>
-[root ~]# <strong class="userinput"><code>chown root.root /etc/init.d/postgresql</code></strong>
-[root ~]# <strong class="userinput"><code>chmod 755 /etc/init.d/postgresql</code></strong>
+service postgresql start</span></span></pre></li><li><p>Debian:</p><pre class="screen">[root ~]# <b class="userinput"><tt>cp /var/tmp/packages/acs-core-docs/www/files/postgresql.txt /etc/init.d/postgresql</tt></b>
+[root ~]# <b class="userinput"><tt>chown root.root /etc/init.d/postgresql</tt></b>
+[root ~]# <b class="userinput"><tt>chmod 755 /etc/init.d/postgresql</tt></b>
 [root ~]# <span class="action"><span class="action">
-cp /var/tmp/openacs-5.2.3rc1/packages/acs-core-docs/www/files/postgresql.txt /etc/init.d/postgresql
+cp /var/tmp/openacs-5.4.0/packages/acs-core-docs/www/files/postgresql.txt /etc/init.d/postgresql
 chown root.root /etc/init.d/postgresql
-chmod 755 /etc/init.d/postgresql</span></span></pre><p>Test the script</p><pre class="screen">[root ~]# <strong class="userinput"><code>/etc/init.d/postgresql stop</code></strong>
+chmod 755 /etc/init.d/postgresql</span></span></pre><p>Test the script</p><pre class="screen">[root ~]# <b class="userinput"><tt>/etc/init.d/postgresql stop</tt></b>
 Stopping PostgreSQL: ok
 [root ~]# </pre><p>If PostgreSQL successfully stopped, then use the following
 		  command to make sure that the script is run
 		  appropriately at boot and shutdown.</p><pre class="screen">
-[root ~]# <strong class="userinput"><code>update-rc.d postgresql defaults</code></strong>
+[root ~]# <b class="userinput"><tt>update-rc.d postgresql defaults</tt></b>
  Adding system startup for /etc/init.d/postgresql ...
    /etc/rc0.d/K20postgresql -&gt; ../init.d/postgresql
    /etc/rc1.d/K20postgresql -&gt; ../init.d/postgresql
@@ -259,73 +258,73 @@
    /etc/rc3.d/S20postgresql -&gt; ../init.d/postgresql
    /etc/rc4.d/S20postgresql -&gt; ../init.d/postgresql
    /etc/rc5.d/S20postgresql -&gt; ../init.d/postgresql
-[root ~]# <strong class="userinput"><code>/etc/init.d/postgresql start</code></strong>
+[root ~]# <b class="userinput"><tt>/etc/init.d/postgresql start</tt></b>
 Starting PostgreSQL: ok
-[root ~]#</pre></li><li><p>FreeBSD:</p><pre class="screen">[root ~]# <strong class="userinput"><code>cp /tmp/openacs-5.2.3rc1/packages/acs-core-docs/www/files/postgresql.txt /usr/local/etc/rc.d/postgresql.sh</code></strong>
-[root ~]# <strong class="userinput"><code>chown root:wheel /usr/local/etc/rc.d/postgresql.sh</code></strong>
-[root ~]# <strong class="userinput"><code>chmod 755 /usr/local/etc/rc.d/postgresql.sh</code></strong>
+[root ~]#</pre></li><li><p>FreeBSD:</p><pre class="screen">[root ~]# <b class="userinput"><tt>cp /tmp/openacs-5.4.0/packages/acs-core-docs/www/files/postgresql.txt /usr/local/etc/rc.d/postgresql.sh</tt></b>
+[root ~]# <b class="userinput"><tt>chown root:wheel /usr/local/etc/rc.d/postgresql.sh</tt></b>
+[root ~]# <b class="userinput"><tt>chmod 755 /usr/local/etc/rc.d/postgresql.sh</tt></b>
 [root ~]# <span class="action"><span class="action">
-cp /tmp/openacs-5.2.3rc1/packages/acs-core-docs/www/files/postgresql.txt /usr/local/etc/rc.d/postgresql.sh
+cp /tmp/openacs-5.4.0/packages/acs-core-docs/www/files/postgresql.txt /usr/local/etc/rc.d/postgresql.sh
 chown root:wheel /usr/local/etc/rc.d/postgresql.sh
-chmod 755 /usr/local/etc/rc.d/postgresql.sh</span></span></pre><p>Test the script</p><pre class="screen">[root ~]# <strong class="userinput"><code>/usr/local/etc/rc.d/postgresql.sh stop</code></strong>
+chmod 755 /usr/local/etc/rc.d/postgresql.sh</span></span></pre><p>Test the script</p><pre class="screen">[root ~]# <b class="userinput"><tt>/usr/local/etc/rc.d/postgresql.sh stop</tt></b>
 Stopping PostgreSQL: ok
 [root ~]# </pre><p>If PostgreSQL successfully stopped, then turn it back on because we'll use
-		  it later.</p><pre class="screen">[root root]# <strong class="userinput"><code>/usr/local/etc/rc.d/postgresql.sh start</code></strong>
+		  it later.</p><pre class="screen">[root root]# <b class="userinput"><tt>/usr/local/etc/rc.d/postgresql.sh start</tt></b>
 Starting PostgreSQL: ok
 [root root]#
 <span class="action"><span class="action">/usr/local/etc/rc.d/postgresql.sh start</span></span></pre></li><li><p>SuSE:</p><div class="note" style="margin-left: 0.5in; margin-right: 0.5in;"><h3 class="title">Note</h3><p>
 
 			I have received reports that SuSE 8.0 is different from
             previous versions. Instead of installing the boot scripts in
-            <code class="computeroutput">/etc/rc.d/init.d/</code>, they should
-            be placed in <code class="computeroutput">/etc/init.d/</code>. If
+            <tt class="computeroutput">/etc/rc.d/init.d/</tt>, they should
+            be placed in <tt class="computeroutput">/etc/init.d/</tt>. If
             you're using SuSE 8.0, delete the
-            <code class="computeroutput">rc.d/</code> part in each of the
+            <tt class="computeroutput">rc.d/</tt> part in each of the
             following commands.
 
-          </p></div><pre class="screen">[root ~]# <strong class="userinput"><code>cp /var/tmp/openacs-5.2.3rc1/packages/acs-core-docs/www/files/postgresql.txt /etc/rc.d/init.d/postgresql</code></strong>
-[root ~]# <strong class="userinput"><code>chown root.root /etc/rc.d/init.d/postgresql</code></strong>
-[root ~]# <strong class="userinput"><code>chmod 755 /etc/rc.d/init.d/postgresql</code></strong></pre><p>
+          </p></div><pre class="screen">[root ~]# <b class="userinput"><tt>cp /var/tmp/openacs-5.4.0/packages/acs-core-docs/www/files/postgresql.txt /etc/rc.d/init.d/postgresql</tt></b>
+[root ~]# <b class="userinput"><tt>chown root.root /etc/rc.d/init.d/postgresql</tt></b>
+[root ~]# <b class="userinput"><tt>chmod 755 /etc/rc.d/init.d/postgresql</tt></b></pre><p>
 
           Test the script.
 
-        </p><pre class="screen">[root ~]# <strong class="userinput"><code>/etc/rc.d/init.d/postgresql stop</code></strong>
+        </p><pre class="screen">[root ~]# <b class="userinput"><tt>/etc/rc.d/init.d/postgresql stop</tt></b>
 Stopping PostgreSQL: ok</pre><p>
 
           If PostgreSQL successfully stopped, then use the following
           command to make sure that the script is run appropriately at boot
           and shutdown.
 
-        </p><pre class="screen">[root ~]# <strong class="userinput"><code>cd /etc/rc.d/init.d</code></strong>
-root:/etc/rc.d/init.d# <strong class="userinput"><code>ln -s /etc/rc.d/init.d/postgresql K20postgresql</code></strong>
-root:/etc/rc.d/init.d# <strong class="userinput"><code>ln -s /etc/rc.d/init.d/postgresql S20postgresql  </code></strong>
-root:/etc/rc.d/init.d# <strong class="userinput"><code>cp K20postgresql rc2.d</code></strong>
-root:/etc/rc.d/init.d# <strong class="userinput"><code>cp S20postgresql rc2.d</code></strong>
-root:/etc/rc.d/init.d# <strong class="userinput"><code>cp K20postgresql rc3.d</code></strong>
-root:/etc/rc.d/init.d# <strong class="userinput"><code>cp S20postgresql rc3.d</code></strong>
-root:/etc/rc.d/init.d# <strong class="userinput"><code>cp K20postgresql rc4.d</code></strong>
-root:/etc/rc.d/init.d# <strong class="userinput"><code>cp S20postgresql rc4.d </code></strong>
-root:/etc/rc.d/init.d# <strong class="userinput"><code>cp K20postgresql rc5.d</code></strong>
-root:/etc/rc.d/init.d# <strong class="userinput"><code>cp S20postgresql rc5.d</code></strong>
-root:/etc/rc.d/init.d# <strong class="userinput"><code>rm K20postgresql</code></strong>
-root:/etc/rc.d/init.d# <strong class="userinput"><code>rm S20postgresql</code></strong>
+        </p><pre class="screen">[root ~]# <b class="userinput"><tt>cd /etc/rc.d/init.d</tt></b>
+root:/etc/rc.d/init.d# <b class="userinput"><tt>ln -s /etc/rc.d/init.d/postgresql K20postgresql</tt></b>
+root:/etc/rc.d/init.d# <b class="userinput"><tt>ln -s /etc/rc.d/init.d/postgresql S20postgresql  </tt></b>
+root:/etc/rc.d/init.d# <b class="userinput"><tt>cp K20postgresql rc2.d</tt></b>
+root:/etc/rc.d/init.d# <b class="userinput"><tt>cp S20postgresql rc2.d</tt></b>
+root:/etc/rc.d/init.d# <b class="userinput"><tt>cp K20postgresql rc3.d</tt></b>
+root:/etc/rc.d/init.d# <b class="userinput"><tt>cp S20postgresql rc3.d</tt></b>
+root:/etc/rc.d/init.d# <b class="userinput"><tt>cp K20postgresql rc4.d</tt></b>
+root:/etc/rc.d/init.d# <b class="userinput"><tt>cp S20postgresql rc4.d </tt></b>
+root:/etc/rc.d/init.d# <b class="userinput"><tt>cp K20postgresql rc5.d</tt></b>
+root:/etc/rc.d/init.d# <b class="userinput"><tt>cp S20postgresql rc5.d</tt></b>
+root:/etc/rc.d/init.d# <b class="userinput"><tt>rm K20postgresql</tt></b>
+root:/etc/rc.d/init.d# <b class="userinput"><tt>rm S20postgresql</tt></b>
 root:/etc/rc.d/init.d# </pre><p>
 
           Test configuration.
 
-        </p><pre class="screen">root:/etc/rc.d/init.d # <strong class="userinput"><code>cd</code></strong>
-root:~ # <strong class="userinput"><code>/etc/rc.d/init.d/rc2.d/S20postgresql start</code></strong>
+        </p><pre class="screen">root:/etc/rc.d/init.d # <b class="userinput"><tt>cd</tt></b>
+root:~ # <b class="userinput"><tt>/etc/rc.d/init.d/rc2.d/S20postgresql start</tt></b>
 Starting PostgreSQL: ok
-root:~ # </pre></li><li><p>Mac OS X 10.3:</p><div class="orderedlist"><ol type="a"><li><p>Install the startup script:</p><pre class="screen"><strong class="userinput"><code>cd /System/Library/StartupItems/</code></strong>
-<strong class="userinput"><code>tar xfz /var/lib/aolserver/<span class="replaceable"><span class="replaceable">$OPENACS_SERVICE_NAME</span></span>/packages/acs-core-docs/www/files/osx-postgres-startup-item.tgz</code></strong>
-</pre></li></ol></div></li><li><p>Mac OS X 10.4 can use Launchd:</p><div class="orderedlist"><ol type="a"><li><p>Install the startup script:</p><pre class="screen"><strong class="userinput"><code>cd /Library/LaunchDaemons</code></strong>
-<strong class="userinput"><code>cp
+root:~ # </pre></li><li><p>Mac OS X 10.3:</p><div class="orderedlist"><ol type="a"><li><p>Install the startup script:</p><pre class="screen"><b class="userinput"><tt>cd /System/Library/StartupItems/</tt></b>
+<b class="userinput"><tt>tar xfz /var/lib/aolserver/<span class="replaceable"><span class="replaceable">$OPENACS_SERVICE_NAME</span></span>/packages/acs-core-docs/www/files/osx-postgres-startup-item.tgz</tt></b>
+</pre></li></ol></div></li><li><p>Mac OS X 10.4 can use Launchd:</p><div class="orderedlist"><ol type="a"><li><p>Install the startup script:</p><pre class="screen"><b class="userinput"><tt>cd /Library/LaunchDaemons</tt></b>
+<b class="userinput"><tt>cp
 /var/lib/aolserver/<span class="replaceable"><span class="replaceable">$OPENACS_SERVICE_NAME</span></span>/packages/acs-core-docs/www/files/osx-postgres-launchd-item.txt
-org.postgresql.PostgreSQL.plist</code></strong>
+org.postgresql.PostgreSQL.plist</tt></b>
 </pre><p>If postgres does not start automatically on reboot, see what
     error you get when manually starting it with:</p><pre class="screen">
-$ <strong class="userinput"><code>sudo launchctl load /Library/LaunchDaemons/org.postgresql.PostgreSQL.plist</code></strong>
-$ <strong class="userinput"><code>sudo launchctl start org.postgresql.PostgreSQL</code></strong></pre></li></ol></div></li></ul></div><p>
+$ <b class="userinput"><tt>sudo launchctl load /Library/LaunchDaemons/org.postgresql.PostgreSQL.plist</tt></b>
+$ <b class="userinput"><tt>sudo launchctl start org.postgresql.PostgreSQL</tt></b></pre></li></ol></div></li></ul></div><p>
 
       From now on, PostgreSQL should start automatically each time you boot
       up and it should shutdown gracefully each time you shut down. (Note:
@@ -335,11 +334,11 @@
       little. This usually isn't a problem as Red Hat defaults to runlevel 3)
 
     </p></li><li><p><a name="postgres-tune"></a><b>Tune postgres.  (OPTIONAL).�</b>The default values for PostgreSQL are very conservative; we can safely change some of them and improve performance.</p><div class="orderedlist"><ol type="a"><li><p>Change the kernel parameter for maximum shared memory
-          segment size to 128Mb:</p><pre class="screen">[root root]# <strong class="userinput"><code>echo 134217728 &gt;/proc/sys/kernel/shmmax</code></strong>
+          segment size to 128Mb:</p><pre class="screen">[root root]# <b class="userinput"><tt>echo 134217728 &gt;/proc/sys/kernel/shmmax</tt></b>
 [root root]#</pre><p>Make that change permanent by editing
-          <code class="computeroutput">/etc/sysctl.conf</code> to
+          <tt class="computeroutput">/etc/sysctl.conf</tt> to
           add these lines at the end:</p><pre class="programlisting"># increase shared memory limit for postgres
-kernel.shmmax = 134217728</pre></li><li><p>Edit the PostgreSQL config file, <code class="computeroutput">/usr/local/pgsql/data/postgresql.conf</code>, to use more memory.  These values should improve performance in most cases.  (<a href="http://openacs.org/forums/message-view?message_id=94071" target="_top">more information</a>)</p><pre class="programlisting">#       Shared Memory Size
+kernel.shmmax = 134217728</pre></li><li><p>Edit the PostgreSQL config file, <tt class="computeroutput">/usr/local/pgsql/data/postgresql.conf</tt>, to use more memory.  These values should improve performance in most cases.  (<a href="http://openacs.org/forums/message-view?message_id=94071" target="_top">more information</a>)</p><pre class="programlisting">#       Shared Memory Size
 #
 shared_buffers = 15200      # 2*max_connections, min 16
 
@@ -351,18 +350,18 @@
 #       Write-ahead log (WAL)
 #
 checkpoint_segments = 3     # in logfile segments (16MB each), min 1
-</pre><p>Restart postgres (<code class="computeroutput">service postgresql
-          restart</code>) or
-          (<code class="computeroutput">/etc/init.d/postgres
-          restart</code>) so that the changes take effect.</p></li></ol></div><p>FreeBSD users: See <strong class="userinput"><code>man syctl</code></strong>, <strong class="userinput"><code>man 5 sysctl</code></strong>
-      and <strong class="userinput"><code>man 5 loader.conf</code></strong>.</p><p>Performance tuning resources:</p><div class="itemizedlist"><ul type="circle"><li><p>
+</pre><p>Restart postgres (<tt class="computeroutput">service postgresql
+          restart</tt>) or
+          (<tt class="computeroutput">/etc/init.d/postgres
+          restart</tt>) so that the changes take effect.</p></li></ol></div><p>FreeBSD users: See <b class="userinput"><tt>man syctl</tt></b>, <b class="userinput"><tt>man 5 sysctl</tt></b>
+      and <b class="userinput"><tt>man 5 loader.conf</tt></b>.</p><p>Performance tuning resources:</p><div class="itemizedlist"><ul type="circle"><li><p>
         <a href="http://www.postgresql.org/docs/7.4/interactive/kernel-resources.html" target="_top">Managing Kernel Resources</a>
         about PostgreSQL shared memory and semaphores with specific operating system notes.
         </p></li><li><p>
         <a href="http://developer.postgresql.org/docs/postgres/kernel-resources.html" target="_top">Managing Kernel Resources (development version)</a>
           This information may be experimental.
         </p></li><li><p>
-        <a href="http://www.varlena.com/varlena/GeneralBits/Tidbits/perf.html" target="_top">Tuning PostgreSQL for performance</a></p></li></ul></div></li></ol></div></li></ul></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="install-postgres-moreinfo"></a>more information about PostgreSQL</h3></div></div></div><div class="itemizedlist"><ul type="disc"><li><p>
+        <a href="http://www.varlena.com/varlena/GeneralBits/Tidbits/perf.html" target="_top">Tuning PostgreSQL for performance</a></p></li></ul></div></li></ol></div></li></ul></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="install-postgres-moreinfo"></a>more information about PostgreSQL</h3></div></div><div></div></div><div class="itemizedlist"><ul type="disc"><li><p>
 
           <a href="http://www.postgresql.org/idocs/" target="_top">Official PostgreSQL
           Docs</a>
Index: openacs-4/packages/acs-core-docs/www/profile-code.html
===================================================================
RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/profile-code.html,v
diff -u -r1.8 -r1.8.4.1
--- openacs-4/packages/acs-core-docs/www/profile-code.html	17 Jul 2006 05:38:32 -0000	1.8
+++ openacs-4/packages/acs-core-docs/www/profile-code.html	3 Feb 2008 12:07:40 -0000	1.8.4.1
@@ -1,4 +1,5 @@
-<html><head><meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"><title>Profile your code</title><meta name="generator" content="DocBook XSL Stylesheets V1.70.1"><link rel="home" href="index.html" title="OpenACS Core Documentation"><link rel="up" href="tutorial-advanced.html" title="Chapter�10.�Advanced Topics"><link rel="previous" href="tutorial-categories.html" title="Categories"><link rel="next" href="tutorial-distribute.html" title="Prepare the package for distribution."><link rel="stylesheet" href="openacs.css" type="text/css"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><a href="http://openacs.org"><img src="/doc/images/alex.jpg" border="0" alt="Alex logo"></a><table width="100%" summary="Navigation header" border="0"><tr><td width="20%" align="left"><a accesskey="p" href="tutorial-categories.html">Prev</a> </td><th width="60%" align="center">Chapter�10.�Advanced Topics</th><td width="20%" align="right"> <a accesskey="n" href="tutorial-distribute.html">Next</a></td></tr></table><hr></div><div class="sect1" lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="profile-code"></a>Profile your code</h2></div></div></div><div class="authorblurb"><p>by <a href="mailto:jade@rubick.com" target="_top">Jade Rubick</a></p>
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html><head><meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"><title>Profile your code</title><meta name="generator" content="DocBook XSL Stylesheets V1.60.1"><link rel="home" href="index.html" title="OpenACS Core Documentation"><link rel="up" href="tutorial-advanced.html" title="Chapter�10.�Advanced Topics"><link rel="previous" href="tutorial-categories.html" title="Categories"><link rel="next" href="tutorial-distribute.html" title="Prepare the package for distribution."><link rel="stylesheet" href="openacs.css" type="text/css"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><a href="http://openacs.org"><img src="/doc/images/alex.jpg" border="0" alt="Alex logo"></a><table width="100%" summary="Navigation header" border="0"><tr><td width="20%" align="left"><a accesskey="p" href="tutorial-categories.html">Prev</a> </td><th width="60%" align="center">Chapter�10.�Advanced Topics</th><td width="20%" align="right"> <a accesskey="n" href="tutorial-distribute.html">Next</a></td></tr></table><hr></div><div class="sect1" lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="profile-code"></a>Profile your code</h2></div></div><div></div></div><div class="authorblurb"><p>by <a href="mailto:jade@rubick.com" target="_top">Jade Rubick</a></p>
           OpenACS docs are written by the named authors, and may be edited
           by OpenACS documentation staff.
         </div><p>There are several facilities for profiling your code in
Index: openacs-4/packages/acs-core-docs/www/programming-with-aolserver.html
===================================================================
RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/programming-with-aolserver.html,v
diff -u -r1.42 -r1.42.4.1
--- openacs-4/packages/acs-core-docs/www/programming-with-aolserver.html	17 Jul 2006 05:38:32 -0000	1.42
+++ openacs-4/packages/acs-core-docs/www/programming-with-aolserver.html	3 Feb 2008 12:07:40 -0000	1.42.4.1
@@ -1,65 +1,66 @@
-<html><head><meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"><title>Programming with AOLserver</title><meta name="generator" content="DocBook XSL Stylesheets V1.70.1"><link rel="home" href="index.html" title="OpenACS Core Documentation"><link rel="up" href="dev-guide.html" title="Chapter�11.�Development Reference"><link rel="previous" href="object-identity.html" title="Object Identity"><link rel="next" href="form-builder.html" title="Using Form Builder: building html forms dynamically"><link rel="stylesheet" href="openacs.css" type="text/css"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><a href="http://openacs.org"><img src="/doc/images/alex.jpg" border="0" alt="Alex logo"></a><table width="100%" summary="Navigation header" border="0"><tr><td width="20%" align="left"><a accesskey="p" href="object-identity.html">Prev</a> </td><th width="60%" align="center">Chapter�11.�Development Reference</th><td width="20%" align="right"> <a accesskey="n" href="form-builder.html">Next</a></td></tr></table><hr></div><div class="sect1" lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="programming-with-aolserver"></a>Programming with AOLserver</h2></div></div></div><div class="authorblurb"><p>By Michael Yoon, Jon Salz and <a href="http://www.pinds.com/lars" target="_top">Lars Pind</a>.</p>
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html><head><meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"><title>Programming with AOLserver</title><meta name="generator" content="DocBook XSL Stylesheets V1.60.1"><link rel="home" href="index.html" title="OpenACS Core Documentation"><link rel="up" href="dev-guide.html" title="Chapter�11.�Development Reference"><link rel="previous" href="object-identity.html" title="Object Identity"><link rel="next" href="form-builder.html" title="Using Form Builder: building html forms dynamically"><link rel="stylesheet" href="openacs.css" type="text/css"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><a href="http://openacs.org"><img src="/doc/images/alex.jpg" border="0" alt="Alex logo"></a><table width="100%" summary="Navigation header" border="0"><tr><td width="20%" align="left"><a accesskey="p" href="object-identity.html">Prev</a> </td><th width="60%" align="center">Chapter�11.�Development Reference</th><td width="20%" align="right"> <a accesskey="n" href="form-builder.html">Next</a></td></tr></table><hr></div><div class="sect1" lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="programming-with-aolserver"></a>Programming with AOLserver</h2></div></div><div></div></div><div class="authorblurb"><p>By Michael Yoon, Jon Salz and <a href="http://www.pinds.com/lars" target="_top">Lars Pind</a>.</p>
           OpenACS docs are written by the named authors, and may be edited
           by OpenACS documentation staff.
-        </div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="programming-aolserver-global"></a>The <code class="computeroutput">global</code> command</h3></div></div></div><p>
+        </div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="programming-aolserver-global"></a>The <tt class="computeroutput">global</tt> command</h3></div></div><div></div></div><p>
 When using AOLserver, remember that there are effectively <span class="emphasis"><em>two</em></span> types
 of global namespace, not one: 
 </p><div class="orderedlist"><ol type="1"><li><p><span class="emphasis"><em>Server</em></span>-global: As you'd expect, there is
 only one server-global namespace per server, and variables set within it can
 be accessed by any Tcl code running subsequently, in any of the server's
-threads. To set/get server-global variables, use AOLserver 3's <a href="http://www.aolserver.com/docs/nsv.adp" target="_top"><code class="computeroutput">nsv</code> API</a>
-(which supersedes <code class="computeroutput">ns_share</code> from the pre-3.0 API). 
+threads. To set/get server-global variables, use AOLserver 3's <a href="http://www.aolserver.com/docs/nsv.adp" target="_top"><tt class="computeroutput">nsv</tt> API</a>
+(which supersedes <tt class="computeroutput">ns_share</tt> from the pre-3.0 API). 
 </p></li><li><p><span class="emphasis"><em>Script</em></span>-global: Each Tcl script (ADP, Tcl page,
 registered proc, filter, etc.) executing within an AOLserver thread has its
 own global namespace. Any variable set in the top level of a script is, by
 definition, script-global, meaning that it is accessible only by subsequent
 code in the same script and only for the duration of the current script
 execution.</p></li></ol></div><p>
-The Tcl built-in command <a href="http://aolserver.com/docs/tcl/tcl8.3/TclCmd/global.htm" target="_top"><code class="computeroutput">global</code></a>
+The Tcl built-in command <a href="http://aolserver.com/docs/tcl/tcl8.3/TclCmd/global.htm" target="_top"><tt class="computeroutput">global</tt></a>
 accesses script-global, <span class="emphasis"><em>not</em></span> server-global, variables from within a
 procedure. This distinction is important to understand in order to use
-<code class="computeroutput">global</code> correctly when programming AOLserver. 
+<tt class="computeroutput">global</tt> correctly when programming AOLserver. 
 </p><p>Also, AOLserver purges all script-global variables in a thread (i.e., Tcl
 interpreter) between HTTP requests. If it didn't, that would affect (and
 complicate) our use of script-global variables dramatically, which would then
 be better described as <span class="emphasis"><em>thread</em></span>-global variables. Given
-AOLserver's behaviour, however, "script-global" is a more
-appropriate term.</p></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="programming-aolserver-sched-procs"></a>Threads and Scheduled Procedures</h3></div></div></div><p>
-<code class="computeroutput">ns_schedule_proc</code> and <code class="computeroutput">ad_schedule_proc</code> each take a
-<code class="computeroutput">-thread</code> flag to cause a scheduled procedure to run
+AOLserver's behaviour, however, &quot;script-global&quot; is a more
+appropriate term.</p></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="programming-aolserver-sched-procs"></a>Threads and Scheduled Procedures</h3></div></div><div></div></div><p>
+<tt class="computeroutput">ns_schedule_proc</tt> and <tt class="computeroutput">ad_schedule_proc</tt> each take a
+<tt class="computeroutput">-thread</tt> flag to cause a scheduled procedure to run
 asychronously, in its own thread. It almost always seems like a good idea to
 specify this switch, but there's a problem. 
-</p><p>It turns out that whenever a task scheduled with <code class="computeroutput">ns_schedule_proc
--thread</code> or <code class="computeroutput">ad_schedule_proc -thread t</code> is run, AOLserver
+</p><p>It turns out that whenever a task scheduled with <tt class="computeroutput">ns_schedule_proc
+-thread</tt> or <tt class="computeroutput">ad_schedule_proc -thread t</tt> is run, AOLserver
 creates a brand new thread and a brand new interpreter, and reinitializes the
 procedure table (essentially, loads all procedures that were created during
 server initialization into the new interpreter). This happens <span class="emphasis"><em>every
 time</em></span> the task is executed - and it is a very expensive process that
 should not be taken lightly!</p><p>The moral: if you have a lightweight scheduled procedure
-which runs frequently, don't use the <code class="computeroutput">-thread</code>
+which runs frequently, don't use the <tt class="computeroutput">-thread</tt>
 switch.</p><div class="blockquote"><blockquote class="blockquote"><p><span class="emphasis"><em>Note also that thread is initialized with a copy of what was
 installed during server startup, so if the procedure table have changed since
 startup (e.g. using the <a href="apm-design.html" title="Package Manager Design">APM</a> watch
 facility), that will not be reflected in the scheduled
-thread.</em></span></p></blockquote></div></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="programming-aolserver-return"></a>Using <code class="computeroutput">return</code></h3></div></div></div><p>
-The <code class="computeroutput">return</code> command in Tcl returns control to the caller procedure.
+thread.</em></span></p></blockquote></div></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="programming-aolserver-return"></a>Using <tt class="computeroutput">return</tt></h3></div></div><div></div></div><p>
+The <tt class="computeroutput">return</tt> command in Tcl returns control to the caller procedure.
 This definition allows nested procedures to work properly. However, this
-definition also means that nested procedures cannot use <code class="computeroutput">return</code> to
+definition also means that nested procedures cannot use <tt class="computeroutput">return</tt> to
 end an entire thread. This situation is most common in exception conditions
 that can be triggered from inside a procedure e.g., a permission denied
 exception. At this point, the procedure that detects invalid permission wants
 to write an error message to the user, and completely abort execution of the
-caller thread. <code class="computeroutput">return</code> doesn't work, because the procedure may be
-nested several levels deep. We therefore use <a href="/api-doc/proc-view?proc=ad%5fscript%5fabort" target="_top"><code class="computeroutput">ad_script_abort</code></a>
-to abort the remainder of the thread. Note that using <code class="computeroutput">return</code> instead
-of <code class="computeroutput">ad_script_abort</code> may raise some security issues: an attacker could
+caller thread. <tt class="computeroutput">return</tt> doesn't work, because the procedure may be
+nested several levels deep. We therefore use <a href="/api-doc/proc-view?proc=ad%5fscript%5fabort" target="_top"><tt class="computeroutput">ad_script_abort</tt></a>
+to abort the remainder of the thread. Note that using <tt class="computeroutput">return</tt> instead
+of <tt class="computeroutput">ad_script_abort</tt> may raise some security issues: an attacker could
 call a page that performed some DML statement, pass in some arguments, and
 get a permission denied error -- but the DML statement would still be
-executed because the thread was not stopped. Note that <code class="computeroutput">return -code
-return</code> can be used in circumstances where the procedure will only be
+executed because the thread was not stopped. Note that <tt class="computeroutput">return -code
+return</tt> can be used in circumstances where the procedure will only be
 called from two levels deep. 
-</p></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="programming-aolserver-more-values"></a>Returning More Than One Value From a Function</h3></div></div></div><p>
-Many functions have a single return value. For instance, <a href="/api-doc/proc-view?proc=empty%5fstring%5fp" target="_top"><code class="computeroutput">empty_string_p</code></a>
+</p></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="programming-aolserver-more-values"></a>Returning More Than One Value From a Function</h3></div></div><div></div></div><p>
+Many functions have a single return value. For instance, <a href="/api-doc/proc-view?proc=empty%5fstring%5fp" target="_top"><tt class="computeroutput">empty_string_p</tt></a>
 returns a number: 1 or 0. Other functions need to return a composite value.
 For instance, consider a function that looks up a user's name and email
 address, given an ID. One way to implement this is to return a three-element
@@ -74,33 +75,33 @@
 </pre><p>AOLserver/Tcl generally has three mechanisms that we like, for returning
 more than one value from a function. When to use which depends on the
 circumstances.</p><p>Using Arrays and Pass-By-Value</p><p>
-The one we generally prefer is returning an <a href="http://aolserver.com/docs/tcl/tcl8.3/TclCmd/array.htm#M8" target="_top"><code class="computeroutput">array
-get</code></a>-formatted list. It has all the nice properties of
+The one we generally prefer is returning an <a href="http://aolserver.com/docs/tcl/tcl8.3/TclCmd/array.htm#M8" target="_top"><tt class="computeroutput">array
+get</tt></a>-formatted list. It has all the nice properties of
 pass-by-value, and it uses Tcl arrays, which have good native support. 
 </p><pre class="programlisting">
 ad_proc ad_get_user_info { user_id } {
     db_1row user_info { select first_names, last_name, email from users where user_id = :user_id }
     return [list \
-        name "$first_names $last_name" \
+        name &quot;$first_names $last_name&quot; \
     email $email \
-    namelink "&lt;a href=\"/shared/community-member?user_id=[ns_urlencode $user_id]\"&gt;$first_names $last_name&lt;/a&gt;" \
-    emaillink "&lt;a href=\"mailto:$email\"&gt;$email&lt;/a&gt;"]
+    namelink &quot;&lt;a href=\&quot;/shared/community-member?user_id=[ns_urlencode $user_id]\&quot;&gt;$first_names $last_name&lt;/a&gt;&quot; \
+    emaillink &quot;&lt;a href=\&quot;mailto:$email\&quot;&gt;$email&lt;/a&gt;&quot;]
 }
 
 array set user_info [ad_get_user_info $user_id]
 
-doc_body_append "$user_info(namelink) ($user_info(emaillink))"
+doc_body_append &quot;$user_info(namelink) ($user_info(emaillink))&quot;
 </pre><p>
 You could also have done this by using an array internally and using
-<code class="computeroutput">array get</code>: 
+<tt class="computeroutput">array get</tt>: 
 </p><pre class="programlisting">
 
 ad_proc ad_get_user_info { user_id } {
     db_1row user_info { select first_names, last_name, email from users where user_id = :user_id }
-    set user_info(name) "$first_names $last_name"
+    set user_info(name) &quot;$first_names $last_name&quot;
     set user_info(email) $email
-    set user_info(namelink) "&lt;a href=\"/shared/community-member?user_id=[ns_urlencode $user_id]\"&gt;$first_names $last_name&lt;/a&gt;"
-    set user_info(emaillink) "&lt;a href=\"mailto:$email\"&gt;$email&lt;/a&gt;"
+    set user_info(namelink) &quot;&lt;a href=\&quot;/shared/community-member?user_id=[ns_urlencode $user_id]\&quot;&gt;$first_names $last_name&lt;/a&gt;&quot;
+    set user_info(emaillink) &quot;&lt;a href=\&quot;mailto:$email\&quot;&gt;$email&lt;/a&gt;&quot;
     return [array get user_info]
 }
 
@@ -116,7 +117,7 @@
 milisecond. The time depends almost completely on the number of entries, and
 almost not at all on the size of the entries.</em></span></p></blockquote></div><p>
 You implement pass-by-reference in Tcl by taking the name of an array
-as an argument and <code class="computeroutput">upvar</code> it. 
+as an argument and <tt class="computeroutput">upvar</tt> it. 
 </p><pre class="programlisting">
 
 ad_proc ad_get_user_info { 
@@ -125,30 +126,30 @@
 } {
     upvar $array user_info
     db_1row user_info { select first_names, last_name, email from users where user_id = :user_id }
-    set user_info(name) "$first_names $last_name"
+    set user_info(name) &quot;$first_names $last_name&quot;
     set user_info(email) $email
-    set user_info(namelink) "&lt;a href=\"/shared/community-member?user_id=[ns_urlencode $user_id]\"&gt;$first_names $last_name&lt;/a&gt;"
-    set user_info(emaillink) "&lt;a href=\"mailto:$email\"&gt;$email&lt;/a&gt;"
+    set user_info(namelink) &quot;&lt;a href=\&quot;/shared/community-member?user_id=[ns_urlencode $user_id]\&quot;&gt;$first_names $last_name&lt;/a&gt;&quot;
+    set user_info(emaillink) &quot;&lt;a href=\&quot;mailto:$email\&quot;&gt;$email&lt;/a&gt;&quot;
 }
 
 ad_get_user_info -array user_info $user_id
 
-doc_body_append "$user_info(namelink) ($user_info(emaillink))"
+doc_body_append &quot;$user_info(namelink) ($user_info(emaillink))&quot;
 
 </pre><p>We prefer pass-by-value over pass-by-reference. Pass-by-reference makes
 the code harder to read and debug, because changing a value in one place has
 side effects in other places. Especially if have a chain of
-<code class="computeroutput">upvar</code>s through several layers of the call stack, you'll have
-a hard time debugging.</p><p>Multisets: Using <code class="computeroutput">ns_set</code>s and Pass-By-Reference</p><p>
+<tt class="computeroutput">upvar</tt>s through several layers of the call stack, you'll have
+a hard time debugging.</p><p>Multisets: Using <tt class="computeroutput">ns_set</tt>s and Pass-By-Reference</p><p>
 An array is a type of <span class="emphasis"><em>set</em></span>, which means you can't have multiple
 entries with the same key. Data structures that can have multiple entries for
 the same key are known as a <span class="emphasis"><em>multiset</em></span> or <span class="emphasis"><em>bag</em></span>. 
 </p><p>If your data can have multiple entries with the same key,
-you should use the AOLserver built-in <a href="http://www.aolserver.com/docs/tcldev/tapi-120.htm#197598" target="_top"><code class="computeroutput">
-ns_set</code></a>. You can also do a case-insensitive lookup on an
-<code class="computeroutput">ns_set</code>, something you can't easily do on an array. This is
+you should use the AOLserver built-in <a href="http://www.aolserver.com/docs/tcldev/tapi-120.htm#197598" target="_top"><tt class="computeroutput">
+ns_set</tt></a>. You can also do a case-insensitive lookup on an
+<tt class="computeroutput">ns_set</tt>, something you can't easily do on an array. This is
 especially useful for things like HTTP headers, which happen to have these
-exact properties.</p><p>You always use pass-by-reference with <code class="computeroutput">ns_set</code>s, since they
+exact properties.</p><p>You always use pass-by-reference with <tt class="computeroutput">ns_set</tt>s, since they
 don't have any built-in way of generating and reconstructing themselves
 from a string representation. Instead, you pass the handle to the set.</p><pre class="programlisting">
 
@@ -157,34 +158,34 @@
     user_id
 } {
     db_1row user_info { select first_names, last_name, email from users where user_id = :user_id }
-    ns_set put $set name "$first_names $last_name"
+    ns_set put $set name &quot;$first_names $last_name&quot;
     ns_set put $set email $email
-    ns_set put $set namelink "&lt;a href=\"/shared/community-member?user_id=[ns_urlencode $user_id]\"&gt;$first_names $last_name&lt;/a&gt;"
-    ns_set put $set emaillink "&lt;a href=\"mailto:$email\"&gt;$email&lt;/a&gt;"
+    ns_set put $set namelink &quot;&lt;a href=\&quot;/shared/community-member?user_id=[ns_urlencode $user_id]\&quot;&gt;$first_names $last_name&lt;/a&gt;&quot;
+    ns_set put $set emaillink &quot;&lt;a href=\&quot;mailto:$email\&quot;&gt;$email&lt;/a&gt;&quot;
 }
 
 set user_info [ns_set create]
 ad_get_user_info -set $user_info $user_id
 
-doc_body_append "[ns_set get $user_info namelink] ([ns_set get $user_info emaillink])"
+doc_body_append &quot;[ns_set get $user_info namelink] ([ns_set get $user_info emaillink])&quot;
 
 </pre><p>
-We don't recommend <code class="computeroutput">ns_set</code> as a general mechanism for passing
+We don't recommend <tt class="computeroutput">ns_set</tt> as a general mechanism for passing
 sets (as opposed to multisets) of data. Not only do they inherently use
 pass-by-reference, which we dis-like, they're also somewhat clumsy to
 use, since Tcl doesn't have built-in syntactic support for them. 
-</p><p>Consider for example a loop over the entries in a <code class="computeroutput">ns_set</code> as
+</p><p>Consider for example a loop over the entries in a <tt class="computeroutput">ns_set</tt> as
 compared to an array:</p><pre class="programlisting">
 
 # ns_set variant
 set size [ns_set size $myset]
 for { set i 0 } { $i &lt; $size } { incr i } {
-    puts "[ns_set key $myset $i] = [ns_set value $myset $i]"
+    puts &quot;[ns_set key $myset $i] = [ns_set value $myset $i]&quot;
 }
 
 # array variant
 foreach name [array names myarray] {
-    puts "$myarray($name) = $myarray($name)"
+    puts &quot;$myarray($name) = $myarray($name)&quot;
 }
 
 </pre><p>
@@ -204,9 +205,9 @@
 ]
 
 </pre><p>
-<code class="computeroutput">ns_set</code>s are designed to be lightweight, so memory consumption
-should not be a problem. However, when using <code class="computeroutput">ns_set get</code> to
+<tt class="computeroutput">ns_set</tt>s are designed to be lightweight, so memory consumption
+should not be a problem. However, when using <tt class="computeroutput">ns_set get</tt> to
 perform lookup by name, they perform a linear lookup, whereas arrays use a
-hash table, so <code class="computeroutput">ns_set</code>s are slower than arrays when the number of
+hash table, so <tt class="computeroutput">ns_set</tt>s are slower than arrays when the number of
 entries is large. 
 </p><div class="cvstag">($Id$)</div></div></div><div class="navfooter"><hr><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="object-identity.html">Prev</a> </td><td width="20%" align="center"><a accesskey="h" href="index.html">Home</a></td><td width="40%" align="right"> <a accesskey="n" href="form-builder.html">Next</a></td></tr><tr><td width="40%" align="left">Object Identity </td><td width="20%" align="center"><a accesskey="u" href="dev-guide.html">Up</a></td><td width="40%" align="right"> Using Form Builder: building html forms dynamically</td></tr></table><hr><address><a href="mailto:docs@openacs.org">docs@openacs.org</a></address></div><a name="comments"></a><center><a href="http://openacs.org/doc/current/programming-with-aolserver.html#comments">View comments on this page at openacs.org</a></center></body></html>
Index: openacs-4/packages/acs-core-docs/www/psgml-for-emacs.html
===================================================================
RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/psgml-for-emacs.html,v
diff -u -r1.34 -r1.34.4.1
--- openacs-4/packages/acs-core-docs/www/psgml-for-emacs.html	17 Jul 2006 05:38:32 -0000	1.34
+++ openacs-4/packages/acs-core-docs/www/psgml-for-emacs.html	3 Feb 2008 12:07:40 -0000	1.34.4.1
@@ -1,8 +1,9 @@
-<html><head><meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"><title>Add PSGML commands to emacs init file (OPTIONAL)</title><meta name="generator" content="DocBook XSL Stylesheets V1.70.1"><link rel="home" href="index.html" title="OpenACS Core Documentation"><link rel="up" href="install-more-software.html" title="Appendix�B.�Install additional supporting software"><link rel="previous" href="install-cvs.html" title="Initialize CVS (OPTIONAL)"><link rel="next" href="install-daemontools.html" title="Install Daemontools (OPTIONAL)"><link rel="stylesheet" href="openacs.css" type="text/css"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><a href="http://openacs.org"><img src="/doc/images/alex.jpg" border="0" alt="Alex logo"></a><table width="100%" summary="Navigation header" border="0"><tr><td width="20%" align="left"><a accesskey="p" href="install-cvs.html">Prev</a> </td><th width="60%" align="center">Appendix�B.�Install additional supporting software</th><td width="20%" align="right"> <a accesskey="n" href="install-daemontools.html">Next</a></td></tr></table><hr></div><div class="sect1" lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="psgml-for-emacs"></a>Add PSGML commands to emacs init file (OPTIONAL)</h2></div></div></div><p><a class="indexterm" name="id942894"></a>
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html><head><meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"><title>Add PSGML commands to emacs init file (OPTIONAL)</title><meta name="generator" content="DocBook XSL Stylesheets V1.60.1"><link rel="home" href="index.html" title="OpenACS Core Documentation"><link rel="up" href="install-more-software.html" title="Appendix�B.�Install additional supporting software"><link rel="previous" href="install-cvs.html" title="Initialize CVS (OPTIONAL)"><link rel="next" href="install-daemontools.html" title="Install Daemontools (OPTIONAL)"><link rel="stylesheet" href="openacs.css" type="text/css"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><a href="http://openacs.org"><img src="/doc/images/alex.jpg" border="0" alt="Alex logo"></a><table width="100%" summary="Navigation header" border="0"><tr><td width="20%" align="left"><a accesskey="p" href="install-cvs.html">Prev</a> </td><th width="60%" align="center">Appendix�B.�Install additional supporting software</th><td width="20%" align="right"> <a accesskey="n" href="install-daemontools.html">Next</a></td></tr></table><hr></div><div class="sect1" lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="psgml-for-emacs"></a>Add PSGML commands to emacs init file (OPTIONAL)</h2></div></div><div></div></div><p><a class="indexterm" name="id3015857"></a>
 If you plan to write or edit any documentation with emacs, install a
       customized emacs configuration file with DocBook commands in the skeleton
       directory, so it will be used for all new users.  The file also
       fixes the backspace -&gt; help mis-mapping that often occurs in
-      terminals.</p><pre class="screen">[root tmp]# <strong class="userinput"><code>cp /tmp/openacs-5.2.3rc1/packages/acs-core-docs/www/files/emacs.txt /etc/skel/.emacs</code></strong>
-cp: overwrite `/etc/skel/.emacs'? <strong class="userinput"><code>y</code></strong>
-[root tmp]# </pre><p>Debian users:</p><pre class="screen"><span class="action"><span class="action">apt-get install psgml</span></span></pre><p>Note: The new nxml mode for emacs, when used in combination with psgml, provides a pretty good set of functionality that makes DocBook editing much less painless.  In particular, nxml does syntax testing in real-time so that you can see syntax errors immediately instead of in the output of the xsltproc hours or days later.  For debian, <code class="computeroutput">apt-get install nxml</code>.</p></div><div class="navfooter"><hr><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="install-cvs.html">Prev</a> </td><td width="20%" align="center"><a accesskey="h" href="index.html">Home</a></td><td width="40%" align="right"> <a accesskey="n" href="install-daemontools.html">Next</a></td></tr><tr><td width="40%" align="left">Initialize CVS (OPTIONAL) </td><td width="20%" align="center"><a accesskey="u" href="install-more-software.html">Up</a></td><td width="40%" align="right"> Install Daemontools (OPTIONAL)</td></tr></table><hr><address><a href="mailto:docs@openacs.org">docs@openacs.org</a></address></div><a name="comments"></a><center><a href="http://openacs.org/doc/current/psgml-for-emacs.html#comments">View comments on this page at openacs.org</a></center></body></html>
+      terminals.</p><pre class="screen">[root tmp]# <b class="userinput"><tt>cp /tmp/openacs-5.4.0/packages/acs-core-docs/www/files/emacs.txt /etc/skel/.emacs</tt></b>
+cp: overwrite `/etc/skel/.emacs'? <b class="userinput"><tt>y</tt></b>
+[root tmp]# </pre><p>Debian users:</p><pre class="screen"><span class="action"><span class="action">apt-get install psgml</span></span></pre><p>Note: The new nxml mode for emacs, when used in combination with psgml, provides a pretty good set of functionality that makes DocBook editing much less painless.  In particular, nxml does syntax testing in real-time so that you can see syntax errors immediately instead of in the output of the xsltproc hours or days later.  For debian, <tt class="computeroutput">apt-get install nxml</tt>.</p></div><div class="navfooter"><hr><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="install-cvs.html">Prev</a> </td><td width="20%" align="center"><a accesskey="h" href="index.html">Home</a></td><td width="40%" align="right"> <a accesskey="n" href="install-daemontools.html">Next</a></td></tr><tr><td width="40%" align="left">Initialize CVS (OPTIONAL) </td><td width="20%" align="center"><a accesskey="u" href="install-more-software.html">Up</a></td><td width="40%" align="right"> Install Daemontools (OPTIONAL)</td></tr></table><hr><address><a href="mailto:docs@openacs.org">docs@openacs.org</a></address></div><a name="comments"></a><center><a href="http://openacs.org/doc/current/psgml-for-emacs.html#comments">View comments on this page at openacs.org</a></center></body></html>
Index: openacs-4/packages/acs-core-docs/www/psgml-mode.html
===================================================================
RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/psgml-mode.html,v
diff -u -r1.42 -r1.42.4.1
--- openacs-4/packages/acs-core-docs/www/psgml-mode.html	17 Jul 2006 05:38:32 -0000	1.42
+++ openacs-4/packages/acs-core-docs/www/psgml-mode.html	3 Feb 2008 12:07:40 -0000	1.42.4.1
@@ -1,52 +1,53 @@
-<html><head><meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"><title>Using PSGML mode in Emacs</title><meta name="generator" content="DocBook XSL Stylesheets V1.70.1"><link rel="home" href="index.html" title="OpenACS Core Documentation"><link rel="up" href="doc-standards.html" title="Chapter�13.�Documentation Standards"><link rel="previous" href="docbook-primer.html" title="OpenACS Documentation Guide"><link rel="next" href="nxml-mode.html" title="Using nXML mode in Emacs"><link rel="stylesheet" href="openacs.css" type="text/css"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><a href="http://openacs.org"><img src="/doc/images/alex.jpg" border="0" alt="Alex logo"></a><table width="100%" summary="Navigation header" border="0"><tr><td width="20%" align="left"><a accesskey="p" href="docbook-primer.html">Prev</a> </td><th width="60%" align="center">Chapter�13.�Documentation Standards</th><td width="20%" align="right"> <a accesskey="n" href="nxml-mode.html">Next</a></td></tr></table><hr></div><div class="sect1" lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="psgml-mode"></a>Using PSGML mode in Emacs</h2></div></div></div><div class="authorblurb"><p>By David Lutterkort</p>
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html><head><meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"><title>Using PSGML mode in Emacs</title><meta name="generator" content="DocBook XSL Stylesheets V1.60.1"><link rel="home" href="index.html" title="OpenACS Core Documentation"><link rel="up" href="doc-standards.html" title="Chapter�13.�Documentation Standards"><link rel="previous" href="docbook-primer.html" title="OpenACS Documentation Guide"><link rel="next" href="nxml-mode.html" title="Using nXML mode in Emacs"><link rel="stylesheet" href="openacs.css" type="text/css"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><a href="http://openacs.org"><img src="/doc/images/alex.jpg" border="0" alt="Alex logo"></a><table width="100%" summary="Navigation header" border="0"><tr><td width="20%" align="left"><a accesskey="p" href="docbook-primer.html">Prev</a> </td><th width="60%" align="center">Chapter�13.�Documentation Standards</th><td width="20%" align="right"> <a accesskey="n" href="nxml-mode.html">Next</a></td></tr></table><hr></div><div class="sect1" lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="psgml-mode"></a>Using PSGML mode in Emacs</h2></div></div><div></div></div><div class="authorblurb"><p>By David Lutterkort</p>
           OpenACS docs are written by the named authors, and may be edited
           by OpenACS documentation staff.
-        </div><p>Note: <code class="computeroutput">nxml</code> mode replaces and/or complements psgml mode.  <a href="http://www.xmlhack.com/read.php?item=2061" target="_top">More information</a>.</p><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="psgml-mode-whatisit"></a>What it is</h3></div></div></div><p>PSGML Mode is a mode for editing, umm, SGML and XML documents in emacs. It
+        </div><p>Note: <tt class="computeroutput">nxml</tt> mode replaces and/or complements psgml mode.  <a href="http://www.xmlhack.com/read.php?item=2061" target="_top">More information</a>.</p><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="psgml-mode-whatisit"></a>What it is</h3></div></div><div></div></div><p>PSGML Mode is a mode for editing, umm, SGML and XML documents in emacs. It
 can parse a DTD and help you insert the right tags in the right place, knows
 about tags' attributes and can tell you in which contexts a tag can be
 used. <span class="emphasis"><em>If</em></span> you give it the right DTD, that is. But even without a DTD,
-it can save you some typing since pressing <code class="computeroutput">C-c/</code> will close an open
-tag automatically.</p></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="psgml-mode-getit"></a>Where to get it</h3></div></div></div><p>Most newer emacsen come with PSGML mode preinstalled. You can find out
-whether your emacs has it with the <code class="computeroutput">locate-library</code> command. In Emacs,
-type <code class="computeroutput">M-x locate-library</code> and enter <code class="computeroutput">psgml</code>. Emacs will tell
+it can save you some typing since pressing <tt class="computeroutput">C-c/</tt> will close an open
+tag automatically.</p></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="psgml-mode-getit"></a>Where to get it</h3></div></div><div></div></div><p>Most newer emacsen come with PSGML mode preinstalled. You can find out
+whether your emacs has it with the <tt class="computeroutput">locate-library</tt> command. In Emacs,
+type <tt class="computeroutput">M-x locate-library</tt> and enter <tt class="computeroutput">psgml</tt>. Emacs will tell
 you if it found it or not.</p><p>If you don't have PSGML preinstalled in your Emacs, there are two
 things you can do:</p><div class="orderedlist"><ol type="1"><li><p>On Linux: Get the <a href="ftp://sourceware.cygnus.com:/pub/docbook-tools/docware/RPMS/noarch/psgml-1.2.1-1.noarch.rpm" target="_top">
 psgml rpm</a> from <a href="http://sources.redhat.com/docbook-tools/" target="_top">RedHat's
 docbook-tools</a> and install it as usual.</p></li><li><p>On other systems: Get the tarball from the <a href="http://www.lysator.liu.se/~lenst/about_psgml/" target="_top">PSGML Website.</a>
-Unpack it and follow the install instructions.</p></li></ol></div></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="psgml-mode-catalogs"></a>Using <code class="computeroutput">CATALOG</code> files</h3></div></div></div><p>The easiest way to teach PSGML mode about a DTD is by adding it to your
-own <code class="computeroutput">CATALOG</code>. Here is an example of how you can set that up for the
+Unpack it and follow the install instructions.</p></li></ol></div></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="psgml-mode-catalogs"></a>Using <tt class="computeroutput">CATALOG</tt> files</h3></div></div><div></div></div><p>The easiest way to teach PSGML mode about a DTD is by adding it to your
+own <tt class="computeroutput">CATALOG</tt>. Here is an example of how you can set that up for the
 Docbook XML DTD.</p><div class="orderedlist"><ol type="1"><li><p>Get the <a href="http://docbook.org/xml/index.html" target="_top">Docbook XML DTD</a>
 zip archive from <a href="http://docbook.org/" target="_top">docbook.org</a></p></li><li><p>Go somewhere in your working directory and do </p><pre class="programlisting">
       mkdir -p dtd/docbook-xml
       cd dtd/docbook-xml
       unzip -a &lt;docbook XML DTD zip archive&gt;
    
-</pre></li><li><p>Create a file with the name <code class="computeroutput">CATALOG</code> in the <code class="computeroutput">dtd</code>
+</pre></li><li><p>Create a file with the name <tt class="computeroutput">CATALOG</tt> in the <tt class="computeroutput">dtd</tt>
 directory and put the line </p><pre class="programlisting">
-      CATALOG "docbook-xml/docbook.cat"
+      CATALOG &quot;docbook-xml/docbook.cat&quot;
 </pre><p>
-in it. By maintaining your own <code class="computeroutput">CATALOG</code>, it is easy to add more
+in it. By maintaining your own <tt class="computeroutput">CATALOG</tt>, it is easy to add more
 DTD's without changing your emacs settings. (<span class="emphasis"><em>How about that HTML 4.01 DTD you
 always wanted to get from <a href="http://www.w3.org/TR/html4/" target="_top">W3C</a> ? The
 DTD is in the zip archives and tarballs available on the site.</em></span>)</p></li></ol></div><p>That's it. Now you are ready to tell emacs all about PSGML mode and
-that funky <code class="computeroutput">CATALOG</code></p></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="psgml-mode-tell-emacs"></a>What to tell emacs</h3></div></div></div><p>If you installed PSGML mode in a non-standard location, e.g., somewhere in
-your home directory, you need to add this to the <code class="computeroutput">load-path</code> by adding
-this line to your <code class="computeroutput">.emacs</code> file:</p><pre class="programlisting">
-      (add-to-list 'load-path "/some/dir/that/contains/psgml.elc")
+that funky <tt class="computeroutput">CATALOG</tt></p></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="psgml-mode-tell-emacs"></a>What to tell emacs</h3></div></div><div></div></div><p>If you installed PSGML mode in a non-standard location, e.g., somewhere in
+your home directory, you need to add this to the <tt class="computeroutput">load-path</tt> by adding
+this line to your <tt class="computeroutput">.emacs</tt> file:</p><pre class="programlisting">
+      (add-to-list 'load-path &quot;/some/dir/that/contains/psgml.elc&quot;)
    
-</pre><p>To let PSGML mode find your <code class="computeroutput">CATALOG</code> and to enable PSGML mode for
-all your editing, add these lines to your <code class="computeroutput">.emacs</code>:</p><pre class="programlisting">
+</pre><p>To let PSGML mode find your <tt class="computeroutput">CATALOG</tt> and to enable PSGML mode for
+all your editing, add these lines to your <tt class="computeroutput">.emacs</tt>:</p><pre class="programlisting">
       (require 'psgml)
 
-      (add-to-list 'auto-mode-alist '("\\.html" . sgml-mode))
-      (add-to-list 'auto-mode-alist '("\\.adp" . xml-mode))
-      (add-to-list 'auto-mode-alist '("\\.xml" . xml-mode))
-      (add-to-list 'auto-mode-alist '("\\.xsl" . xml-mode))
+      (add-to-list 'auto-mode-alist '(&quot;\\.html&quot; . sgml-mode))
+      (add-to-list 'auto-mode-alist '(&quot;\\.adp&quot; . xml-mode))
+      (add-to-list 'auto-mode-alist '(&quot;\\.xml&quot; . xml-mode))
+      (add-to-list 'auto-mode-alist '(&quot;\\.xsl&quot; . xml-mode))
       
-      (add-to-list 'sgml-catalog-files "/path/to/your/dtd/CATALOG")
+      (add-to-list 'sgml-catalog-files &quot;/path/to/your/dtd/CATALOG&quot;)
    
 </pre><p>If you want font-locking and indentation, you can also add these lines
-into the <code class="computeroutput">.emacs</code> file:</p><pre class="programlisting">
+into the <tt class="computeroutput">.emacs</tt> file:</p><pre class="programlisting">
       (setq sgml-markup-faces '((start-tag . font-lock-function-name-face)
                                 (end-tag . font-lock-function-name-face)
                 (comment . font-lock-comment-face)
@@ -58,28 +59,28 @@
       (setq sgml-set-face t)
       (setq-default sgml-indent-data t)
       ;; Some convenient key definitions:
-      (define-key sgml-mode-map "\C-c\C-x\C-e" 'sgml-describe-element-type)
-      (define-key sgml-mode-map "\C-c\C-x\C-i" 'sgml-general-dtd-info)
-      (define-key sgml-mode-map "\C-c\C-x\C-t" 'sgml-describe-entity)
+      (define-key sgml-mode-map &quot;\C-c\C-x\C-e&quot; 'sgml-describe-element-type)
+      (define-key sgml-mode-map &quot;\C-c\C-x\C-i&quot; 'sgml-general-dtd-info)
+      (define-key sgml-mode-map &quot;\C-c\C-x\C-t&quot; 'sgml-describe-entity)
    
-</pre></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="psgml-mode-doctype"></a>What is a <code class="computeroutput">DOCTYPE</code> ?</h3></div></div></div><p>All SGML and XML documents that should conform to a DTD have to declare a
-doctype. For the docbook XML, all your <code class="computeroutput">.xml</code> files whould start with
+</pre></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="psgml-mode-doctype"></a>What is a <tt class="computeroutput">DOCTYPE</tt> ?</h3></div></div><div></div></div><p>All SGML and XML documents that should conform to a DTD have to declare a
+doctype. For the docbook XML, all your <tt class="computeroutput">.xml</tt> files whould start with
 the line</p><pre class="programlisting">
-      &lt;!DOCTYPE book PUBLIC "-//OASIS//DTD DocBook XML V4.4//EN" "docbookx.dtd"&gt;
+      &lt;!DOCTYPE book PUBLIC &quot;-//OASIS//DTD DocBook XML V4.4//EN&quot; &quot;docbookx.dtd&quot;&gt;
    
 </pre><p>If your document is only part of a larger XML document, you can tell PSGML
 mode about it by <span class="emphasis"><em>appending</em></span> the following lines to your file. In this
 case, do <span class="emphasis"><em>not</em></span> include a DOCTYPE declaration in your file.</p><pre class="programlisting">
       &lt;!--
        Local Variables:
-       sgml-parent-document: ("top.xml" "book" "sect1")
+       sgml-parent-document: (&quot;top.xml&quot; &quot;book&quot; &quot;sect1&quot;)
        End:
       --&gt;
    
 </pre><p>Which says that the parent of this document can be found in the file
-<code class="computeroutput">top.xml</code>, that the element in the parent that will enclose the
-current document is a <code class="computeroutput">book</code> and that the current file's topmost
-element is a <code class="computeroutput">sect1</code>.</p></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="psgml-mode-usage"></a>How to use it</h3></div></div></div><p>Of course, you should read the emacs texinfo pages that come with PSGML
-mode from start to finish. Barring that, here are some handy commands:</p><div class="informaltable"><table cellspacing="0" border="0"><colgroup><col><col></colgroup><thead><tr><th>Key</th><th>Command</th></tr></thead><tbody><tr><td><code class="computeroutput">C-c C-e</code></td><td>Insert an element. Uses completion and only lets you insert elements that
-are valid</td></tr><tr><td><code class="computeroutput">C-c C-a</code></td><td>Edit attributes of enclosing element.</td></tr><tr><td><code class="computeroutput">C-c C-x C-i</code></td><td>Show information about the document's DTD.</td></tr><tr><td><code class="computeroutput">C-c C-x C-e</code></td><td>Describe element. Shows for one element which elements can be parents,
-what its contents can be and lists its attributes.</td></tr></tbody></table></div></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="psgml-mode-reading"></a>Further reading</h3></div></div></div><p>Start with the <a href="docbook-primer.html" title="OpenACS Documentation Guide">the section called &#8220;OpenACS Documentation Guide&#8221;</a></p><div class="cvstag">($Id$)</div></div></div><div class="navfooter"><hr><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="docbook-primer.html">Prev</a> </td><td width="20%" align="center"><a accesskey="h" href="index.html">Home</a></td><td width="40%" align="right"> <a accesskey="n" href="nxml-mode.html">Next</a></td></tr><tr><td width="40%" align="left">OpenACS Documentation Guide </td><td width="20%" align="center"><a accesskey="u" href="doc-standards.html">Up</a></td><td width="40%" align="right"> Using nXML mode in Emacs</td></tr></table><hr><address><a href="mailto:docs@openacs.org">docs@openacs.org</a></address></div><a name="comments"></a><center><a href="http://openacs.org/doc/current/psgml-mode.html#comments">View comments on this page at openacs.org</a></center></body></html>
+<tt class="computeroutput">top.xml</tt>, that the element in the parent that will enclose the
+current document is a <tt class="computeroutput">book</tt> and that the current file's topmost
+element is a <tt class="computeroutput">sect1</tt>.</p></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="psgml-mode-usage"></a>How to use it</h3></div></div><div></div></div><p>Of course, you should read the emacs texinfo pages that come with PSGML
+mode from start to finish. Barring that, here are some handy commands:</p><div class="informaltable"><table cellspacing="0" border="0"><colgroup><col><col></colgroup><thead><tr><th>Key</th><th>Command</th></tr></thead><tbody><tr><td><tt class="computeroutput">C-c C-e</tt></td><td>Insert an element. Uses completion and only lets you insert elements that
+are valid</td></tr><tr><td><tt class="computeroutput">C-c C-a</tt></td><td>Edit attributes of enclosing element.</td></tr><tr><td><tt class="computeroutput">C-c C-x C-i</tt></td><td>Show information about the document's DTD.</td></tr><tr><td><tt class="computeroutput">C-c C-x C-e</tt></td><td>Describe element. Shows for one element which elements can be parents,
+what its contents can be and lists its attributes.</td></tr></tbody></table></div></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="psgml-mode-reading"></a>Further reading</h3></div></div><div></div></div><p>Start with the <a href="docbook-primer.html" title="OpenACS Documentation Guide">Section�, &#8220;OpenACS Documentation Guide&#8221;</a></p><div class="cvstag">($Id$)</div></div></div><div class="navfooter"><hr><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="docbook-primer.html">Prev</a> </td><td width="20%" align="center"><a accesskey="h" href="index.html">Home</a></td><td width="40%" align="right"> <a accesskey="n" href="nxml-mode.html">Next</a></td></tr><tr><td width="40%" align="left">OpenACS Documentation Guide </td><td width="20%" align="center"><a accesskey="u" href="doc-standards.html">Up</a></td><td width="40%" align="right"> Using nXML mode in Emacs</td></tr></table><hr><address><a href="mailto:docs@openacs.org">docs@openacs.org</a></address></div><a name="comments"></a><center><a href="http://openacs.org/doc/current/psgml-mode.html#comments">View comments on this page at openacs.org</a></center></body></html>
Index: openacs-4/packages/acs-core-docs/www/release-notes.html
===================================================================
RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/release-notes.html,v
diff -u -r1.48 -r1.48.4.1
--- openacs-4/packages/acs-core-docs/www/release-notes.html	17 Jul 2006 05:38:32 -0000	1.48
+++ openacs-4/packages/acs-core-docs/www/release-notes.html	3 Feb 2008 12:07:40 -0000	1.48.4.1
@@ -1,10 +1,20 @@
-<html><head><meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"><title>OpenACS Release Notes</title><meta name="generator" content="DocBook XSL Stylesheets V1.70.1"><link rel="home" href="index.html" title="OpenACS Core Documentation"><link rel="up" href="general-documents.html" title="Chapter�1.�High level information: What is OpenACS?"><link rel="previous" href="openacs-overview.html" title="Overview"><link rel="next" href="acs-admin.html" title="Part�II.�Administrator's Guide"><link rel="stylesheet" href="openacs.css" type="text/css"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><a href="http://openacs.org"><img src="/doc/images/alex.jpg" border="0" alt="Alex logo"></a><table width="100%" summary="Navigation header" border="0"><tr><td width="20%" align="left"><a accesskey="p" href="openacs-overview.html">Prev</a> </td><th width="60%" align="center">Chapter�1.�High level information: What is OpenACS?</th><td width="20%" align="right"> <a accesskey="n" href="acs-admin.html">Next</a></td></tr></table><hr></div><div class="sect1" lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="release-notes"></a>OpenACS Release Notes</h2></div></div></div><p>The ChangeLogs include an annotated list of changes (<a href="release-notes.html#changelog-latest" title="Changelog (most recent release only)">the section called &#8220;Changelog (most recent release only)&#8221;</a>) since the last release and in the
-entire 5.2 release sequence <a href="release-notes.html#changelog" title="Changelog for oacs-5-2">the section called &#8220;Changelog for oacs-5-2&#8221;</a>.</p><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="release-notes-5-2-0"></a>Release 5.2.0</h3></div></div></div><div class="itemizedlist"><ul type="disc"><li><p>Bug fixes.</p><p>New TIPs implemented.</p><p>This release does <span class="strong"><strong>not</strong></span> include new translations.</p></li></ul></div></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="release-notes-5-1-4"></a>Release 5.1.4</h3></div></div></div><div class="itemizedlist"><ul type="disc"><li><p>Bug fixes.</p><p>The missing CR TCL API has been filled in, thanks to Rocael and
-        his team and Dave Bauer.</p><p>This release does <span class="strong"><strong>not</strong></span> include new translations.</p></li></ul></div></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="release-notes-5-1-3"></a>Release 5.1.3</h3></div></div></div><div class="itemizedlist"><ul type="disc"><li><p>Bug fixes, primarily for .LRN compatibility in support of upcoming .LRN 2.1.0 releases. This release does <span class="strong"><strong>not</strong></span> include new translations since 5.1.2.
-        </p></li></ul></div></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="release-notes-5-1-2"></a>Release 5.1.2</h3></div></div></div><div class="itemizedlist"><ul type="disc"><li><p>Translations syncronized with the translation server.
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html><head><meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"><title>OpenACS Release Notes</title><meta name="generator" content="DocBook XSL Stylesheets V1.60.1"><link rel="home" href="index.html" title="OpenACS Core Documentation"><link rel="up" href="general-documents.html" title="Chapter�1.�High level information: What is OpenACS?"><link rel="previous" href="openacs-overview.html" title="Overview"><link rel="next" href="acs-admin.html" title="Part�II.�Administrator's Guide"><link rel="stylesheet" href="openacs.css" type="text/css"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><a href="http://openacs.org"><img src="/doc/images/alex.jpg" border="0" alt="Alex logo"></a><table width="100%" summary="Navigation header" border="0"><tr><td width="20%" align="left"><a accesskey="p" href="openacs-overview.html">Prev</a> </td><th width="60%" align="center">Chapter�1.�High level information: What is OpenACS?</th><td width="20%" align="right"> <a accesskey="n" href="acs-admin.html">Next</a></td></tr></table><hr></div><div class="sect1" lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="release-notes"></a>OpenACS Release Notes</h2></div></div><div></div></div><p>The ChangeLogs include an annotated list of changes (<a href="release-notes.html#changelog-latest" title="Changelog (most recent release only)">Section�, &#8220;Changelog (most recent release only)&#8221;</a>) since the last release and in the
+entire 5.4 release sequence <a href="release-notes.html#changelog" title="Changelog for oacs-5-4">Section�, &#8220;Changelog for oacs-5-4&#8221;</a>.</p><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="release-notes-5-4-0"></a>Release 5.4.0</h3></div></div><div></div></div><div class="itemizedlist"><ul type="disc"><li><p>New Templating API added to add scripts, css, etc to the HTML HEAD and BODY 
+              sections of the generated HTML document.  Please see 
+              /packages/acs-templating/tcl/head-procs.tcl or visit the template::head procs
+              in the API browser for details.
+              </p><p>Templates have been modified to comply with HTML strict</p><p>The Search package's results page has been improved</p><p>TinyMCE WYSIWYG support has been added, RTE and HTMLArea support dropped</p><p>acs-mail-lite's send has been cleaned up to properly encode content, to handle
+              file attachments, etc.  &quot;complex-send&quot; will disappear from acs-core in a future
+              release.</p></li></ul></div></div><p>The ChangeLogs include an annotated list of changes (<a href="release-notes.html#changelog-latest" title="Changelog (most recent release only)">Section�, &#8220;Changelog (most recent release only)&#8221;</a>) since the last release and in the
+entire 5.4 release sequence <a href="release-notes.html#changelog" title="Changelog for oacs-5-4">Section�, &#8220;Changelog for oacs-5-4&#8221;</a>.</p><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="release-notes-5-3-1"></a>Release 5.3.1</h3></div></div><div></div></div><div class="itemizedlist"><ul type="disc"><li><p>Bug fixes.</p><p>New TIPs implemented.</p><p>All Core Automated Tests for Postgres pass.</p><p>New Site and Blank master templates and CSS compatible with the .LRN Zen
+              work.  Compatibility master templates are provided for existing sites.</p></li></ul></div></div><p>The ChangeLogs include an annotated list of changes (<a href="release-notes.html#changelog-latest" title="Changelog (most recent release only)">Section�, &#8220;Changelog (most recent release only)&#8221;</a>) since the last release and in the
+entire 5.4 release sequence <a href="release-notes.html#changelog" title="Changelog for oacs-5-4">Section�, &#8220;Changelog for oacs-5-4&#8221;</a>.</p><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="release-notes-5-3-0"></a>Release 5.3.0</h3></div></div><div></div></div><div class="itemizedlist"><ul type="disc"><li><p>Bug fixes.</p><p>New TIPs implemented.</p><p>All Core Automated Tests for Postgres pass.</p></li></ul></div></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="release-notes-5-2-0"></a>Release 5.2.0</h3></div></div><div></div></div><div class="itemizedlist"><ul type="disc"><li><p>Bug fixes.</p><p>New TIPs implemented.</p><p>This release does <span class="strong">not</span> include new translations.</p></li></ul></div></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="release-notes-5-1-4"></a>Release 5.1.4</h3></div></div><div></div></div><div class="itemizedlist"><ul type="disc"><li><p>Bug fixes.</p><p>The missing CR TCL API has been filled in, thanks to Rocael and
+        his team and Dave Bauer.</p><p>This release does <span class="strong">not</span> include new translations.</p></li></ul></div></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="release-notes-5-1-3"></a>Release 5.1.3</h3></div></div><div></div></div><div class="itemizedlist"><ul type="disc"><li><p>Bug fixes, primarily for .LRN compatibility in support of upcoming .LRN 2.1.0 releases. This release does <span class="strong">not</span> include new translations since 5.1.2.
+        </p></li></ul></div></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="release-notes-5-1-2"></a>Release 5.1.2</h3></div></div><div></div></div><div class="itemizedlist"><ul type="disc"><li><p>Translations syncronized with the translation server.
         Basque and Catalan added.
         </p></li><li><p>For a complete change list, see the  Change list since
-          5.1.0 in <a href="release-notes.html#changelog" title="Changelog for oacs-5-2">the section called &#8220;Changelog for oacs-5-2&#8221;</a>.</p></li></ul></div></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="release-notes-5-1-1"></a>Release 5.1.1</h3></div></div></div><div class="itemizedlist"><ul type="disc"><li><p>This is the first release using the newest adjustment to the versioning convention.  The OpenACS 5.1.1 tag will apply to OpenACS core as well as to the most recent released version of every package, including .LRN.</p></li><li><p>Translations syncronized with the translation server.
+          5.1.0 in <a href="release-notes.html#changelog" title="Changelog for oacs-5-4">Section�, &#8220;Changelog for oacs-5-4&#8221;</a>.</p></li></ul></div></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="release-notes-5-1-1"></a>Release 5.1.1</h3></div></div><div></div></div><div class="itemizedlist"><ul type="disc"><li><p>This is the first release using the newest adjustment to the versioning convention.  The OpenACS 5.1.1 tag will apply to OpenACS core as well as to the most recent released version of every package, including .LRN.</p></li><li><p>Translations syncronized with the translation server.
         </p></li><li><p><a href="http://openacs.org/bugtracker/openacs/com/acs-lang/bug?bug%5fnumber=1519" target="_top">Bug
             1519</a> fixed.  This involved renaming all catalog
           files for ch_ZH, TH_TH, AR_EG, AR_LB, ms_my, RO_RO, FA_IR,
@@ -15,21 +25,21 @@
           the files and database before upgrading.)</p></li><li><p>Other bug fixes since 5.1.0: <a href="http://openacs.org/bugtracker/openacs/bug?bug_number=1785" target="_top">1785</a>,
           <a href="http://openacs.org/bugtracker/openacs/bug?bug_number=1793" target="_top">1793</a>,
       and over a dozen additional bug fixes.</p></li><li><p>For a complete change list, see the  Change list since
-          5.0.0 in <a href="release-notes.html#changelog" title="Changelog for oacs-5-2">the section called &#8220;Changelog for oacs-5-2&#8221;</a>.</p></li></ul></div></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="release-notes-5-1-0"></a>Release 5.1.0</h3></div></div></div><div class="itemizedlist"><ul type="disc"><li><p>Lots of little tweaks and fixes</p></li><li><p>Complete Change list since 5.0.0 in Changelog</p></li><li><p><a href="http://openacs.org/bugtracker/openacs/core?filter%2efix%5ffor%5fversion=125273&amp;filter%2estatus=closed" target="_top">Many Bug fixes</a></p></li></ul></div></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="release-notes-5-0-4"></a>Release 5.0.4</h3></div></div></div><div class="itemizedlist"><ul type="disc"><li><p>New translations, including for .LRN 2.0.2.</p></li></ul></div></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="release-notes-5-0-3"></a>Release 5.0.3</h3></div></div></div><div class="itemizedlist"><ul type="disc"><li><p>Bug fixes: <a href="http://openacs.org/bugtracker/openacs/bug?bug%5fnumber=1560" target="_top">1560</a>, <a href="http://openacs.org/bugtracker/openacs/bug?bug%5fnumber=1556" target="_top">#1556. Site becomes unresponsive, requires restart</a></p></li></ul></div></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="release-notes-5-0-2"></a>Release 5.0.2</h3></div></div></div><div class="itemizedlist"><ul type="disc"><li><p>Bug fixes: <a href="http://openacs.org/bugtracker/openacs/bug?bug%5fnumber=1495" target="_top">#1495. Croatian enabled by default</a>, <a href="http://openacs.org/bugtracker/openacs/bug?bug%5fnumber=1496" target="_top">#1496. APM automated install fails if files have spaces in their names</a>, <a href="http://openacs.org/bugtracker/openacs/bug?bug%5fnumber=1494" target="_top">#1494. automated upgrade crashes (halting the upgrade process)</a></p></li><li><p>Complete Change list since 5.0.0 in Changelog</p></li><li><p>File tagging scheme in CVS changed to follow <a href="http://openacs.org/forums/message-view?message_id=161375" target="_top">TIP #46: (Approved) Rules for Version Numbering and CVS tagging of Packages</a></p></li></ul></div></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="release-notes-5-0-1"></a>Release 5.0.1</h3></div></div></div><div class="itemizedlist"><ul type="disc"><li><p>All work on the translation server from 7 Nov 2003 to 7 Feb 2004 is now included in catalogs.</p></li><li><p>One new function in acs-tcl, util::age_pretty</p></li><li><p>Complete Change list since 5.0.0 in Changelog</p></li><li><p>Many documentation updates and doc bug fixes </p></li></ul></div></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="release-notes-5-0-0"></a>Release 5.0.0</h3></div></div></div><p>
-	This is OpenACS 5.0.0.  This version contains no known security, data loss, or crashing bugs, nor any bugs judged release blockers.  This version has received manual testing.  It has passed current automated testing, which is not comprehensive.  This release contains work done on the translation server http://translate.openacs.org through 7 Nov 2003.  
+          5.0.0 in <a href="release-notes.html#changelog" title="Changelog for oacs-5-4">Section�, &#8220;Changelog for oacs-5-4&#8221;</a>.</p></li></ul></div></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="release-notes-5-1-0"></a>Release 5.1.0</h3></div></div><div></div></div><div class="itemizedlist"><ul type="disc"><li><p>Lots of little tweaks and fixes</p></li><li><p>Complete Change list since 5.0.0 in Changelog</p></li><li><p><a href="http://openacs.org/bugtracker/openacs/core?filter%2efix%5ffor%5fversion=125273&amp;filter%2estatus=closed" target="_top">Many Bug fixes</a></p></li></ul></div></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="release-notes-5-0-4"></a>Release 5.0.4</h3></div></div><div></div></div><div class="itemizedlist"><ul type="disc"><li><p>New translations, including for .LRN 2.0.2.</p></li></ul></div></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="release-notes-5-0-3"></a>Release 5.0.3</h3></div></div><div></div></div><div class="itemizedlist"><ul type="disc"><li><p>Bug fixes: <a href="http://openacs.org/bugtracker/openacs/bug?bug%5fnumber=1560" target="_top">1560</a>, <a href="http://openacs.org/bugtracker/openacs/bug?bug%5fnumber=1556" target="_top">#1556. Site becomes unresponsive, requires restart</a></p></li></ul></div></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="release-notes-5-0-2"></a>Release 5.0.2</h3></div></div><div></div></div><div class="itemizedlist"><ul type="disc"><li><p>Bug fixes: <a href="http://openacs.org/bugtracker/openacs/bug?bug%5fnumber=1495" target="_top">#1495. Croatian enabled by default</a>, <a href="http://openacs.org/bugtracker/openacs/bug?bug%5fnumber=1496" target="_top">#1496. APM automated install fails if files have spaces in their names</a>, <a href="http://openacs.org/bugtracker/openacs/bug?bug%5fnumber=1494" target="_top">#1494. automated upgrade crashes (halting the upgrade process)</a></p></li><li><p>Complete Change list since 5.0.0 in Changelog</p></li><li><p>File tagging scheme in CVS changed to follow <a href="http://openacs.org/forums/message-view?message_id=161375" target="_top">TIP #46: (Approved) Rules for Version Numbering and CVS tagging of Packages</a></p></li></ul></div></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="release-notes-5-0-1"></a>Release 5.0.1</h3></div></div><div></div></div><div class="itemizedlist"><ul type="disc"><li><p>All work on the translation server from 7 Nov 2003 to 7 Feb 2004 is now included in catalogs.</p></li><li><p>One new function in acs-tcl, util::age_pretty</p></li><li><p>Complete Change list since 5.0.0 in Changelog</p></li><li><p>Many documentation updates and doc bug fixes </p></li></ul></div></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="release-notes-5-0-0"></a>Release 5.0.0</h3></div></div><div></div></div><p>
+        This is OpenACS 5.0.0.  This version contains no known security, data loss, or crashing bugs, nor any bugs judged release blockers.  This version has received manual testing.  It has passed current automated testing, which is not comprehensive.  This release contains work done on the translation server http://translate.openacs.org through 7 Nov 2003.  
   </p><p>
-	Please report bugs using our
-	<a href="http://openacs.org/bugtracker/openacs/" target="_top">
-	  Bug Tracker</a> at the <a href="http://openacs.org/" target="_top">OpenACS website</a>.
+        Please report bugs using our
+        <a href="http://openacs.org/bugtracker/openacs/" target="_top">
+          Bug Tracker</a> at the <a href="http://openacs.org/" target="_top">OpenACS website</a>.
   </p><p>
-	You may want to begin by reading our installation documentation for
-	<a href="unix-installation.html#unix-install" title="a Unix-like system">the section called &#8220;a Unix-like system&#8221;</a>.  Note that the Windows documentation is
-	not current for OpenACS 5.2.3rc1, but an alternative is to use John
-	Sequeira's <a href="http://www.pobox.com/~johnseq/projects/oasisvm/" target="_top">Oasis VM
-	project</a>.
+        You may want to begin by reading our installation documentation for
+        <a href="unix-installation.html#unix-install" title="a Unix-like system">Section�, &#8220;a Unix-like system&#8221;</a>.  Note that the Windows documentation is
+        not current for OpenACS 5.4.0, but an alternative is to use John
+        Sequeira's <a href="http://www.pobox.com/~johnseq/projects/oasisvm/" target="_top">Oasis VM
+        project</a>.
   </p><p>
-	After installation, the full documentation set can be found by visiting
-	<code class="filename">http://yourserver/doc</code>.
+        After installation, the full documentation set can be found by visiting
+        <tt class="filename">http://yourserver/doc</tt>.
   </p><p>
         New features in this release:       
   </p><div class="itemizedlist"><ul type="disc"><li><p>
@@ -102,349 +112,6630 @@
           With the release of OpenACS 5, PostgreSQL 7.2 is no longer supported.
           Upgrades are supported from OpenACS 4.6.3 under Oracle or 
           PostgreSQL 7.3.
-	</p></li><li><p>
-	   The undocumented special handling of ~ and +variable+ in
-	   formtemplates, found in <code class="filename">packages/acs-templating/resources/*</code>,
-	   has been removed in favor of using &lt;noparse&gt; and
-	   \@variable\@ (the standard templating mechanisms).  Locally
-	   provided formtemplate styles still using these mechanisms
-	   will break.
         </p></li><li><p>
-	   Serving backup files and files from the CVS directories is turned off by default via the acs-kernel parameter
-     	   ExcludedFiles in section request-processor (The variable provides a string match glob list of files and is defaulted to "*/CVS/* *~")
-	</p></li></ul></div><div class="cvstag">($Id$)</div></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id1033841"></a>Release 4.6.3</h3></div></div></div><p><a href="release-notes-4-6-3.html" target="_top">Release Notes for 4.6.3</a></p></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id1006262"></a>Release 4.6.2</h3></div></div></div><p><a href="release-notes-4-6-2.html" target="_top">Release Notes for 4.6.2</a></p></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id1002506"></a>Release 4.6</h3></div></div></div><p><a href="release-notes-4-6.html" target="_top">Release Notes for 4.6</a></p></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id1008981"></a>Release 4.5</h3></div></div></div><p><a href="release-notes-4-5.html" target="_top">Release Notes for 4.5</a></p></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="changelog-latest"></a>Changelog (most recent release only)</h3></div></div></div><pre class="programlisting">2004-11-24 23:16  torbenb
+           The undocumented special handling of ~ and +variable+ in
+           formtemplates, found in <tt class="filename">packages/acs-templating/resources/*</tt>,
+           has been removed in favor of using &lt;noparse&gt; and
+           \@variable\@ (the standard templating mechanisms).  Locally
+           provided formtemplate styles still using these mechanisms
+           will break.
+        </p></li><li><p>
+           Serving backup files and files from the CVS directories is turned off by default via the acs-kernel parameter
+                ExcludedFiles in section request-processor (The variable provides a string match glob list of files and is defaulted to &quot;*/CVS/* *~&quot;)
+        </p></li></ul></div><div class="cvstag">($Id$)</div></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id2818205"></a>Release 4.6.3</h3></div></div><div></div></div><p><a href="release-notes-4-6-3.html" target="_top">Release Notes for 4.6.3</a></p></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id2818221"></a>Release 4.6.2</h3></div></div><div></div></div><p><a href="release-notes-4-6-2.html" target="_top">Release Notes for 4.6.2</a></p></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id2818237"></a>Release 4.6</h3></div></div><div></div></div><p><a href="release-notes-4-6.html" target="_top">Release Notes for 4.6</a></p></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id2818253"></a>Release 4.5</h3></div></div><div></div></div><p><a href="release-notes-4-5.html" target="_top">Release Notes for 4.5</a></p></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="changelog-latest"></a>Changelog (most recent release only)</h3></div></div><div></div></div><pre class="programlisting">ChangeLog missing</pre></div>
+--&gt;
 
-	* packages/acs-core-docs/www/xml/install-guide/aolserver.xml:
-	  adding test page for aolserver4, suggested by Aldert Nooitgedagt
 
-2004-11-24 04:01  torbenb
+<div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="changelog"></a>Changelog for oacs-5-4</h3></div></div><div></div></div><pre class="programlisting">
+2008-02-03 02:01  donb
 
+	* packages/acs-core-docs/www/xml/for-everyone/release-notes.xml:
+	  Added pointer to template::head
+
+2008-02-03 01:46  donb
+
+	* readme.txt: Bumped version number in the file
+
+2008-02-02 11:45  emmar
+
+	* packages/acs-templating/tcl/tag-init.tcl: Don't put out row in
+	  the HTML tag, it's not an attribute
+
+2008-02-02 09:40  emmar
+
+	* packages/acs-tcl/lib/static-progress-bar.adp: HTML Strict cleanup
+
+2008-02-02 09:10  emmar
+
+	* packages/acs-tcl/lib/static-progress-bar.adp: HTML Strict cleanup
+
+2008-02-02 07:06  emmar
+
+	* www/blank-master.adp: Type attribute of the style tag was
+	  rendered twice
+
+2008-02-02 06:55  donb
+
+	* packages/acs-templating/tcl/form-procs.tcl: Put &quot;&lt;div&gt;&quot; around
+	  hidden elements put out by the formtemplate tag when a custom
+	  template layout rather than a style template is used and that
+	  custom template layout doesn't put out the hidden elements
+	  manually.
+
+2008-02-02 06:19  victorg
+
+	* packages/acs-kernel/sql/:
+	  oracle/upgrade/upgrade-5.4.0d3-5.4.0d4.sql,
+	  postgresql/upgrade/upgrade-5.4.0d3-5.4.0d4.sql: Creating
+	  privilege annotate in case it's not created.
+
+2008-02-02 05:05  emmar
+
+	* packages/acs-tcl/tcl/utilities-procs.tcl: HTML Strict cleanup
+
+2008-02-02 04:14  emmar
+
+	* packages/acs-tcl/lib/complain.adp: HTML Strict cleanup
+
+2008-01-31 19:24  daveb
+
+	* etc/config.tcl: Merge default mime type fix from HEAD
+
+2008-01-31 05:28  emmar
+
+	* packages/acs-mail-lite/tcl/utils-procs.tcl: Fix bug in subject
+	  encoding proc
+
+2008-01-29 15:33  victorg
+
+	* packages/notifications/tcl/notification-callback-procs.tcl:
+	  Adding missing space in callback definition
+
+2008-01-24 10:50  donb
+
+	* packages/: acs-lang/acs-lang.info,
+	  acs-mail-lite/acs-mail-lite.info,
+	  intermedia-driver/intermedia-driver.info,
+	  notifications/notifications.info,
+	  tsearch2-driver/tsearch2-driver.info: A variety of things ...  1.
+	  maturity level of acs-mail-lite/notifications set to 2 until
+	  final release 2. intermedia bumped to 5.4.0b1 (missed this
+	  earlier) and maturity to 3 3. tsearch2-driver maturity set to 3
+
+2008-01-24 09:39  donb
+
+	* packages/notifications/:
+	  sql/oracle/notifications-replies-extra-create.sql,
+	  sql/postgresql/notifications-core-create.sql,
+	  sql/postgresql/notifications-replies-extra-create.sql,
+	  tcl/apm-callback-procs.tcl, tcl/notification-callback-procs.tcl,
+	  tcl/notification-email-procs.tcl: Fixed public procs without
+	  documentation blocks which caused automated tests to fail.  I
+	  even tried to write meaningful documentation in some cases.
+
+	  Fixed constraint names that also caused automated test failures
+	  FOR PG ONLY.	Someone who used Oracle can fix the Oracle ones if
+	  they want.
+
+2008-01-24 02:36  gustafn
+
+	* packages/acs-templating/tcl/form-procs.tcl: provide IDs for forms
+
+2008-01-24 02:35  gustafn
+
+	* bin/webspell: set default language (if no language is specified)
+	  for spell to en_US
+
+2008-01-23 09:35  donb
+
+	* packages/: acs-admin/acs-admin.info,
+	  acs-api-browser/acs-api-browser.info,
+	  acs-authentication/acs-authentication.info,
+	  acs-automated-testing/acs-automated-testing.info,
+	  acs-bootstrap-installer/acs-bootstrap-installer.info,
+	  acs-content-repository/acs-content-repository.info,
+	  acs-core-docs/acs-core-docs.info, acs-kernel/acs-kernel.info,
+	  acs-lang/acs-lang.info, acs-mail-lite/acs-mail-lite.info,
+	  acs-messaging/acs-messaging.info,
+	  acs-reference/acs-reference.info,
+	  acs-service-contract/acs-service-contract.info,
+	  acs-subsite/acs-subsite.info, acs-tcl/acs-tcl.info,
+	  acs-templating/acs-templating.info,
+	  acs-translations/acs-translations.info,
+	  notifications/notifications.info,
+	  ref-timezones/ref-timezones.info, search/search.info,
+	  tsearch2-driver/tsearch2-driver.info: Bumped version numbers...
+
+2008-01-21 08:42  donb
+
+	* packages/acs-subsite/tcl/test/acs-subsite-procs.tcl: Fixed
+	  another test that failed due to user caching
+
+2008-01-21 07:12  donb
+
+	* packages/acs-subsite/catalog/acs-subsite.en_US.ISO-8859-1.xml:
+	  Added missing catalog key used in title (it does not exist in any
+	  other locale, either, for you non-english readers looking at the
+	  cvs log)
+
+2008-01-21 05:21  gustafn
+
+	* packages/: acs-tcl/tcl/utilities-procs.tcl,
+	  acs-templating/tcl/spellcheck-init.tcl: improve windows
+	  compatibility
+
+2008-01-20 11:31  gustafn
+
+	* packages/: acs-tcl/tcl/utilities-procs.tcl,
+	  acs-templating/tcl/spellcheck-init.tcl: - provide a tcl verison
+	  of which - remove wierd code from spellcheck-init, trying to find
+	  aspell or ispell programs
+
+2008-01-20 09:21  donb
+
+	* packages/acs-content-repository/sql/oracle/: content-package.sql,
+	  content-revision.sql: Missed two files to rollback previously
+
+2008-01-20 08:19  donb
+
+	* packages/acs-content-repository/: sql/oracle/content-image.sql,
+	  sql/oracle/packages-create.sql, tcl/content-revision-procs.tcl:
+	  Rolled back abortive attempt to substitute dbms_log stuff for
+	  java
+
+2008-01-20 07:27  donb
+
+	* packages/acs-tcl/tcl/site-nodes-procs-oracle.xql: Fixed a broken
+	  oracle query
+
+2008-01-20 03:30  donb
+
+	* packages/acs-tcl/tcl/community-core-procs.tcl:
+	  acs_user::flush_cache didn't flush the get_by_username memoized
+	  call, causing problems if you deleted a user then tried to
+	  recreate the same user, because the auth validate data (for a
+	  user) code uses this proc.
+
+2008-01-20 02:57  donb
+
+	* packages/acs-tcl/tcl/test/: navigation-procs.tcl,
+	  site-nodes-test-procs.tcl: Removed the old test case #3 (and
+	  renumbered the remaining ones).  The test checked that updating
+	  the cache without sync'ing the children didn't change the results
+	  returned by the get procedure.  However the lazy caching code by
+	  Malte changed the semantics of get to automatically load the
+	  cache with children if you try to get the node_id of a node with
+	  kids.  This is a good thing, actually, since the update cache w/o
+	  sync'ing kids exists to make the cache update quick.	But it did
+	  break the test checking explicitly for the old semantics.
+
+	  It would be nice, however, if people, after writing new code and
+	  noticing that tests break, would actually sit down and determine
+	  if the test or code is wrong and take appropriate action.
+
+	  Because I just spent two full hours tracking this down and
+	  verifying that the new semantics invalidate the old test code in
+	  a reasonable way, and I'm not the author of the new code.
+
+2008-01-19 12:50  donb
+
+	* packages/acs-mail-lite/tcl/acs-mail-lite-callback-procs.tcl:
+	  Added an explicit blank body to two callbacks added by Malte, so
+	  automated tests will pass.  This is about the third release in
+	  which I've had to do this.  Simply adding &quot;-&quot; after the empty doc
+	  comment block is sufficient, ad_proc treats that as an empty
+	  body.
+
+2008-01-19 12:36  donb
+
+	* packages/acs-templating/tcl/spellcheck-init.tcl: BSD &quot;which&quot;
+	  doesn't return -1 if no path for the given binary exists,
+	  therefore &quot;catch&quot; didn't, therefore (sigh) &quot;bin&quot; was always set
+	  to aspell whether or not it exists.  Same result as the error I
+	  fixed long ago with this init file (see comments) but for a
+	  different reason!
+
+2008-01-19 08:53  daveb
+
+	* packages/acs-templating/: acs-templating.info,
+	  tcl/richtext-procs.tcl: Remove support for RTE.
+
+2008-01-19 03:11  donb
+
 	*
-	  packages/acs-core-docs/www/xml/engineering-standards/docbook-primer.xml:
-	  added documentation strategy section
+	  packages/acs-authentication/tcl/test/acs-authentication-procs.tcl:
+	  Running these test twice would lead to errors, due to test users
+	  not being deleted.  The tear-down stuff knows how to rollback the
+	  database, but caching is a bit beyond its automated capability at
+	  the moment.
 
-2004-11-24 02:13  torbenb
+2008-01-17 09:18  emmar
 
+	* packages/acs-content-repository/tcl/image-procs.tcl: Set default
+	  path for binary to /usr/bin instead of /usr/local/bin
+
+2008-01-16 08:11  victorg
+
+	* packages/acs-kernel/acs-kernel.info: Removing extra &quot;provides&quot;
+	  tag.
+
+2008-01-15 10:29  donb
+
+	* packages/notifications/:
+	  sql/oracle/notifications-package-create.sql,
+	  sql/oracle/upgrade/upgrade-5.4.0d2-5.4.0d3.sql,
+	  tcl/sweep-procs-oracle.xql: It's &quot;sysdate&quot;, not &quot;sysdate()&quot;,
+	  folks :)
+
+2008-01-14 01:35  emmar
+
+	* etc/: config.tcl, daemontools/run: Set the default config for a
+	  debian/ubuntu instalation (as agreed at the OCT)
+
+2008-01-13 07:06  donb
+
+	* packages/notifications/notifications.info: Fixed version number
+
+2008-01-13 05:49  donb
+
+	* packages/notifications/tcl/notification-procs.tcl: Broken for
+	  oracle ... not now though.
+
+2008-01-13 05:17  donb
+
+	* packages/notifications/www/: subscribers-oracle.xql,
+	  subscribers-postgresql.xql, subscribers.tcl, subscribers.xql:
+	  Crap, this script was added with the following problems ...
+
+	  1. called contacts package (fixed previously) 2. embedded PG-only
+	  queries (no xql files, no attempt to make this dotlrn
+	  component work with oracle despite our policy of supporting
+	  oracle) 3. authorship misattributed to tracy adams (copied
+	  another script as a stub),	she wasn't the source of these
+	  problems
+
+2008-01-13 03:25  donb
+
 	*
-	  packages/acs-core-docs/www/xml/engineering-standards/docbook-primer.xml:
-	  added marketing perspective to end-users docs, corrected spelling
-	  mistakes
+	  packages/acs-mail-lite/sql/oracle/upgrade/upgrade-5.4.0d2-5.4.0d3.sql:
+	  Fixed oracle syntax - add doesn't allow &quot;column&quot;, unlike PG
 
-2004-11-23 23:53  torbenb
+2008-01-12 10:33  donb
 
+	* packages/notifications/catalog/: notifications.ch_zh.utf-8.xml,
+	  notifications.cs_CZ.utf-8.xml,
+	  notifications.en_US.ISO-8859-1.xml,
+	  notifications.es_ES.ISO-8859-1.xml,
+	  notifications.zh_CN.utf-8.xml: Merged from 5.3 branch
+
+2008-01-12 10:26  donb
+
+	* packages/notifications/www/: manage.tcl, subscribers.tcl: Malte
+	  FUCKING called his contacts package from the notifications
+	  packages, causing it to break.  Of course there was no requires
+	  tag in the info file so it didn't break until you actually tried
+	  using a package that uses notifications.
+
+	  And even better, there's already a proc in acs-tcl/tcl - an
+	  ancient one - that does the same thing anyway.
+
+2008-01-12 09:23  donb
+
+	* packages/notifications/www/manage.adp: Someone changed the
+	  message key here without bothering to provide a message, so I'm
+	  switching back to the one that exists in something like 15 or so
+	  different languages.
+
+2008-01-12 09:14  donb
+
+	* packages/notifications/tcl/notification-email-procs.tcl: Removed
+	  some custom client code Daveb added
+
+2008-01-12 05:45  donb
+
+	* packages/notifications/notifications.info: This version of
+	  notifications required the latest acs-mail-lite so I updated the
+	  requires tag accordingly, and bumped the version number of
+	  notifications to make clear that something's different.
+
+2008-01-12 05:31  donb
+
+	* packages/notifications/tcl/notification-email-procs.tcl: Fixed
+	  typo, minor clean-up, pass reply_to as switch.  Still needs to be
+	  tested.
+
+2008-01-12 04:55  donb
+
+	* packages/acs-mail-lite/tcl/acs-mail-lite-procs.tcl: Removed these
+	  two procs entirely, since a search of packages and contrib shows
+	  that nothing in our tree uses them (and no package outside of
+	  acs-mail-lite should've used them in the first place).
+
+2008-01-12 04:50  donb
+
+	* packages/notifications/tcl/notification-email-procs.tcl: Switched
+	  from complex_send to send (which now includes the better features
+	  of complex_send)
+
+2008-01-11 06:16  hamiltonc
+
+	* packages/acs-templating/tcl/head-procs.tcl: updated the
+	  headscript multirow with an order column to allow devs to have
+	  some control over which javascript src gets loaded first
+
+2008-01-11 05:52  emmar
+
+	* packages/acs-mail-lite/tcl/acs-mail-lite-procs.tcl: Use DCC
+	  header instead of the BCC one in call to ::smtp::sendmessage
+
+2008-01-11 03:10  emmar
+
+	* packages/acs-mail-lite/tcl/: acs-mail-lite-procs.tcl,
+	  complex-send-procs.tcl: Move complex_smtp to smtp. Mark
+	  ::sendmail and ::deliver_mail as deprecated
+
+2008-01-09 09:25  emmar
+
 	*
-	  packages/acs-core-docs/www/xml/engineering-standards/docbook-primer.xml:
-	  added developer documentation requirements
+	  packages/acs-mail-lite/sql/postgresql/upgrade/upgrade-5.4.0d2-5.4.0d3.sql:
+	  Forgot to rename a column in my previous commit
 
-2004-11-23 20:28  joel
+2008-01-09 08:51  emmar
 
-	* packages/acs-core-docs/www/: xml/releasing-openacs.xml,
-	  releasing-openacs-core.html: fixed typo
+	* packages/acs-mail-lite/: sql/oracle/acs-mail-lite-create.sql,
+	  sql/oracle/upgrade/upgrade-5.4.0d2-5.4.0d3.sql,
+	  sql/postgresql/acs-mail-lite-create.sql,
+	  sql/postgresql/upgrade/upgrade-5.4.0d2-5.4.0d3.sql,
+	  tcl/acs-mail-lite-procs-oracle.xql,
+	  tcl/acs-mail-lite-procs-postgresql.xql,
+	  tcl/acs-mail-lite-procs.xql: Upgrade scripts and fix datamodel
+	  consistency
 
-2004-11-23 12:41  andrewg
+2008-01-09 07:37  emmar
 
-	* www/site-master.adp: Adding a span around the Site Wide Admin
-	  link so that .LRN can hide it via dotlrn-master.css.
+	* packages/acs-mail-lite/sql/oracle/: acs-mail-lite-create.sql,
+	  upgrade/upgrade-5.4.0d1-5.4.0d2.sql: Join upgrade scripts into
+	  one with correct version number.
 
-2004-11-23 12:09  vivianh
+2008-01-09 07:29  emmar
 
+	* packages/acs-mail-lite/sql/postgresql/: acs-mail-lite-create.sql,
+	  upgrade/upgrade-5.4.0d1-5.4.0d2.sql: Join upgrade scripts into
+	  one with correct version number.
+
+2008-01-09 06:35  emmar
+
+	* packages/acs-mail-lite/sql/: oracle/acs-mail-lite-create.sql,
+	  oracle/acs-mail-lite-drop.sql, oracle/complex-create.sql,
+	  oracle/complex-drop.sql, postgresql/acs-mail-lite-create.sql,
+	  postgresql/acs-mail-lite-drop.sql, postgresql/complex-create.sql,
+	  postgresql/complex-drop.sql: Move complex stuff to separated
+	  scripts
+
+2008-01-09 06:31  emmar
+
+	* packages/acs-mail-lite/tcl/complex-send-procs.tcl: Remove
+	  duplicated proc
+
+2008-01-09 05:19  emmar
+
+	* packages/acs-mail-lite/tcl/acs-mail-lite-procs.xql: Remove unused
+	  queries. Remove from generic xql queries that are different for
+	  each db and already in the appropriate xql
+
+2008-01-09 05:02  emmar
+
+	* packages/acs-mail-lite/acs-mail-lite.info: Ooops! forgot to add
+	  the after_upgrade callback in the info file
+
+2008-01-09 04:58  emmar
+
+	* packages/acs-mail-lite/acs-mail-lite.info: Ooops! forgot to add
+	  the after_upgrade callback in the info file
+
+2008-01-09 04:45  emmar
+
+	* packages/acs-mail-lite/: acs-mail-lite.info,
+	  tcl/acs-mail-lite-init.tcl, tcl/acs-mail-lite-procs.tcl,
+	  tcl/apm-callback-procs.tcl, tcl/bounce-procs.tcl: Remove sendmail
+	  procs to use smtp only. Remove SendmailBin parameter (not used
+	  anymore)
+
+2008-01-09 04:11  emmar
+
+	* packages/acs-mail-lite/: acs-mail-lite.info,
+	  tcl/acs-mail-lite-callback-procs.tcl,
+	  tcl/acs-mail-lite-procs-oracle.xql,
+	  tcl/acs-mail-lite-procs-postgresql.xql,
+	  tcl/acs-mail-lite-procs.tcl, tcl/acs-mail-lite-procs.xql,
+	  tcl/utils-procs.tcl: Replace send procs with a refactored version
+	  of complex_send, allowing cc, bcc and attachments
+
+2008-01-09 03:18  emmar
+
+	* packages/acs-mail-lite/tcl/complex-send-procs.tcl: Update calls
+	  to utils procs adding the namespace
+
+2008-01-09 03:10  emmar
+
+	* packages/: acs-mail-lite/tcl/utils-procs.tcl,
+	  acs-tcl/tcl/html-email-procs.tcl: Move helper procs for sending
+	  email to acs-mail-lite
+
+2008-01-08 09:14  emmar
+
+	* packages/acs-templating/tcl/head-procs.tcl: Remove code to
+	  retrieve body event handlers from prepare_multirows (was
+	  unsetting body_handlers and that code is in get_body_handlers
+	  now)
+
+2008-01-08 05:51  daveb
+
+	* www/blank-master.tcl, packages/acs-templating/tcl/head-procs.tcl:
+	  Make template::get_body_event_handlers proc to process the data
+	  added with template::add_body_handler
+
+2008-01-08 02:17  donb
+
+	* packages/acs-templating/tcl/head-procs.tcl, www/blank-master.tcl:
+	  1. template::head::get_footer_html didn't return the html 2.
+	  template::head::get_[header/footer]_html renamed to
+	  template::get_[header/footer]_html because	a. makes sense
+	  b. the &quot;add&quot; procs were in the right namespace so now it's
+	  consistent 3. modifed blank-master to reflect #2
+
+2008-01-08 01:29  emmar
+
+	* www/blank-master.tcl: Added back the code to retrieve
+	  body_handlers (accidently removed)
+
+2008-01-07 11:21  daveb
+
+	* packages/acs-templating/tcl/head-procs.tcl: Fixed prioritization
+	  of CSS. media=all is first.  Changed so unspecificed media goes
+	  to the end. For CSS the default is all so media should always
+	  have a value.
+
+2008-01-07 09:49  daveb
+
+	* packages/acs-templating/tcl/head-procs.tcl: Initial attempt at
+	  ordering CSS links in document head.	There is a question where
+	  media=&quot;all&quot; should go.
+
+2008-01-05 10:35  donb
+
+	* packages/search/lib/navbar.tcl: Removed the &quot;optimization&quot; of
+	  links
+
+2008-01-05 10:31  donb
+
+	* packages/search/lib/navbar.tcl: Off-by-one problem
+
+2008-01-05 09:52  donb
+
+	* packages/search/lib/navbar.adp: Failed with only one result on
+	  the page (something screwy when copying from the client site
+	  where I wrote this originally)
+
+2008-01-05 09:44  donb
+
+	* packages/search/: search.info, lib/navbar.adp, lib/navbar.tcl,
+	  www/search.adp, www/search.tcl: Added smarter navigation bar,
+	  i.e. the list template builder style
+
+2008-01-05 08:28  donb
+
+	* packages/acs-templating/tcl/head-procs.tcl: Fixed typo ...
+
+2008-01-05 06:59  donb
+
+	* packages/acs-templating/tcl/head-procs.tcl: Silly simplification
+	  of a minor bit of this code.
+
+2008-01-04 13:46  daveb
+
+	* www/blank-master.tcl, packages/acs-templating/tcl/head-procs.tcl:
+	  Move template::head specific code into head-procs.tcl.  Fix
+	  add_meta to add meta instead of script!
+
+2008-01-04 08:34  emmar
+
+	* packages/acs-subsite/www/: permissions/perm-include.tcl,
+	  shared/parameters.tcl: HTML Strict cleanup and fix in parameters
+	  page
+
+2008-01-03 11:05  emmar
+
+	* packages/acs-subsite/www/permissions/: perm-include.adp,
+	  perm-include.tcl: HTML Strict cleanup
+
+2007-12-23 06:39  emmar
+
+	* packages/acs-tcl/tcl/table-display-procs.tcl: HTML Strict cleanup
+
+2007-12-21 03:10  emmar
+
+	* packages/notifications/tcl/notification-display-procs.tcl: HTML
+	  Strict cleanup
+
+2007-12-20 04:33  emmar
+
+	* www/: blank-master.tcl, site-master.tcl: Move templating, devsup
+	  and translating stuff to blank-master. Fix footerrendering
+
+2007-12-19 06:05  donb
+
+	* packages/acs-mail-lite/acs-mail-lite.info: Removed the
+	  MMEncodeBin parameter, which is no longer used.
+
+2007-12-19 05:08  emmar
+
+	* www/: blank-master.tcl, site-master.tcl: Move devsup toolbar to
+	  blank-master
+
+2007-12-19 03:09  emmar
+
+	* www/site-master.tcl: Move dotlrn_toolbar to theme-zen (out of
+	  site-master)
+
+2007-12-18 11:52  emmar
+
+	* packages/acs-admin/www/index.adp: Add missing closing @ of the
+	  too_many_subsites_p var
+
+2007-12-17 06:20  emmar
+
+	* packages/acs-templating/tcl/head-procs.tcl: Change default value
+	  to &quot;all&quot; for media in add_css
+
+2007-12-14 11:21  emmar
+
+	* packages/: acs-mail-lite/tcl/complex-send-procs.tcl,
+	  acs-subsite/tcl/party-procs.tcl: Rolling back to the working
+	  version (decided during informal OCT in IRC today)
+
+2007-12-13 10:38  emmar
+
+	* packages/acs-templating/resources/forms/confirm-button.adp: Add a
+	  back button
+
+2007-12-13 10:19  emmar
+
+	* packages/acs-subsite/www/resources/site-master.css: Align
+	  breadcrumbs with system name
+
+2007-12-13 09:22  emmar
+
+	* packages/acs-subsite/acs-subsite.info,
+	  packages/acs-tcl/tcl/navigation-procs.tcl,
+	  www/default-master.adp, www/default-master.tcl: Parameter for
+	  breadcrumbs separator
+
+2007-12-13 06:45  emmar
+
+	* packages/notifications/tcl/notification-display-procs.tcl: Remove
+	  border around the notification icon (aesthetic)
+
+2007-12-11 16:06  gustafn
+
+	* www/: blank-master.tcl, site-master.tcl: - fix curly braces
+	  around on-load actions - fix loading of xinha (moved init to
+	  onload of body) - changed name HTMLarea to Xinha in configuration
+	  calls
+
+2007-12-11 04:08  emmar
+
+	* packages/acs-templating/tcl/date-procs.tcl: HTML strict (nowrap
+	  attribute not allowed)
+
+2007-12-10 05:13  emmar
+
+	* packages/acs-mail-lite/tcl/complex-send-procs.tcl: Add missing
+	  join
+
+2007-12-10 01:12  victorg
+
+	* packages/:
+	  acs-authentication/catalog/acs-authentication.ar_LB.utf-8.xml,
+	  acs-authentication/catalog/acs-authentication.ca_ES.ISO-8859-1.xml,
+	  acs-authentication/catalog/acs-authentication.da_DK.ISO-8859-1.xml,
+	  acs-authentication/catalog/acs-authentication.es_CO.ISO-8859-1.xml,
+	  acs-authentication/catalog/acs-authentication.es_GT.ISO-8859-1.xml,
+	  acs-authentication/catalog/acs-authentication.eu_ES.ISO-8859-1.xml,
+	  acs-authentication/catalog/acs-authentication.fa_IR.utf-8.xml,
+	  acs-authentication/catalog/acs-authentication.fr_FR.ISO-8859-1.xml,
+	  acs-authentication/catalog/acs-authentication.gl_ES.ISO-8859-1.xml,
+	  acs-authentication/catalog/acs-authentication.hi_IN.utf-8.xml,
+	  acs-authentication/catalog/acs-authentication.hu_HU.utf-8.xml,
+	  acs-authentication/catalog/acs-authentication.ind_ID.utf-8.xml,
+	  acs-authentication/catalog/acs-authentication.it_IT.ISO-8859-1.xml,
+	  acs-authentication/catalog/acs-authentication.ms_MY.utf-8.xml,
+	  acs-authentication/catalog/acs-authentication.nl_NL.ISO-8859-1.xml,
+	  acs-authentication/catalog/acs-authentication.nn_NO.ISO-8859-1.xml,
+	  acs-authentication/catalog/acs-authentication.no_NO.ISO-8859-1.xml,
+	  acs-authentication/catalog/acs-authentication.pa_IN.utf-8.xml,
+	  acs-authentication/catalog/acs-authentication.pl_PL.utf-8.xml,
+	  acs-authentication/catalog/acs-authentication.pt_BR.ISO-8859-1.xml,
+	  acs-authentication/catalog/acs-authentication.ro_RO.utf-8.xml,
+	  acs-authentication/catalog/acs-authentication.ru_RU.utf-8.xml,
+	  acs-authentication/catalog/acs-authentication.th_TH.utf-8.xml,
+	  acs-authentication/catalog/acs-authentication.tr_TR.utf-8.xml,
+	  acs-authentication/catalog/acs-authentication.zh_CN.utf-8.xml,
+	  acs-authentication/catalog/acs-authentication.zh_TW.utf-8.xml,
+	  acs-kernel/catalog/acs-kernel.ar_EG.utf-8.xml,
+	  acs-kernel/catalog/acs-kernel.ar_LB.utf-8.xml,
+	  acs-kernel/catalog/acs-kernel.ast_ES.ISO-8859-1.xml,
+	  acs-kernel/catalog/acs-kernel.ca_ES.ISO-8859-1.xml,
+	  acs-kernel/catalog/acs-kernel.da_DK.ISO-8859-1.xml,
+	  acs-kernel/catalog/acs-kernel.es_CO.ISO-8859-1.xml,
+	  acs-kernel/catalog/acs-kernel.es_GT.ISO-8859-1.xml,
+	  acs-kernel/catalog/acs-kernel.eu_ES.ISO-8859-1.xml,
+	  acs-kernel/catalog/acs-kernel.fi_FI.utf-8.xml,
+	  acs-kernel/catalog/acs-kernel.fr_FR.ISO-8859-1.xml,
+	  acs-kernel/catalog/acs-kernel.gl_ES.ISO-8859-1.xml,
+	  acs-kernel/catalog/acs-kernel.hi_IN.utf-8.xml,
+	  acs-kernel/catalog/acs-kernel.hu_HU.utf-8.xml,
+	  acs-kernel/catalog/acs-kernel.it_IT.ISO-8859-1.xml,
+	  acs-kernel/catalog/acs-kernel.ja_JP.utf-8.xml,
+	  acs-kernel/catalog/acs-kernel.ko_KR.utf-8.xml,
+	  acs-kernel/catalog/acs-kernel.ms_MY.utf-8.xml,
+	  acs-kernel/catalog/acs-kernel.nl_NL.ISO-8859-1.xml,
+	  acs-kernel/catalog/acs-kernel.nn_NO.ISO-8859-1.xml,
+	  acs-kernel/catalog/acs-kernel.no_NO.ISO-8859-1.xml,
+	  acs-kernel/catalog/acs-kernel.pa_IN.utf-8.xml,
+	  acs-kernel/catalog/acs-kernel.pl_PL.utf-8.xml,
+	  acs-kernel/catalog/acs-kernel.pt_BR.ISO-8859-1.xml,
+	  acs-kernel/catalog/acs-kernel.pt_PT.ISO-8859-1.xml,
+	  acs-kernel/catalog/acs-kernel.ro_RO.utf-8.xml,
+	  acs-kernel/catalog/acs-kernel.ru_RU.utf-8.xml,
+	  acs-kernel/catalog/acs-kernel.sv_SE.ISO-8859-1.xml,
+	  acs-kernel/catalog/acs-kernel.tr_TR.utf-8.xml,
+	  acs-kernel/catalog/acs-kernel.zh_CN.utf-8.xml,
+	  acs-kernel/catalog/acs-kernel.zh_TW.utf-8.xml,
+	  acs-lang/catalog/acs-lang.ar_EG.utf-8.xml,
+	  acs-lang/catalog/acs-lang.ar_LB.utf-8.xml,
+	  acs-lang/catalog/acs-lang.ast_ES.ISO-8859-1.xml,
+	  acs-lang/catalog/acs-lang.ca_ES.ISO-8859-1.xml,
+	  acs-lang/catalog/acs-lang.da_DK.ISO-8859-1.xml,
+	  acs-lang/catalog/acs-lang.en_GB.ISO-8859-1.xml,
+	  acs-lang/catalog/acs-lang.es_CO.ISO-8859-1.xml,
+	  acs-lang/catalog/acs-lang.es_GT.ISO-8859-1.xml,
+	  acs-lang/catalog/acs-lang.eu_ES.ISO-8859-1.xml,
+	  acs-lang/catalog/acs-lang.fa_IR.utf-8.xml,
+	  acs-lang/catalog/acs-lang.fi_FI.utf-8.xml,
+	  acs-lang/catalog/acs-lang.fr_FR.ISO-8859-1.xml,
+	  acs-lang/catalog/acs-lang.gl_ES.ISO-8859-1.xml,
+	  acs-lang/catalog/acs-lang.hi_IN.utf-8.xml,
+	  acs-lang/catalog/acs-lang.hu_HU.utf-8.xml,
+	  acs-lang/catalog/acs-lang.it_IT.ISO-8859-1.xml,
+	  acs-lang/catalog/acs-lang.ja_JP.utf-8.xml,
+	  acs-lang/catalog/acs-lang.ko_KR.utf-8.xml,
+	  acs-lang/catalog/acs-lang.ms_MY.utf-8.xml,
+	  acs-lang/catalog/acs-lang.nl_NL.ISO-8859-1.xml,
+	  acs-lang/catalog/acs-lang.nn_NO.ISO-8859-1.xml,
+	  acs-lang/catalog/acs-lang.no_NO.ISO-8859-1.xml,
+	  acs-lang/catalog/acs-lang.pa_IN.utf-8.xml,
+	  acs-lang/catalog/acs-lang.pl_PL.utf-8.xml,
+	  acs-lang/catalog/acs-lang.pt_BR.ISO-8859-1.xml,
+	  acs-lang/catalog/acs-lang.pt_PT.ISO-8859-1.xml,
+	  acs-lang/catalog/acs-lang.ro_RO.utf-8.xml,
+	  acs-lang/catalog/acs-lang.ru_RU.utf-8.xml,
+	  acs-lang/catalog/acs-lang.sh_HR.utf-8.xml,
+	  acs-lang/catalog/acs-lang.sv_SE.ISO-8859-1.xml,
+	  acs-lang/catalog/acs-lang.th_TH.utf-8.xml,
+	  acs-lang/catalog/acs-lang.tr_TR.utf-8.xml,
+	  acs-lang/catalog/acs-lang.zh_CN.utf-8.xml,
+	  acs-lang/catalog/acs-lang.zh_TW.utf-8.xml,
+	  acs-mail-lite/catalog/acs-mail-lite.ca_ES.ISO-8859-1.xml,
+	  acs-mail-lite/catalog/acs-mail-lite.de_DE.ISO-8859-1.xml,
+	  acs-mail-lite/catalog/acs-mail-lite.en_US.ISO-8859-1.xml,
+	  acs-mail-lite/catalog/acs-mail-lite.gl_ES.ISO-8859-1.xml,
+	  acs-mail-lite/catalog/acs-mail-lite.nl_NL.ISO-8859-1.xml,
+	  acs-mail-lite/catalog/acs-mail-lite.pl_PL.utf-8.xml,
+	  acs-mail-lite/catalog/acs-mail-lite.pt_BR.ISO-8859-1.xml,
+	  acs-subsite/catalog/acs-subsite.ar_EG.utf-8.xml,
+	  acs-subsite/catalog/acs-subsite.ar_LB.utf-8.xml,
+	  acs-subsite/catalog/acs-subsite.ast_ES.ISO-8859-1.xml,
+	  acs-subsite/catalog/acs-subsite.ca_ES.ISO-8859-1.xml,
+	  acs-subsite/catalog/acs-subsite.da_DK.ISO-8859-1.xml,
+	  acs-subsite/catalog/acs-subsite.en_GB.ISO-8859-1.xml,
+	  acs-subsite/catalog/acs-subsite.es_CO.ISO-8859-1.xml,
+	  acs-subsite/catalog/acs-subsite.es_GT.ISO-8859-1.xml,
+	  acs-subsite/catalog/acs-subsite.eu_ES.ISO-8859-1.xml,
+	  acs-subsite/catalog/acs-subsite.fi_FI.utf-8.xml,
+	  acs-subsite/catalog/acs-subsite.fr_FR.ISO-8859-1.xml,
+	  acs-subsite/catalog/acs-subsite.gl_ES.ISO-8859-1.xml,
+	  acs-subsite/catalog/acs-subsite.hi_IN.utf-8.xml,
+	  acs-subsite/catalog/acs-subsite.hu_HU.utf-8.xml,
+	  acs-subsite/catalog/acs-subsite.it_IT.ISO-8859-1.xml,
+	  acs-subsite/catalog/acs-subsite.ja_JP.utf-8.xml,
+	  acs-subsite/catalog/acs-subsite.ko_KR.utf-8.xml,
+	  acs-subsite/catalog/acs-subsite.ms_MY.utf-8.xml,
+	  acs-subsite/catalog/acs-subsite.nl_NL.ISO-8859-1.xml,
+	  acs-subsite/catalog/acs-subsite.nn_NO.ISO-8859-1.xml,
+	  acs-subsite/catalog/acs-subsite.no_NO.ISO-8859-1.xml,
+	  acs-subsite/catalog/acs-subsite.pa_IN.utf-8.xml,
+	  acs-subsite/catalog/acs-subsite.pl_PL.utf-8.xml,
+	  acs-subsite/catalog/acs-subsite.pt_BR.ISO-8859-1.xml,
+	  acs-subsite/catalog/acs-subsite.pt_PT.ISO-8859-1.xml,
+	  acs-subsite/catalog/acs-subsite.ro_RO.utf-8.xml,
+	  acs-subsite/catalog/acs-subsite.ru_RU.utf-8.xml,
+	  acs-subsite/catalog/acs-subsite.sh_HR.utf-8.xml,
+	  acs-subsite/catalog/acs-subsite.sv_SE.ISO-8859-1.xml,
+	  acs-subsite/catalog/acs-subsite.th_TH.utf-8.xml,
+	  acs-subsite/catalog/acs-subsite.tr_TR.utf-8.xml,
+	  acs-subsite/catalog/acs-subsite.zh_CN.utf-8.xml,
+	  acs-subsite/catalog/acs-subsite.zh_TW.utf-8.xml,
+	  acs-tcl/catalog/acs-tcl.ar_EG.utf-8.xml,
+	  acs-tcl/catalog/acs-tcl.ar_LB.utf-8.xml,
+	  acs-tcl/catalog/acs-tcl.ast_ES.ISO-8859-1.xml,
+	  acs-tcl/catalog/acs-tcl.ca_ES.ISO-8859-1.xml,
+	  acs-tcl/catalog/acs-tcl.da_DK.ISO-8859-1.xml,
+	  acs-tcl/catalog/acs-tcl.es_CO.ISO-8859-1.xml,
+	  acs-tcl/catalog/acs-tcl.es_GT.ISO-8859-1.xml,
+	  acs-tcl/catalog/acs-tcl.eu_ES.ISO-8859-1.xml,
+	  acs-tcl/catalog/acs-tcl.fa_IR.utf-8.xml,
+	  acs-tcl/catalog/acs-tcl.fi_FI.utf-8.xml,
+	  acs-tcl/catalog/acs-tcl.fr_FR.ISO-8859-1.xml,
+	  acs-tcl/catalog/acs-tcl.gl_ES.ISO-8859-1.xml,
+	  acs-tcl/catalog/acs-tcl.hi_IN.utf-8.xml,
+	  acs-tcl/catalog/acs-tcl.hu_HU.utf-8.xml,
+	  acs-tcl/catalog/acs-tcl.ind_ID.utf-8.xml,
+	  acs-tcl/catalog/acs-tcl.it_IT.ISO-8859-1.xml,
+	  acs-tcl/catalog/acs-tcl.ja_JP.utf-8.xml,
+	  acs-tcl/catalog/acs-tcl.ko_KR.utf-8.xml,
+	  acs-tcl/catalog/acs-tcl.ms_MY.utf-8.xml,
+	  acs-tcl/catalog/acs-tcl.nl_NL.ISO-8859-1.xml,
+	  acs-tcl/catalog/acs-tcl.nn_NO.ISO-8859-1.xml,
+	  acs-tcl/catalog/acs-tcl.no_NO.ISO-8859-1.xml,
+	  acs-tcl/catalog/acs-tcl.pl_PL.utf-8.xml,
+	  acs-tcl/catalog/acs-tcl.pt_BR.ISO-8859-1.xml,
+	  acs-tcl/catalog/acs-tcl.pt_PT.ISO-8859-1.xml,
+	  acs-tcl/catalog/acs-tcl.ro_RO.utf-8.xml,
+	  acs-tcl/catalog/acs-tcl.ru_RU.utf-8.xml,
+	  acs-tcl/catalog/acs-tcl.sh_HR.utf-8.xml,
+	  acs-tcl/catalog/acs-tcl.sv_SE.ISO-8859-1.xml,
+	  acs-tcl/catalog/acs-tcl.tr_TR.utf-8.xml,
+	  acs-tcl/catalog/acs-tcl.zh_CN.utf-8.xml,
+	  acs-tcl/catalog/acs-tcl.zh_TW.utf-8.xml,
+	  acs-templating/catalog/acs-templating.ar_LB.utf-8.xml,
+	  acs-templating/catalog/acs-templating.ca_ES.ISO-8859-1.xml,
+	  acs-templating/catalog/acs-templating.da_DK.ISO-8859-1.xml,
+	  acs-templating/catalog/acs-templating.es_CO.ISO-8859-1.xml,
+	  acs-templating/catalog/acs-templating.es_GT.ISO-8859-1.xml,
+	  acs-templating/catalog/acs-templating.eu_ES.ISO-8859-1.xml,
+	  acs-templating/catalog/acs-templating.fi_FI.utf-8.xml,
+	  acs-templating/catalog/acs-templating.fr_FR.ISO-8859-1.xml,
+	  acs-templating/catalog/acs-templating.gl_ES.ISO-8859-1.xml,
+	  acs-templating/catalog/acs-templating.hi_IN.utf-8.xml,
+	  acs-templating/catalog/acs-templating.hu_HU.utf-8.xml,
+	  acs-templating/catalog/acs-templating.it_IT.ISO-8859-1.xml,
+	  acs-templating/catalog/acs-templating.ko_KR.utf-8.xml,
+	  acs-templating/catalog/acs-templating.ms_MY.utf-8.xml,
+	  acs-templating/catalog/acs-templating.nl_NL.ISO-8859-1.xml,
+	  acs-templating/catalog/acs-templating.nn_NO.ISO-8859-1.xml,
+	  acs-templating/catalog/acs-templating.no_NO.ISO-8859-1.xml,
+	  acs-templating/catalog/acs-templating.pa_IN.utf-8.xml,
+	  acs-templating/catalog/acs-templating.pt_BR.ISO-8859-1.xml,
+	  acs-templating/catalog/acs-templating.pt_PT.ISO-8859-1.xml,
+	  acs-templating/catalog/acs-templating.ro_RO.utf-8.xml,
+	  acs-templating/catalog/acs-templating.ru_RU.utf-8.xml,
+	  acs-templating/catalog/acs-templating.sh_HR.utf-8.xml,
+	  acs-templating/catalog/acs-templating.sv_SE.ISO-8859-1.xml,
+	  acs-templating/catalog/acs-templating.tr_TR.utf-8.xml,
+	  acs-templating/catalog/acs-templating.zh_CN.utf-8.xml,
+	  acs-templating/catalog/acs-templating.zh_TW.utf-8.xml,
+	  notifications/catalog/notifications.ar_EG.utf-8.xml,
+	  notifications/catalog/notifications.ar_LB.utf-8.xml,
+	  notifications/catalog/notifications.ast_ES.ISO-8859-1.xml,
+	  notifications/catalog/notifications.ca_ES.ISO-8859-1.xml,
+	  notifications/catalog/notifications.da_DK.ISO-8859-1.xml,
+	  notifications/catalog/notifications.de_DE.ISO-8859-1.xml,
+	  notifications/catalog/notifications.el_GR.utf-8.xml,
+	  notifications/catalog/notifications.en_US.ISO-8859-1.xml,
+	  notifications/catalog/notifications.es_CO.ISO-8859-1.xml,
+	  notifications/catalog/notifications.es_GT.ISO-8859-1.xml,
+	  notifications/catalog/notifications.eu_ES.ISO-8859-1.xml,
+	  notifications/catalog/notifications.fi_FI.utf-8.xml,
+	  notifications/catalog/notifications.fr_FR.ISO-8859-1.xml,
+	  notifications/catalog/notifications.gl_ES.ISO-8859-1.xml,
+	  notifications/catalog/notifications.hi_IN.utf-8.xml,
+	  notifications/catalog/notifications.hu_HU.utf-8.xml,
+	  notifications/catalog/notifications.it_IT.ISO-8859-1.xml,
+	  notifications/catalog/notifications.ko_KR.utf-8.xml,
+	  notifications/catalog/notifications.ms_MY.utf-8.xml,
+	  notifications/catalog/notifications.nl_NL.ISO-8859-1.xml,
+	  notifications/catalog/notifications.nn_NO.ISO-8859-1.xml,
+	  notifications/catalog/notifications.no_NO.ISO-8859-1.xml,
+	  notifications/catalog/notifications.pl_PL.utf-8.xml,
+	  notifications/catalog/notifications.pt_BR.ISO-8859-1.xml,
+	  notifications/catalog/notifications.pt_PT.ISO-8859-1.xml,
+	  notifications/catalog/notifications.ro_RO.utf-8.xml,
+	  notifications/catalog/notifications.ru_RU.utf-8.xml,
+	  notifications/catalog/notifications.sv_SE.ISO-8859-1.xml,
+	  notifications/catalog/notifications.zh_CN.utf-8.xml,
+	  search/catalog/search.nl_NL.ISO-8859-1.xml,
+	  search/catalog/search.pl_PL.utf-8.xml,
+	  search/catalog/search.pt_BR.ISO-8859-1.xml: Import of message
+	  keys from translation server for core and .LRN packages.  This
+	  catalogs have no package version info. Check
+	  http://openacs.org/forums/message-view?message%5fid=1007666
+
+2007-12-06 11:02  daveb
+
+	* packages/acs-tcl/tcl/html-email-procs.tcl: Don't fail on poorly
+	  formed mime message. If an error occurs and the mime tokens are
+	  not cleaned up, all subsequent calls to mime procs will end up
+	  with mismatched mime parts.
+
+2007-12-06 10:50  daveb
+
+	* packages/acs-templating/tcl/head-procs.tcl, www/blank-master.tcl:
+	  Always treat body handlers as list. Fix focus to use identifier.
+	  There can only be one focus.
+
+2007-12-06 10:33  daveb
+
+	* www/blank-master.tcl: Don't use identifier, its not needed for
+	  focus since we only call it once.
+
+2007-12-06 10:26  daveb
+
+	* packages/acs-mail-lite/tcl/complex-send-procs.tcl: Fix typo,
+	  llength spelled incorrectly.
+
+2007-12-06 09:02  emmar
+
+	* www/blank-master.tcl: Fix namespace for add_body_handler
+
+2007-12-05 09:10  daveb
+
+	* www/site-master.adp: Fix stupid typo!
+
+2007-12-05 03:06  emmar
+
+	* packages/notifications/catalog/notifications.el_GR.utf-8.xml:
+	  Greek catalogs for dotlrn
+
+2007-12-05 00:26  maltes
+
+	* packages/acs-mail-lite/tcl/complex-send-procs.tcl: Cleaned up
+	  complex_send, broke it down into multiple parts, refactored
+	  repetitive things into foreach loops, made sure rollout support
+	  is handled in complex_smtp, thopugh I have no idea how to do the
+	  filters there.... This is in need of testing and should only act
+	  as a commit for the OCT to decide if this is going in the right
+	  direction.
+
+2007-12-05 00:23  maltes
+
+	* packages/acs-subsite/tcl/: email-image-procs.xql,
+	  party-procs.tcl: Added procedure to resolve the party_ids if they
+	  contain groups
+
+2007-12-03 12:29  daveb
+
+	* www/: blank-compat.tcl, blank-master.tcl, site-master.adp: Move
+	  focus handling to blank master. Use add_body_handler to set it.
+	  Pass focus up to blank master.
+
+2007-12-03 12:18  daveb
+
+	* www/: blank-master.adp, blank-master.tcl, default-master.adp,
+	  default-master.tcl: Remove properties not used in default master.
+	  Remove link multirow in default master, its not used.  Add
+	  skip_link property
+
+2007-12-03 12:17  daveb
+
+	* packages/acs-subsite/www/: group-master.adp, group-master.tcl:
+	  Remove reference to unused properties. These are generated in
+	  blank-master now.
+
+2007-12-03 12:01  daveb
+
+	* packages/acs-subsite/www/group-master.tcl: Remove header_stuff
+	  code, we aren't using it anyway.  Remove reference to unused
+	  stylesheet, hasn't been used since 2003.
+
+2007-11-30 10:16  daveb
+
+	* packages/: acs-admin/www/users/merge.adp,
+	  acs-admin/www/users/merge.tcl,
+	  acs-automated-testing/www/admin/testcase.adp,
+	  acs-automated-testing/www/admin/testcase.tcl,
+	  acs-subsite/www/register/index.adp,
+	  acs-subsite/www/register/index.tcl,
+	  acs-templating/tcl/head-procs.tcl: Remove header stuff from core.
+	  Use template::head procedures.  Add template::head::add_style to
+	  add inline styles.
+
+2007-11-29 15:18  emmar
+
+	* packages/acs-mail-lite/tcl/complex-send-procs.tcl: Fix message
+	  initialization. Was failing in case the message has no
+	  alternative and no attachament. In case the message has an
+	  alternative and no attachment, it was initialized twice.
+
+2007-11-29 09:35  maltes
+
+	* packages/acs-mail-lite/tcl/complex-send-procs.tcl: I think I
+	  fixed the problem with multipart/mixed of e-mails with no
+	  attachments. This should be tested though. I am putting this out
+	  to see if I might have a mismatch in my train of thought.
+
+2007-11-29 09:04  maltes
+
+	* packages/acs-mail-lite/tcl/complex-send-procs.tcl: Fixed the
+	  confusion about single_email_p in complex_send_immediately using
+	  the defaults which make most sense. Fixed documentation
+	  accordingly
+
+2007-11-29 06:21  emmar
+
+	* packages/acs-mail-lite/tcl/complex-send-procs.tcl: Fix malformed
+	  date and encode subject (using helper procs). Set the charset for
+	  message body (utf-8)
+
+2007-11-29 06:19  emmar
+
+	* packages/acs-tcl/tcl/html-email-procs.tcl: Helper procs to encode
+	  the subject and format the date for an email message
+
+2007-11-28 11:58  emmar
+
+	* packages/acs-tcl/tcl/html-email-procs.tcl: Add build_subject proc
+	  that encodes a string to be used as subject in an email message
+
+2007-11-28 05:07  emmar
+
+	* packages/acs-tcl/tcl/html-email-procs.tcl: TIP 117: remove
+	  md5-procs since it's available in tcllib
+
+2007-11-28 05:04  emmar
+
+	* packages/acs-mail-lite/tcl/complex-send-procs.tcl: Turn
+	  ds_comment into ns_log debug
+
+2007-11-28 03:31  emmar
+
+	* packages/acs-subsite/: catalog/acs-subsite.en_US.ISO-8859-1.xml,
+	  www/group-master.adp, www/site-map/index.tcl: HTML Strict
+	  cleanup, last shot for core :)
+
+2007-11-27 14:27  emmar
+
+	* packages/search/search.info: Remove mal-formed and unused param.
+	  Bump version.
+
+2007-11-27 14:16  emmar
+
+	* packages/search/www/: advanced-search.adp, index.adp, search.adp,
+	  search.tcl, resources/search.css: HTML Strict cleanup
+
+2007-11-27 12:29  emmar
+
+	* packages/acs-subsite/www/: members/index.adp,
+	  shared/community-member.adp: HTML strict cleanup
+
+2007-11-27 12:18  emmar
+
+	* packages/acs-subsite/: catalog/acs-subsite.en_US.ISO-8859-1.xml,
+	  www/user/portrait/erase.adp, www/user/portrait/erase.tcl,
+	  www/user/portrait/erase.xql: Change to use form builder
+
+2007-11-27 11:29  emmar
+
+	* packages/acs-subsite/www/user/portrait/: comment-edit.tcl,
+	  upload-oracle.xql, upload-postgresql.xql, upload.adp, upload.tcl:
+	  Change to use form builder
+
+2007-11-27 10:02  emmar
+
+	* packages/acs-subsite/www/user/portrait/: comment-edit.adp,
+	  comment-edit.tcl, comment-edit.xql: Change to use form builder
+
+2007-11-27 09:00  emmar
+
+	* packages/acs-subsite/www/user/portrait/: comment-edit.tcl,
+	  comment-edit.xql: Replace english text with message keys. Extract
+	  sql to xql file
+
+2007-11-27 06:51  emmar
+
+	* packages/acs-subsite/www/user/portrait/: upload.adp, upload.tcl:
+	  Replace english text with message keys
+
+2007-11-27 05:23  emmar
+
+	* packages/acs-subsite/www/user/portrait/upload.tcl: Replace
+	  english text with message keys
+
+2007-11-24 07:35  gustafn
+
+	* packages/acs-templating/www/resources/xinha-nightly/:
+	  XinhaCore.js, htmlarea.js, release-notes.txt,
+	  contrib/lc_parse_strings.php, examples/Extended.html,
+	  examples/Newbie.html, examples/XinhaConfig.js,
+	  examples/custom.css, examples/dynamic.css,
+	  examples/ext_example-body.html, examples/ext_example-dest.php,
+	  examples/ext_example-menu.php, examples/ext_example.html,
+	  examples/full_example.css, examples/full_example.js,
+	  examples/simple_example.html, examples/stylist.css,
+	  examples/testbed.html, lang/b5.js, lang/ch.js, lang/cz.js,
+	  lang/da.js, lang/de.js, lang/ee.js, lang/el.js, lang/es.js,
+	  lang/fi.js, lang/fr.js, lang/gb.js, lang/he.js, lang/hu.js,
+	  lang/it.js, lang/lt.js, lang/lv.js, lang/nb.js, lang/nl.js,
+	  lang/pt_br.js, lang/ro.js, lang/ru.js, lang/si.js, lang/th.js,
+	  lang/vn.js, modules/ColorPicker/ColorPicker.js,
+	  modules/ColorPicker/lang/pt_br.js, modules/CreateLink/link.js,
+	  modules/CreateLink/lang/pt_br.js, modules/Dialogs/dialog.js,
+	  modules/Dialogs/inline-dialog.js,
+	  modules/Dialogs/panel-dialog.js, modules/Dialogs/popupwin.js,
+	  modules/FullScreen/full-screen.js,
+	  modules/FullScreen/lang/pt_br.js, modules/Gecko/Gecko.js,
+	  modules/Gecko/paraHandlerBest.js,
+	  modules/Gecko/paraHandlerDirty.js, modules/Gecko/lang/pt_br.js,
+	  modules/GetHtml/DOMwalk.js,
+	  modules/GetHtml/TransformInnerHTML.js,
+	  modules/GetHtml/lang/pt_br.js,
+	  modules/InsertImage/insert_image.html,
+	  modules/InsertImage/insert_image.js,
+	  modules/InsertTable/insert_table.html,
+	  modules/InsertTable/insert_table.js,
+	  modules/InternetExplorer/InternetExplorer.js,
+	  plugins/Abbreviation/abbreviation.js,
+	  plugins/Abbreviation/lang/nl.js,
+	  plugins/Abbreviation/lang/pt_br.js,
+	  plugins/Abbreviation/popups/abbreviation.html,
+	  plugins/BackgroundImage/background-image.js,
+	  plugins/BackgroundImage/lang/nl.js,
+	  plugins/BackgroundImage/lang/pt_br.js,
+	  plugins/BackgroundImage/popups/bgimage.html, plugins/CSS/css.js,
+	  plugins/CharCounter/char-counter.js,
+	  plugins/CharCounter/lang/nl.js,
+	  plugins/CharCounter/lang/pt_br.js,
+	  plugins/CharacterMap/character-map.js,
+	  plugins/CharacterMap/lang/de.js,
+	  plugins/CharacterMap/lang/pt_br.js,
+	  plugins/CharacterMap/popups/select_character.html,
+	  plugins/ClientsideSpellcheck/clientside-spellcheck.js,
+	  plugins/ClientsideSpellcheck/lang/nl.js,
+	  plugins/ClientsideSpellcheck/lang/pt_br.js,
+	  plugins/ContextMenu/1.pl, plugins/ContextMenu/context-menu.js,
+	  plugins/ContextMenu/lang/de.js, plugins/ContextMenu/lang/el.js,
+	  plugins/ContextMenu/lang/fr.js, plugins/ContextMenu/lang/he.js,
+	  plugins/ContextMenu/lang/nl.js,
+	  plugins/ContextMenu/lang/pt_br.js,
+	  plugins/DefinitionList/definition-list.js,
+	  plugins/DefinitionList/lang/nl.js,
+	  plugins/DefinitionList/lang/pt_br.js,
+	  plugins/DoubleClick/double-click.js,
+	  plugins/DynamicCSS/dynamiccss.js, plugins/DynamicCSS/lang/de.js,
+	  plugins/DynamicCSS/lang/fr.js, plugins/DynamicCSS/lang/pt_br.js,
+	  plugins/EditTag/edit-tag.js, plugins/EditTag/lang/nl.js,
+	  plugins/EditTag/lang/pt_br.js, plugins/Equation/ASCIIMathML.js,
+	  plugins/Equation/equation.js, plugins/Equation/example.html,
+	  plugins/Equation/lang/de.js, plugins/Equation/lang/nl.js,
+	  plugins/Equation/lang/pt_br.js,
+	  plugins/Equation/popups/dialog.html,
+	  plugins/ExtendedFileManager/extended-file-manager.js,
+	  plugins/ExtendedFileManager/images.php,
+	  plugins/ExtendedFileManager/manager.php,
+	  plugins/ExtendedFileManager/resizer.php,
+	  plugins/ExtendedFileManager/Classes/ExtendedFileManager.php,
+	  plugins/ExtendedFileManager/assets/EditorContent.js,
+	  plugins/ExtendedFileManager/assets/dialog.js,
+	  plugins/ExtendedFileManager/assets/editor.js,
+	  plugins/ExtendedFileManager/assets/editorFrame.js,
+	  plugins/ExtendedFileManager/assets/images.js,
+	  plugins/ExtendedFileManager/assets/manager.js,
+	  plugins/ExtendedFileManager/assets/popup.js,
+	  plugins/ExtendedFileManager/assets/wz_jsgraphics.js,
+	  plugins/ExtendedFileManager/demo_images/.htaccess,
+	  plugins/ExtendedFileManager/lang/de.js,
+	  plugins/ExtendedFileManager/lang/ja.js,
+	  plugins/ExtendedFileManager/lang/nb.js,
+	  plugins/ExtendedFileManager/lang/nl.js,
+	  plugins/ExtendedFileManager/lang/pl.js,
+	  plugins/ExtendedFileManager/lang/pt_br.js,
+	  plugins/Filter/filter.js, plugins/Filter/lang/nl.js,
+	  plugins/Filter/lang/pt_br.js,
+	  plugins/FindReplace/find-replace.js,
+	  plugins/FindReplace/fr_engine.js, plugins/FindReplace/lang/nl.js,
+	  plugins/FindReplace/lang/pt_br.js,
+	  plugins/FormOperations/form-operations.js,
+	  plugins/FormOperations/panel.html,
+	  plugins/FormOperations/lang/nl.js,
+	  plugins/FormOperations/lang/pt_br.js, plugins/Forms/forms.js,
+	  plugins/Forms/lang/nl.js, plugins/Forms/lang/pt_br.js,
+	  plugins/Forms/popups/fieldset.html,
+	  plugins/Forms/popups/form.html, plugins/Forms/popups/input.html,
+	  plugins/Forms/popups/label.html,
+	  plugins/Forms/popups/select.html,
+	  plugins/Forms/popups/textarea.html,
+	  plugins/FullPage/full-page.js, plugins/FullPage/lang/de.js,
+	  plugins/FullPage/lang/fr.js, plugins/FullPage/lang/he.js,
+	  plugins/FullPage/lang/pt_br.js, plugins/FullPage/lang/ro.js,
+	  plugins/FullPage/popups/docprop.html,
+	  plugins/FullScreen/lang/pt_br.js,
+	  plugins/HorizontalRule/horizontal-rule.js,
+	  plugins/HorizontalRule/lang/nl.js,
+	  plugins/HorizontalRule/lang/pt_br.js,
+	  plugins/HtmlTidy/html-tidy-logic.php,
+	  plugins/HtmlTidy/html-tidy.js, plugins/HtmlTidy/lang/pt_br.js,
+	  plugins/ImageManager/config.inc.php,
+	  plugins/ImageManager/editor.php,
+	  plugins/ImageManager/editorFrame.php,
+	  plugins/ImageManager/image-manager.js,
+	  plugins/ImageManager/image-picker.js,
+	  plugins/ImageManager/images.php,
+	  plugins/ImageManager/manager.php,
+	  plugins/ImageManager/resizer.php,
+	  plugins/ImageManager/thumbs.php,
+	  plugins/ImageManager/Classes/Files.php,
+	  plugins/ImageManager/Classes/GD.php,
+	  plugins/ImageManager/Classes/IM.php,
+	  plugins/ImageManager/Classes/ImageEditor.php,
+	  plugins/ImageManager/Classes/ImageManager.php,
+	  plugins/ImageManager/Classes/NetPBM.php,
+	  plugins/ImageManager/Classes/Thumbnail.php,
+	  plugins/ImageManager/Classes/Transform.php,
+	  plugins/ImageManager/assets/EditorContent.js,
+	  plugins/ImageManager/assets/dialog.js,
+	  plugins/ImageManager/assets/editor.js,
+	  plugins/ImageManager/assets/editorFrame.js,
+	  plugins/ImageManager/assets/images.js,
+	  plugins/ImageManager/assets/manager.js,
+	  plugins/ImageManager/assets/popup.js,
+	  plugins/ImageManager/assets/wz_jsgraphics.js,
+	  plugins/ImageManager/lang/nl.js,
+	  plugins/ImageManager/lang/pt_br.js,
+	  plugins/InsertAnchor/insert-anchor.js,
+	  plugins/InsertAnchor/lang/pt_br.js,
+	  plugins/InsertMarquee/insert-marquee.js,
+	  plugins/InsertMarquee/lang/nl.js,
+	  plugins/InsertMarquee/lang/pt_br.js,
+	  plugins/InsertMarquee/popups/insert_marquee.html,
+	  plugins/InsertPagebreak/insert-pagebreak.js,
+	  plugins/InsertPagebreak/lang/nl.js,
+	  plugins/InsertPagebreak/lang/pt_br.js,
+	  plugins/InsertPicture/lang/nl.js,
+	  plugins/InsertPicture/lang/pt_br.js,
+	  plugins/InsertSmiley/README.txt,
+	  plugins/InsertSmiley/insert-smiley.js,
+	  plugins/InsertSmiley/smileys.txt,
+	  plugins/InsertSmiley/lang/nl.js,
+	  plugins/InsertSmiley/lang/pt_br.js,
+	  plugins/InsertSmiley/popups/insertsmiley.html,
+	  plugins/InsertSnippet/insert-snippet.js,
+	  plugins/InsertSnippet/lang/nl.js,
+	  plugins/InsertSnippet/lang/pt_br.js,
+	  plugins/InsertSnippet/popups/insertsnippet.html,
+	  plugins/LangMarks/lang-marks.js, plugins/LangMarks/lang/pt_br.js,
+	  plugins/Linker/dialog.html, plugins/Linker/linker.js,
+	  plugins/Linker/scan.php, plugins/Linker/dTree/api.html,
+	  plugins/Linker/dTree/dtree.js,
+	  plugins/Linker/dTree/example01.html, plugins/Linker/lang/nl.js,
+	  plugins/Linker/lang/pt_br.js, plugins/ListType/list-type.js,
+	  plugins/ListType/lang/de.js, plugins/ListType/lang/pt_br.js,
+	  plugins/NoteServer/note-server.js, plugins/NoteServer/lang/nl.js,
+	  plugins/NoteServer/lang/pt_br.js,
+	  plugins/NoteServer/popups/codenote.html,
+	  plugins/PasteText/lang/nl.js, plugins/PasteText/lang/pt_br.js,
+	  plugins/PasteText/popups/paste_text.html,
+	  plugins/QuickTag/quick-tag.js, plugins/QuickTag/tag-lib.js,
+	  plugins/QuickTag/lang/nl.js, plugins/QuickTag/lang/pt_br.js,
+	  plugins/SaveSubmit/save-submit.js, plugins/SaveSubmit/lang/nl.js,
+	  plugins/SaveSubmit/lang/pt_br.js, plugins/SetId/set-id.js,
+	  plugins/SetId/lang/nl.js, plugins/SetId/lang/pt_br.js,
+	  plugins/SmartReplace/smart-replace.js,
+	  plugins/SmartReplace/lang/nl.js,
+	  plugins/SmartReplace/lang/pt_br.js,
+	  plugins/SpellChecker/aspell_setup.php,
+	  plugins/SpellChecker/readme-tech.html,
+	  plugins/SpellChecker/spell-check-logic.cgi,
+	  plugins/SpellChecker/spell-check-logic.php,
+	  plugins/SpellChecker/spell-check-savedicts.php,
+	  plugins/SpellChecker/spell-check-ui.html,
+	  plugins/SpellChecker/spell-check-ui.js,
+	  plugins/SpellChecker/spell-checker.js,
+	  plugins/SpellChecker/lang/cz.js, plugins/SpellChecker/lang/da.js,
+	  plugins/SpellChecker/lang/de.js, plugins/SpellChecker/lang/he.js,
+	  plugins/SpellChecker/lang/hu.js, plugins/SpellChecker/lang/nl.js,
+	  plugins/SpellChecker/lang/pt_br.js,
+	  plugins/SpellChecker/lang/ro.js, plugins/Stylist/stylist.js,
+	  plugins/Stylist/lang/nl.js, plugins/Stylist/lang/pt_br.js,
+	  plugins/SuperClean/super-clean.js, plugins/SuperClean/tidy.php,
+	  plugins/SuperClean/lang/nl.js, plugins/SuperClean/lang/pt_br.js,
+	  plugins/TableOperations/table-operations.js,
+	  plugins/TableOperations/lang/cz.js,
+	  plugins/TableOperations/lang/da.js,
+	  plugins/TableOperations/lang/de.js,
+	  plugins/TableOperations/lang/el.js,
+	  plugins/TableOperations/lang/fi.js,
+	  plugins/TableOperations/lang/fr.js,
+	  plugins/TableOperations/lang/he.js,
+	  plugins/TableOperations/lang/it.js,
+	  plugins/TableOperations/lang/ja.js,
+	  plugins/TableOperations/lang/nb.js,
+	  plugins/TableOperations/lang/nl.js,
+	  plugins/TableOperations/lang/pl.js,
+	  plugins/TableOperations/lang/pt_br.js,
+	  plugins/TableOperations/lang/ro.js,
+	  plugins/TableOperations/lang/ru.js,
+	  plugins/TableOperations/lang/sv.js,
+	  plugins/TableOperations/popups/merge_cells.html,
+	  plugins/Template/template.js, plugins/Template/lang/de.js,
+	  plugins/Template/lang/it.js, plugins/Template/lang/nl.js,
+	  plugins/Template/lang/pt_br.js,
+	  plugins/Template/popups/template.html,
+	  plugins/UnFormat/un-format.js, plugins/UnFormat/lang/pt_br.js,
+	  popups/about.html, popups/blank.html, popups/editor_help.html,
+	  popups/popup.js, popups/select_color.html, skins/silva/skin.css:
+	  Update Xinha to: Stable Xinha 0.94 (2007-10-18)
+
+2007-11-23 08:19  emmar
+
+	* packages/acs-mail-lite/tcl/: acs-mail-lite-callback-procs.tcl,
+	  acs-mail-lite-procs.tcl, bounce-procs.tcl,
+	  complex-send-procs.tcl: Indent code
+
+2007-11-23 03:02  gustafn
+
+	* packages/acs-authentication/tcl/authentication-procs.tcl:  -
+	  ensure, the login window is displayed, when the computed URL is
+	  too long
+	   - improve hint message
+
+2007-11-22 12:26  gustafn
+
+	* packages/acs-api-browser/tcl/acs-api-documentation-procs.tcl:
+	  ensure that the tcl-proc-view script of /api-doc/ is called (does
+	  not work perfectly for ns_* commands either)
+
+2007-11-21 09:01  emmar
+
+	* packages/acs-subsite/www/user/portrait/: comment-edit.adp,
+	  erase.adp, index.adp, upload.adp, upload.tcl: HTML 4.01 strict
+	  cleanup
+
+2007-11-21 09:01  emmar
+
+	* packages/acs-subsite/www/user/portrait/upload.xql: Extracting
+	  embedded sql
+
+2007-11-21 06:08  emmar
+
+	* packages/: acs-admin/www/apm/package-add.tcl,
+	  acs-admin/www/apm/packages-install.tcl,
+	  acs-admin/www/apm/version-dependency-add.tcl,
+	  acs-admin/www/apm/version-edit.tcl,
+	  acs-bootstrap-installer/installer/index.tcl,
+	  acs-core-docs/www/files/dotlrn-style-1.html,
+	  acs-mail-lite/lib/email.adp, acs-subsite/lib/home.adp,
+	  acs-subsite/lib/login.adp,
+	  acs-subsite/www/admin/applications/index.adp,
+	  acs-subsite/www/admin/applications/index.tcl,
+	  acs-subsite/www/admin/site-map/index.adp,
+	  acs-subsite/www/admin/site-map/index.tcl,
+	  acs-subsite/www/admin/site-map/site-map.adp,
+	  acs-subsite/www/site-map/index.adp, acs-tcl/lib/progress-bar.adp,
+	  acs-tcl/lib/static-progress-bar.adp, acs-tcl/tcl/defs-procs.tcl,
+	  acs-tcl/tcl/navigation-procs.tcl,
+	  acs-tcl/tcl/utilities-procs.tcl,
+	  acs-templating/resources/forms/accessible-forms.adp,
+	  acs-templating/resources/forms/inline.adp,
+	  acs-templating/resources/forms/standard.adp,
+	  acs-templating/resources/lists/table.adp,
+	  acs-templating/tcl/form-procs.tcl,
+	  acs-templating/tcl/paginator-procs.tcl,
+	  acs-templating/tcl/richtext-or-file-procs.tcl,
+	  acs-templating/tcl/richtext-procs.tcl: HTML 4.01 Strict cleanup
+
+2007-11-21 06:07  emmar
+
+	* www/: blank-compat.adp, blank-master.tcl: Set HTML 4.01 Strict as
+	  default doctype
+
+2007-11-21 00:25  gustafn
+
+	* packages/acs-templating/resources/forms/confirm-button.adp: fix
+	  bug #3104
+
+2007-11-19 14:09  emmar
+
+	* packages/: acs-admin/catalog/acs-admin.el_GR.utf-8.xml,
+	  acs-admin/catalog/acs-admin.es_ES.ISO-8859-1.xml,
+	  acs-authentication/catalog/acs-authentication.el_GR.utf-8.xml,
+	  acs-authentication/catalog/acs-authentication.es_ES.ISO-8859-1.xml,
+	  acs-kernel/catalog/acs-kernel.el_GR.utf-8.xml,
+	  acs-kernel/catalog/acs-kernel.es_ES.ISO-8859-1.xml,
+	  acs-lang/catalog/acs-lang.el_GR.utf-8.xml,
+	  acs-lang/catalog/acs-lang.es_ES.ISO-8859-1.xml,
+	  acs-mail-lite/catalog/acs-mail-lite.el_GR.utf-8.xml,
+	  acs-mail-lite/catalog/acs-mail-lite.es_ES.ISO-8859-1.xml,
+	  acs-subsite/catalog/acs-subsite.el_GR.utf-8.xml,
+	  acs-subsite/catalog/acs-subsite.es_ES.ISO-8859-1.xml,
+	  acs-tcl/catalog/acs-tcl.el_GR.utf-8.xml,
+	  acs-tcl/catalog/acs-tcl.es_ES.ISO-8859-1.xml,
+	  acs-templating/catalog/acs-templating.el_GR.utf-8.xml,
+	  acs-templating/catalog/acs-templating.es_ES.ISO-8859-1.xml,
+	  notifications/catalog/notifications.el_GR.utf-8.xml,
+	  notifications/catalog/notifications.es_ES.ISO-8859-1.xml,
+	  search/catalog/search.el_GR.utf-8.xml,
+	  search/catalog/search.es_ES.ISO-8859-1.xml: Greek and spanish
+	  catalogs without version number (applying Don's change)
+
+2007-11-19 13:25  emmar
+
+	* packages/acs-kernel/catalog/acs-kernel.el_GR.utf-8.xml: More
+	  greek translations
+
+2007-11-19 13:05  emmar
+
+	* packages/acs-tcl/lib/: ad-return-complaint.adp,
+	  static-progress-bar.adp: Fix HTML and master
+
+2007-11-19 13:02  emmar
+
+	* packages/acs-tcl/catalog/acs-tcl.el_GR.utf-8.xml: Add greek
+	  catalog
+
+2007-11-19 12:55  emmar
+
 	*
-	  packages/acs-subsite/sql/postgresql/upgrade/upgrade-5.1.2-5.1.3.sql:
-	  add support for upgrade
+	  packages/acs-authentication/catalog/acs-authentication.el_GR.utf-8.xml:
+	  Update greek catalog
 
-2004-11-23 12:07  vivianh
+2007-11-19 12:52  emmar
 
-	* packages/acs-subsite/sql/postgresql/: acs-subsite-create.sql,
-	  acs-subsite-drop.sql, site-node-selection-drop.sql,
-	  site-node-selection.sql: add suppor table for site-map creation
+	* packages/acs-subsite/www/site-map/index.adp: Fix HTML
 
-2004-11-23 12:05  vivianh
+2007-11-19 12:39  emmar
 
-	* packages/acs-subsite/sql/oracle/upgrade/upgrade-5.1.2-5.1.3.sql:
-	  upgrade support
+	* packages/acs-subsite/catalog/acs-subsite.el_GR.utf-8.xml: More
+	  greek translations
 
-2004-11-23 12:04  vivianh
+2007-11-19 12:34  emmar
 
-	* packages/acs-subsite/sql/oracle/: acs-subsite-drop.sql,
-	  site-node-selection-drop.sql: drop support
+	* packages/acs-lang/catalog/acs-lang.el_GR.utf-8.xml: More greek
+	  translations
 
-2004-11-23 12:01  vivianh
+2007-11-19 12:17  emmar
 
-	* packages/acs-subsite/sql/oracle/: acs-subsite-create.sql,
-	  site-node-selection.sql: add table to support site-map creation
+	* packages/acs-mail-lite/catalog/acs-mail-lite.el_GR.utf-8.xml: Add
+	  greek catalog
 
-2004-11-23 10:49  vivianh
+2007-11-19 12:13  emmar
 
-	* packages/acs-subsite/www/admin/site-map/: allow-for-view.tcl,
-	  allow-for-view.xql, site-map-oracle.xql, site-map-postgresql.xql,
-	  site-map.adp, site-map.tcl: add files to support site-map
-	  creation
+	* packages/acs-mail-lite/catalog/:
+	  acs-mail-lite.ca_ES.ISO-8859-1.xml,
+	  acs-mail-lite.es_ES.ISO-8859-1.xml,
+	  acs-mail-lite.gl_ES.ISO-8859-1.xml,
+	  acs-mail-lite.nl_NL.ISO-8859-1.xml,
+	  acs-mail-lite.nl_ZA.ISO-8859-1.xml,
+	  acs-mail-lite.pl_PL.utf-8.xml,
+	  acs-mail-lite.pt_BR.ISO-8859-1.xml: Merging missing catalogs from
+	  5.3
 
-2004-11-23 10:46  vivianh
+2007-11-19 11:35  emmar
 
-	* packages/acs-subsite/www/admin/site-map/index.adp: add link for
-	  build site-map
+	* packages/acs-templating/resources/: forms/accessible-forms.adp,
+	  forms/standard.adp, lists/table.adp: Fix HTML and add missing alt
+	  text
 
-2004-11-23 10:28  vivianh
+2007-11-19 11:33  emmar
 
-	* packages/acs-subsite/www/resources/default-master.css: add css
-	  for new calendar widget
+	* packages/acs-templating/catalog/acs-templating.el_GR.utf-8.xml:
+	  More greek translations
 
-2004-11-23 10:28  vivianh
+2007-11-19 11:21  emmar
 
-	* packages/acs-subsite/www/resources/core.js: add Javascript for
-	  new calendar widget
+	* packages/search/: lib/search.adp, www/index.adp, www/search.adp:
+	  Fixed context bar and HTML
 
-2004-11-22 16:29  enriquec
+2007-11-19 11:20  emmar
 
-	* www/blank-master.tcl: Adding the option Hide/Show toolbar in
-	  /dotlrn/admin. Fixing the "Error include" message when the
-	  installation of .lrn is done.
+	* packages/search/tcl/: search-convert-procs.tcl, search-procs.tcl:
+	  Added converter for open docs. Removed path for command passed to
+	  exec. Removed unused proc choice_bar
 
-2004-11-22 14:14  enriquec
+2007-11-19 11:16  emmar
 
-	* www/: blank-master.adp, blank-master.tcl: Adding include and link
-	  html tags if dotlrn is installed and if the dotlrn toolbar is
-	  enabled. I followed the same way as acs developper support
-	  toolbar.
+	* packages/: acs-admin/catalog/acs-admin.el_GR.utf-8.xml,
+	  search/catalog/search.el_GR.utf-8.xml: Added greek catalog
 
-2004-11-21 11:32  torbenb
+2007-11-19 05:41  emmar
 
+	* packages/notifications/notifications.info: Unset
+	  initial-install-p because notifications has automount set and was
+	  producing an error when mounting the package during acs-core
+	  install (can't read node(node_id))
+
+2007-11-19 05:31  emmar
+
+	* packages/acs-mail-lite/acs-mail-lite.info: initial-install-p
+	  should be set
+
+2007-11-18 13:27  donb
+
+	* packages/: acs-admin/catalog/acs-admin.en_US.ISO-8859-1.xml,
+	  acs-authentication/catalog/acs-authentication.de_DE.ISO-8859-1.xml,
+	  acs-authentication/catalog/acs-authentication.en_US.ISO-8859-1.xml,
+	  acs-kernel/catalog/acs-kernel.de_DE.ISO-8859-1.xml,
+	  acs-kernel/catalog/acs-kernel.en_US.ISO-8859-1.xml,
+	  acs-lang/catalog/acs-lang.de_DE.ISO-8859-1.xml,
+	  acs-lang/catalog/acs-lang.en_US.ISO-8859-1.xml,
+	  acs-lang/tcl/lang-catalog-procs-oracle.xql,
+	  acs-lang/tcl/lang-catalog-procs-postgresql.xql,
+	  acs-lang/tcl/lang-catalog-procs.tcl,
+	  acs-subsite/catalog/acs-subsite.de_DE.ISO-8859-1.xml,
+	  acs-subsite/catalog/acs-subsite.en_US.ISO-8859-1.xml,
+	  acs-tcl/catalog/acs-tcl.de_DE.ISO-8859-1.xml,
+	  acs-tcl/catalog/acs-tcl.en_US.ISO-8859-1.xml,
+	  acs-templating/catalog/acs-templating.de_DE.ISO-8859-1.xml,
+	  acs-templating/catalog/acs-templating.en_US.ISO-8859-1.xml,
+	  search/catalog/search.de_DE.ISO-8859-1.xml,
+	  search/catalog/search.en_US.ISO-8859-1.xml: Removed version info
+	  from catalog file code as was TIP'd ages ago, which will make
+	  merging much easier in the future.  I had en_US and de_DE
+	  installed so the catalogs for these languages in core have been
+	  exported and don't have version numbers.  The rest of the
+	  packages and locales for core and dotlrn will be exported from
+	  the translation server as part of our release process and will
+	  get fixed up then.
+
+2007-11-12 22:39  maltes
+
+	* packages/acs-subsite/lib/home.adp: Removed master information
+	  from include
+
+2007-11-11 12:54  donb
+
+	* packages/notifications/notifications.info: Install notifications
+	  during installation (it is now part of acs-core)
+
+2007-11-10 11:56  victorg
+
+	* packages/acs-tcl/tcl/apm-install-procs.tcl: Loading catalog files
+	  AFTER apm_package_install_version
+
+2007-11-09 02:38  emmar
+
+	* packages/acs-tcl/tcl/html-email-procs.tcl: build_mime_message
+	  default charset should be UTF-8
+
+2007-11-08 05:20  gustafn
+
+	* www/blank-master.tcl: fixed output charset
+
+2007-11-05 23:49  maltes
+
+	* packages/acs-mail-lite/tcl/complex-send-procs.tcl: Fixed the
+	  cmd_string
+
+2007-11-05 23:41  maltes
+
+	* packages/acs-mail-lite/tcl/complex-send-procs.tcl: Fixed bug with
+	  missing mail_package_id variable
+
+2007-10-27 15:57  donb
+
+	* packages/:
+	  acs-kernel/sql/oracle/upgrade/upgrade-5.3.2d1-5.3.2d2.sql,
+	  acs-kernel/sql/postgresql/upgrade/upgrade-5.3.2d1-5.3.2d2.sql,
+	  search/www/resources/search.css: Missed this in my upgrade
+
+2007-10-27 15:10  donb
+
+	* packages/acs-kernel/sql/: oracle/acs-create.sql,
+	  oracle/upgrade/upgrade-5.4.0d3-5.4.0d4.sql,
+	  postgresql/acs-create.sql,
+	  postgresql/upgrade/upgrade-5.4.0d3-5.4.0d4.sql: 'annotate' was
+	  not a child of 'admin' - pffft!
+
+2007-10-21 05:28  gustafn
+
+	* packages/search/www/search.tcl: uses braces for expressions,
+	  string operators for string comparisons
+
+2007-10-21 05:25  gustafn
+
+	* packages/tsearch2-driver/tcl/tsearch2-driver-procs.tcl: use tcl
+	  8.4 comparison operators
+
+2007-10-21 05:13  gustafn
+
+	* packages/tsearch2-driver/tcl/tsearch2-driver-procs.tcl: don't
+	  join on acs_objects if not needed
+
+2007-10-17 00:15  gustafn
+
+	* www/blank-master.adp: don't crash, if no xinha is available (&lt;if
+	  @::array.field@ not nil&gt; does not seem to work)
+
+2007-10-12 21:22  maltes
+
+	* packages/acs-tcl/tcl/pools-init.tcl: Fixed pools-init to work
+	  with AOLserver 4.0
+
+2007-10-12 00:33  gustafn
+
+	* packages/acs-tcl/tcl/: form-processing-procs.tcl,
+	  request-processor-procs.tcl, security-procs.tcl: undo escaped
+	  changes
+
+2007-10-12 00:21  gustafn
+
+	* packages/acs-tcl/tcl/: form-processing-procs.tcl,
+	  request-processor-procs.tcl, security-procs.tcl,
+	  utilities-procs.tcl: ensure that charset is always included in
+	  content type for text/* media types.
+
+2007-10-09 18:03  daveb
+
+	* packages/acs-templating/tcl/list-procs.tcl: Hide hidden columns
+	  in CSV output.
+
+2007-10-06 06:30  gustafn
+
+	* www/default-master.tcl: use tcl 8.4 style comparison operators
+
+2007-10-06 06:22  gustafn
+
+	* packages/acs-templating/tcl/head-procs.tcl, www/blank-master.tcl:
+	  fixes for all cases, where ::template::head::* variables (a)
+	  might survive a connection and (b) where they are not initialized
+	  properly.
+
+2007-10-06 04:57  gustafn
+
+	* www/: blank-master.adp, site-master.tcl: adding support for Xinha
+	  to new master templates
+
+2007-10-06 04:28  gustafn
+
+	* www/blank-master.tcl: fix 2 bugs: (a) ::template::head::scripts
+	  variable was accumulating content over multiple requests
+	  (namespaced variables are not reset) (b) order of list elements
+	  in ::template::head::scripts was incorrect (why not using
+	  objects?)
+
+2007-10-02 12:13  gustafn
+
+	* packages/acs-templating/tcl/: currency-procs.tcl, date-procs.tcl,
+	  parse-procs.tcl: use tcl 8.4 comparison operators and braced
+	  exprs for byte code compilation
+
+2007-10-02 12:08  gustafn
+
+	* packages/acs-templating/tcl/: element-procs.tcl, form-procs.tcl:
+	  use tcl 8.4 style comparisons and braced exprs
+
+2007-10-02 12:03  gustafn
+
+	* packages/acs-templating/tcl/: widget-procs.tcl,
+	  acs-integration-procs.tcl: use tcl 8.4 style comparisons and
+	  braced exprs
+
+2007-10-01 03:44  gustafn
+
+	* packages/acs-content-repository/: acs-content-repository.info,
+	  sql/postgresql/upgrade/upgrade-5.4.0d7-5.4.0d8.sql,
+	  sql/postgresql/upgrade/upgrade-5.4.0d8-5.4.0d9.sql: new update
+	  script in case, someone managed to get the .info file without the
+	  update script
+
+2007-10-01 03:16  gustafn
+
+	* packages/acs-content-repository/sql/postgresql/content-item.sql:
+	  add update script
+
+2007-09-30 17:10  gustafn
+
+	* packages/acs-content-repository/: acs-content-repository.info,
+	  sql/postgresql/content-folder.sql,
+	  sql/postgresql/content-type.sql: fix more function_args, fix
+	  comment for default values in stored procedures
+
+2007-09-27 01:03  gustafn
+
+	* packages/acs-tcl/tcl/server-cluster-procs.tcl: don't use numeric
+	  comparison operators on string comparisons
+
+2007-09-27 01:02  gustafn
+
+	* packages/acs-tcl/tcl/text-html-procs.tcl: user curly brackets
+	  around expr to allow for bytecode compilation
+
+2007-09-25 08:22  donb
+
+	* ChangeLog, packages/acs-admin/acs-admin.info,
+	  packages/acs-admin/www/apm/parameter-add-2.tcl,
+	  packages/acs-admin/www/apm/parameter-add.tcl,
+	  packages/acs-admin/www/apm/parameter-edit-2.tcl,
+	  packages/acs-admin/www/apm/parameter-edit.tcl,
+	  packages/acs-api-browser/acs-api-browser.info,
+	  packages/acs-authentication/acs-authentication.info,
+	  packages/acs-authentication/tcl/local-procs.tcl,
+	  packages/acs-automated-testing/acs-automated-testing.info,
+	  packages/acs-bootstrap-installer/acs-bootstrap-installer.info,
+	  packages/acs-content-repository/acs-content-repository.info,
+	  packages/acs-content-repository/sql/postgresql/upgrade/upgrade-5.2.1d1-5.2.1d2.sql,
+	  packages/acs-content-repository/tcl/content-item-procs.tcl,
+	  packages/acs-content-repository/tcl/content-revision-procs.tcl,
+	  packages/acs-core-docs/acs-core-docs.info,
+	  packages/acs-core-docs/www/xml/variables.ent,
+	  packages/acs-core-docs/www/xml/for-everyone/release-notes.xml,
+	  packages/acs-kernel/acs-kernel.info,
+	  packages/acs-kernel/sql/oracle/apm-create.sql,
+	  packages/acs-kernel/sql/postgresql/apm-create.sql,
+	  packages/acs-lang/acs-lang.info,
+	  packages/acs-lang/tcl/lang-widget-procs.tcl,
+	  packages/acs-lang/www/change-locale-include.tcl,
+	  packages/acs-mail-lite/acs-mail-lite.info,
+	  packages/acs-mail-lite/tcl/acs-mail-lite-procs.tcl,
+	  packages/acs-messaging/acs-messaging.info,
+	  packages/acs-reference/acs-reference.info,
+	  packages/acs-service-contract/acs-service-contract.info,
+	  packages/acs-subsite/acs-subsite.info,
+	  packages/acs-subsite/catalog/acs-subsite.en_US.ISO-8859-1.xml,
+	  packages/acs-subsite/www/group-master.adp,
+	  packages/acs-subsite/www/group-master.tcl,
+	  packages/acs-subsite/www/shared/parameters-oracle.xql,
+	  packages/acs-subsite/www/shared/parameters-postgresql.xql,
+	  packages/acs-subsite/www/shared/parameters.tcl,
+	  packages/acs-subsite/www/shared/whos-online.tcl,
+	  packages/acs-tcl/acs-tcl.info,
+	  packages/acs-tcl/tcl/navigation-procs.tcl,
+	  packages/acs-tcl/tcl/text-html-procs.tcl,
+	  packages/acs-tcl/tcl/utilities-procs.tcl,
+	  packages/acs-templating/acs-templating.info,
+	  packages/acs-templating/tcl/element-procs.tcl,
+	  packages/acs-templating/tcl/form-procs.tcl,
+	  packages/acs-templating/tcl/list-procs.tcl,
+	  packages/acs-templating/tcl/richtext-procs.tcl,
+	  packages/acs-templating/tcl/tag-init.tcl,
+	  packages/acs-templating/www/doc/demo/list5/add-edit.tcl,
+	  packages/acs-templating/www/doc/demo/list6/add-edit.tcl,
+	  packages/acs-templating/www/doc/demo/list7/add-edit.tcl,
+	  packages/acs-templating/www/doc/demo/list8/add-edit.tcl,
+	  packages/acs-templating/www/doc/demo/list9/add-edit.tcl,
+	  packages/acs-translations/acs-translations.info,
+	  packages/ref-timezones/ref-timezones.info,
+	  packages/search/search.info,
+	  packages/search/catalog/search.en_US.ISO-8859-1.xml,
+	  packages/search/www/search.adp, packages/search/www/search.tcl,
+	  www/blank-master.tcl, www/default-master.adp,
+	  www/default-master.tcl: Merged 5.3 to HEAD
+
+2007-09-20 05:33  gustafn
+
+	* packages/acs-tcl/tcl/20-memoize-init.tcl: add cluster stuff only,
+	  when clustering is enabled
+
+2007-09-19 06:29  gustafn
+
+	* packages/acs-subsite/tcl/attribute-procs.tcl: make sql query look
+	  more sane
+
+2007-09-18 13:04  gustafn
+
+	* packages/acs-content-repository/tcl/content-type-procs.tcl: fix
+	  for bug #2812
+
+2007-09-18 00:29  maltes
+
+	* www/default-master.tcl: As link is not supported anymore, we need
+	  to call template::head::add_css
+
+2007-09-18 00:06  maltes
+
+	* www/: blank-master.adp, blank-master.tcl: Fixed the blank master
+	  as headscript was not defined (called script) and the foreach did
+	  not work either. Not to mention the fact that the &lt;list&gt; tag is
+	  unknown to OpenACS templating
+
+2007-09-17 22:40  maltes
+
 	*
-	  packages/acs-core-docs/www/xml/engineering-standards/docbook-primer.xml:
-	  added developer tutorial documentation requirements
+	  packages/acs-content-repository/tcl/acs-content-repository-init.tcl:
+	  We need to use the default here, otherwise upgrades might become
+	  an issue
 
-2004-11-20 12:07  torbenb
+2007-09-17 20:49  maltes
 
+	* packages/acs-templating/tcl/widget-procs.tcl: checkbox and radio
+	  widgets are checked not selected when active see:
+	  http://www.w3.org/TR/html4/interact/forms.html
+
+2007-09-17 06:26  maltes
+
+	* packages/acs-admin/www/users/: user-add.adp, user-add.tcl: Made
+	  sure we are using the right user-new template
+
+2007-09-17 06:21  maltes
+
+	* packages/acs-tcl/tcl/proxy-procs.tcl: Rename exec and replace
+	  with the proxy version if ns_proxy is installed
+
+2007-09-17 06:06  maltes
+
+	* packages/acs-content-repository/sql/oracle/content-package.sql:
+	  Made sure the content package has the new procedures as well
+
+2007-09-17 06:00  maltes
+
+	* packages/acs-content-repository/sql/:
+	  oracle/upgrade/upgrade-5.4.0d1-5.4.0d2.sql,
+	  postgresql/upgrade/upgrade-5.4.0d6-5.4.0d7.sql: Missing upgrade
+	  scripts
+
+2007-09-17 05:58  maltes
+
+	* packages/acs-content-repository/: acs-content-repository.info,
+	  sql/oracle/content-revision.sql, sql/oracle/content-util.sql,
+	  sql/oracle/packages-create.sql, sql/postgresql/content-util.sql,
+	  tcl/content-revision-procs.tcl: Got rid of reliance on Java for
+	  Oracle. Removed unused old functions. Hopefully someone else can
+	  help with a fresh install test as well
+
+2007-09-17 02:43  gustafn
+
+	* packages/: acs-tcl/tcl/00-database-procs.tcl,
+	  acs-content-repository/acs-content-repository.info,
+	  acs-content-repository/sql/postgresql/content-item.sql,
+	  acs-content-repository/sql/postgresql/content-template.sql,
+	  acs-content-repository/sql/postgresql/upgrade/upgrade-5.4.0d4-5.4.0d5.sql,
+	  acs-kernel/acs-kernel.info,
+	  acs-kernel/sql/postgresql/acs-metadata-create.sql,
+	  acs-kernel/sql/postgresql/acs-objects-create.sql,
+	  acs-tcl/tcl/security-procs-postgresql.xql,
+	  acs-kernel/sql/postgresql/upgrade/upgrade-5.4.0d2-5.4.0d3.sql:
+	  Get rid of the postgres warning &quot;adding missing FROM-clause entry
+	  &quot; on sequences Make &quot;db_nextval acs_object_id_seq&quot; more than
+	  twice as fast (from 948 microseconds to 378 microseconds)
+
+2007-09-17 01:50  maltes
+
+	* packages/acs-tcl/tcl/proxy-procs.tcl: Added proxy procs. Need to
+	  think about renaming exec aso at a later stage
+
+2007-09-16 11:42  gustafn
+
+	* packages/acs-tcl/tcl/test/datamodel-test-procs.tcl: fix
+	  regression test in cases it fails
+
+2007-09-15 11:17  gustafn
+
+	* packages/acs-kernel/: acs-kernel.info,
+	  sql/postgresql/acs-metadata-create.sql,
+	  sql/postgresql/acs-objects-create.sql,
+	  sql/postgresql/upgrade/upgrade-5.4.0d1-5.4.0d2.sql: adding
+	  missing function args, fixing incorrect function args, including
+	  upgrade script
+
+2007-09-15 11:15  gustafn
+
 	*
-	  packages/acs-core-docs/www/xml/engineering-standards/docbook-primer.xml:
-	  added installation documenation requirements
+	  packages/acs-content-repository/sql/postgresql/upgrade/upgrade-5.4.0d3-5.4.0d4.sql:
+	  adding upgrade script
 
-2004-11-19 21:08  torbenb
+2007-09-15 11:13  gustafn
 
+	* packages/acs-content-repository/: acs-content-repository.info,
+	  sql/postgresql/content-type.sql: Fix incorrect function args
+
+2007-09-15 00:22  hamiltonc
+
+	* packages/acs-templating/tcl/acs-integration-procs.tcl,
+	  packages/acs-templating/tcl/head-procs.tcl, www/blank-master.adp,
+	  www/blank-master.tcl, www/default-master.tcl,
+	  www/site-master.adp, www/site-master.tcl: commit template::head
+	  and the needed modifications in the master templates to make it
+	  work to CVS HEAD
+
+2007-09-13 12:04  gustafn
+
+	* www/default-master.adp: more cleanup for validators: the W3C
+	  validator returns an error on empty ULs; so, don't output, if UL
+	  of footer is empty.
+
+2007-09-13 06:52  maltes
+
+	* packages/acs-mail-lite/tcl/: acs-mail-lite-callback-procs.tcl,
+	  acs-mail-lite-procs.tcl, bounce-procs.tcl, bounce-procs.xql,
+	  complex-send-procs.tcl: Added checking for valid emails and
+	  record bounces when the email is not valid
+
+2007-09-11 02:44  maltes
+
+	* packages/acs-subsite/www/user/portrait/erase.adp: Made sure to
+	  flush the cache, fixed form error and guaranteed that old images
+	  are deleted as well (cleanup)
+
+2007-09-10 02:06  maltes
+
+	* packages/acs-subsite/www/admin/site-map/: index-postgresql.xql,
+	  index.tcl: Made sure we do not display all subsites. Bad idea
+	  especially when dealing with dotFolio
+
+2007-09-10 01:43  maltes
+
+	* packages/acs-subsite/www/image.vuh: Ups. I committed the wrong
+	  version. Obviously it should read eq not ne
+
+2007-09-10 01:16  maltes
+
+	* packages/acs-subsite/www/register/recover-password.tcl: Restored
+	  accidently removed version
+
+2007-09-10 01:12  maltes
+
+	* packages/acs-subsite/www/image.vuh: Made sure that we create the
+	  thumbnail if it does not exist.
+
+2007-08-30 03:29  maltes
+
+	* packages/acs-content-repository/acs-content-repository.info: a *P
+	  parameter shoudl be a number
+
+2007-08-30 03:21  maltes
+
+	* packages/acs-content-repository/: acs-content-repository.info,
+	  tcl/acs-content-repository-callback-procs.tcl,
+	  tcl/acs-content-repository-init.tcl: Added FileLocationRelativeP
+	  paramater in the .info file. If set to 0 it says that the
+	  location of the CRFileLocationRoot is not relative to
+	  acs_root_dir
+
+2007-08-30 00:23  darior
+
+	* www/: blank-compat.tcl, blank-compat.adp: Fix for multiple xinhas
+	  on one page.
+
+2007-08-29 11:28  maltes
+
+	* packages/acs-content-repository/: acs-content-repository.info,
+	  sql/oracle/content-create.sql, sql/oracle/content-image.sql,
+	  sql/postgresql/content-create.sql,
+	  tcl/acs-content-repository-callback-procs.tcl,
+	  tcl/acs-content-repository-init.tcl, tcl/revision-procs.tcl:
+	  Support for relative file locations which might even reside on a
+	  windows drive and therefore start with d:\
+
+2007-08-29 07:34  maltes
+
+	* packages/acs-automated-testing/acs-automated-testing.info: New
+	  versionnumber
+
+2007-08-29 07:32  maltes
+
+	* packages/acs-automated-testing/www/admin/: index.adp, index.tcl,
+	  record-test.adp, record-test.tcl: Added recording of a tcl
+	  webtest test written by enrique at quest
+
+2007-08-29 07:16  maltes
+
+	* packages/acs-lang/tcl/: lang-catalog-procs.tcl,
+	  localization-procs.tcl: Minor bugfix to make sure that the
+	  parameter is found even when upgrading the packages
+
+2007-08-29 07:01  maltes
+
+	* packages/acs-templating/: acs-templating.info,
+	  tcl/data-procs.tcl, tcl/date-procs.tcl, tcl/form-procs.tcl,
+	  tcl/list-procs.tcl, tcl/spellcheck-init.tcl,
+	  tcl/widget-procs.tcl: Fixed a couple of issues with date and
+	  spellchecking as they were fixed by Quest
+
+2007-08-29 06:53  maltes
+
+	* packages/acs-tcl/: acs-tcl.info, lib/ad-return-error.adp,
+	  tcl/apm-procs.xql, tcl/defs-procs.tcl,
+	  tcl/tcl-documentation-procs.tcl, tcl/widgets-procs.tcl: Added
+	  support for custom error templates. Added negative float
+	  procedure from Brian Fenton (Quest)
+
+2007-08-29 06:44  maltes
+
+	* packages/acs-subsite/: acs-subsite.info, lib/home.adp,
+	  lib/home.tcl, lib/home.xql, www/pvt/home.adp, www/pvt/home.tcl:
+	  Made sure you can use a different home template
+
+2007-08-29 05:59  maltes
+
+	* packages/acs-mail-lite/tcl/: acs-mail-lite-procs.tcl,
+	  bounce-procs.tcl, complex-send-procs.tcl,
+	  incoming-mail-procs.tcl: Fixing minor bugs with regards to
+	  parameters and started to split up the code a little bit more to
+	  make it readable
+
+2007-08-29 05:58  maltes
+
+	* packages/acs-mail-lite/sql/oracle/acs-mail-lite-create.sql:
+	  Fixing Oracle
+
+2007-08-27 05:09  maltes
+
+	* packages/acs-subsite/www/shared/portrait-bits.tcl: Made sure that
+	  we are redirecting for thumbnails so we can cache them on the
+	  proxy server
+
+2007-08-24 01:29  maltes
+
+	* packages/acs-templating/www/resources/forms.css: New forms.css
+	  from 5.3
+
+2007-08-24 01:27  maltes
+
+	* packages/acs-templating/resources/forms/standard.adp: New
+	  standard.adp from oacs-5-3
+
+2007-08-22 00:31  maltes
+
+	* packages/acs-subsite/www/shared/portrait-bits.tcl: Made sure we
+	  are not returning something for the portrait if it was not found
+	  as this confuses the load balancer. I personally think we should
+	  not return the error message, especially as the portrait-bits are
+	  usually included as an image in OpenACS, which makes the error
+	  senseless anyway
+
+2007-08-21 06:58  maltes
+
+	* packages/acs-tcl/tcl/site-nodes-procs.tcl: Fix for previous
+	  commit. The objec might not exist in the cache
+
+2007-08-21 06:52  maltes
+
+	* packages/acs-tcl/tcl/site-nodes-procs.tcl: Made sure to not
+	  append the URL twice
+
+2007-08-21 02:08  maltes
+
+	* packages/acs-tcl/tcl/community-core-procs.tcl: Fixed problem for
+	  signup due to caching
+
+2007-08-20 14:49  maltes
+
+	* packages/acs-subsite/www/shared/portrait-bits.tcl: Support for
+	  providing the item_id of the portrait directly
+
+2007-08-20 14:47  maltes
+
+	* packages/acs-tcl/tcl/: community-core-procs.tcl,
+	  community-core-procs.xql: Added procedure to provide the
+	  portrait_id of a user
+
+2007-08-20 13:10  maltes
+
+	* packages/acs-tcl/tcl/: community-core-procs.tcl,
+	  community-core-procs.xql: Cached the user_id from username
+	  procedure as this will not change that easily / often
+
+2007-08-17 09:50  maltes
+
+	* packages/acs-tcl/tcl/: pools-init.tcl: Never change a running
+	  system. Maxconns was correct after all
+
+2007-08-17 09:45  maltes
+
+	* packages/acs-tcl/lib/page-error.adp: Change back to default
+	  master from wrong commit
+
+2007-08-17 09:44  maltes
+
+	* packages/acs-tcl/: lib/page-error.adp, tcl/pools-init.tcl: Made
+	  sure we are still using maxconnections which seems to be still
+	  the case and not maxconns
+
+2007-08-17 09:40  maltes
+
+	* packages/acs-tcl/tcl/pools-init.tcl: Added Tom Jacksons pools.tcl
+	  as an init for OpenACS so we can get teh pools to work in
+	  AOLserver 4.5
+
+2007-08-17 07:03  maltes
+
+	* packages/acs-tcl/tcl/: community-core-procs.tcl,
+	  community-core-procs.xql: Performance increase by a factor of 200
+
+2007-08-14 07:09  maltes
+
+	* packages/acs-tcl/tcl/request-processor-procs.tcl: Fixed ad_conn
+	  peeraddr to return the correct IP Address
+
+2007-08-13 05:30  maltes
+
+	* packages/acs-lang/: tcl/lang-catalog-procs.tcl,
+	  www/admin/import-messages.adp, www/admin/import-messages.tcl:
+	  Fixing two things I forgot
+
+2007-08-13 04:13  maltes
+
+	* packages/acs-lang/: acs-lang.info, tcl/lang-catalog-procs.tcl,
+	  tcl/lang-message-procs.tcl, tcl/localization-procs.tcl,
+	  www/admin/export-messages.adp, www/admin/import-messages.adp,
+	  www/admin/import-messages.tcl,
+	  www/admin/localized-message-new.tcl,
+	  www/admin/message-delete.adp, www/admin/message-delete.tcl,
+	  www/admin/message-list-oracle.xql, www/admin/message-list.adp,
+	  www/admin/message-list.tcl, www/admin/package-list.adp,
+	  www/admin/package-list.tcl: Introduced (from AIMS product by
+	  Quest) the KeepLocalTranslations Parameter which allows anyone to
+	  keep their local changes even if the merge function believes the
+	  local change should be overwritten. A conflict is raised in this
+	  case. Additionally made sure we cannot register a message to a
+	  non existent package_key. Also be a little bit more conservative
+	  when deleting message keys (so they can only be deleted from the
+	  main locale, otherwise only unregistered
+
+2007-08-12 23:11  avni
+
+	* packages/: acs-admin/www/users/merge-confirm.adp,
+	  acs-templating/resources/forms/accessible-forms.adp,
+	  acs-templating/resources/forms/standard.adp,
+	  acs-templating/www/resources/htmlarea/index.html,
+	  acs-templating/www/resources/htmlarea/popups/about.html,
+	  acs-templating/www/resources/xinha-nightly/functionsMozilla.js,
+	  acs-templating/www/resources/xinha-nightly/examples/ext_example-dest.php,
+	  acs-templating/www/resources/xinha-nightly/plugins/Template/popups/template.html,
+	  acs-templating/www/resources/xinha-nightly/popups/about.html:
+	  changing &lt;br/&gt; to &lt;br&gt; to meet html transitional validation
+	  requirements
+
+2007-08-12 23:04  avni
+
+	* packages/: acs-api-browser/tcl/acs-api-documentation-procs.tcl,
+	  acs-templating/tcl/richtext-procs.tcl: changing &lt;br/&gt; to &lt;br&gt; to
+	  meet html transitional validation requirements
+
+2007-08-11 20:31  matthewg
+
+	* packages/acs-subsite/www/pvt/home.tcl: I missed one reference to
+	  the user_new_template in my last commit, this fixes that
+
+2007-08-11 20:27  matthewg
+
+	* packages/acs-subsite/www/pvt/: home.adp, home.tcl:
+	  UserInfoTemplate should be used instead of UserNewTemplate when
+	  at /pvt/home since we are not creeating a new user but editing
+	  the info on an existing one
+
+2007-08-02 04:10  maltes
+
+	* packages/acs-tcl/tcl/site-nodes-procs.tcl: The admin in the
+	  subsite list has provided problems.
+
+2007-08-01 01:30  avni
+
+	* packages/acs-tcl/tcl/tdom-procs.tcl: changing 'empty_string_p'
+	  call to 'string equal x1 x2', rewording 'pointer' to 'object' to
+	  be more like tdom terminology and be less confusing as these are
+	  not real pointers, but tdom objects, and getting rid of
+	  unnecessary 'string trim' calls
+
+2007-07-30 14:39  avni
+
+	* packages/acs-tcl/tcl/tdom-procs.tcl: TDOM helper procs
+
+2007-07-30 13:30  matthewg
+
+	* packages/acs-templating/tcl/widget-procs.tcl: Fixing
+	  template::widget::menu. Checkbox and radio widgets are checked
+	  not selected when active. See:
+	  http://www.w3.org/TR/html4/interact/forms.html
+
+2007-07-30 13:19  avni
+
+	* packages/acs-subsite/tcl/application-group-procs-oracle.xql:
+	  fixing bug in query application_group::delete.delete - removing
+	  extra comma
+
+2007-07-25 05:18  maltes
+
+	* packages/acs-templating/: acs-templating.info,
+	  tcl/form-procs.tcl, tcl/list-procs.tcl: Added support for
+	  templates being located *outside* acs-templating/resources
+
+2007-07-20 06:32  leed
+
+	* packages/acs-tcl/tcl/utilities-procs.tcl: Fixed case where the
+	  upload times out.
+
+2007-07-20 05:48  leed
+
+	* packages/acs-tcl/tcl/utilities-procs.tcl: Fixed file handle
+	  leakage in util_http_file_upload when the connection is refused
+	  by the remote server.
+
+2007-07-20 03:41  donb
+
+	* packages/search/tcl/: search-init.tcl, search-procs.tcl: 1. check
+	  for oracle by checking for oracle, rather than not postgres 2.
+	  only call oracle if we're using oracle
+
+2007-07-15 17:54  gustafn
+
+	* packages/acs-tcl/tcl/: 00-database-procs.tcl, security-procs.tcl,
+	  utilities-procs.tcl: rollback last commit on unrelated files
+
+2007-07-15 17:47  gustafn
+
+	* packages/acs-tcl/tcl/: 00-database-procs.tcl, security-procs.tcl,
+	  text-html-procs.tcl, utilities-procs.tcl: fix a bug in
+	  ad_html_to_text: This function breaks, when it encounters a
+	  (valid) entity like &amp;0038; The problem was, that the old code
+	  interpreted the numeric value of the entity as an octal value
+	  because it starts with leading zeros.
+
+2007-07-10 02:59  darior
+
+	* packages/acs-tcl/tcl/server-cluster-procs.tcl: solve problem in
+	  cluster with ports
+
+2007-07-06 05:13  gustafn
+
+	* packages/acs-kernel/catalog/: acs-kernel.ar_LB.utf-8.xml,
+	  acs-kernel.ast_ES.ISO-8859-1.xml,
+	  acs-kernel.ca_ES.ISO-8859-1.xml, acs-kernel.ch_zh.utf-8.xml,
+	  acs-kernel.cs_CZ.utf-8.xml, acs-kernel.da_DK.ISO-8859-1.xml,
+	  acs-kernel.de_DE.ISO-8859-1.xml, acs-kernel.el_GR.utf-8.xml,
+	  acs-kernel.en_AU.ISO-8859-1.xml, acs-kernel.en_US.ISO-8859-1.xml,
+	  acs-kernel.es_CO.ISO-8859-1.xml, acs-kernel.es_ES.ISO-8859-1.xml,
+	  acs-kernel.es_GT.ISO-8859-1.xml, acs-kernel.eu_ES.ISO-8859-1.xml,
+	  acs-kernel.fr_FR.ISO-8859-1.xml, acs-kernel.gl_ES.ISO-8859-1.xml,
+	  acs-kernel.hi_IN.utf-8.xml, acs-kernel.hu_HU.utf-8.xml,
+	  acs-kernel.it_IT.ISO-8859-1.xml, acs-kernel.ja_JP.utf-8.xml,
+	  acs-kernel.ko_KR.utf-8.xml, acs-kernel.ms_MY.utf-8.xml,
+	  acs-kernel.nl_NL.ISO-8859-1.xml, acs-kernel.nl_ZA.ISO-8859-1.xml,
+	  acs-kernel.nn_NO.ISO-8859-1.xml, acs-kernel.no_NO.ISO-8859-1.xml,
+	  acs-kernel.pa_IN.utf-8.xml, acs-kernel.pl_PL.utf-8.xml,
+	  acs-kernel.pt_PT.ISO-8859-1.xml, acs-kernel.ro_RO.utf-8.xml,
+	  acs-kernel.ru_RU.utf-8.xml, acs-kernel.sv_SE.ISO-8859-1.xml,
+	  acs-kernel.tr_TR.utf-8.xml, acs-kernel.zh_CN.utf-8.xml,
+	  acs-kernel.zh_TW.utf-8.xml: changeing message key
+	  acs-kernel.common_no to acs-kernel.common_No (since the label is
+	  No as well), adding a new message key acs-kernel.common_no (with
+	  lower case &quot;no&quot;)
+
+2007-07-06 04:38  gustafn
+
+	* packages/acs-kernel/catalog/: acs-kernel.ca_ES.ISO-8859-1.xml,
+	  acs-kernel.de_DE.ISO-8859-1.xml, acs-kernel.en_US.ISO-8859-1.xml,
+	  acs-kernel.es_ES.ISO-8859-1.xml, acs-kernel.gl_ES.ISO-8859-1.xml,
+	  acs-kernel.it_IT.ISO-8859-1.xml, acs-kernel.nl_NL.ISO-8859-1.xml,
+	  acs-kernel.nl_ZA.ISO-8859-1.xml, acs-kernel.pl_PL.utf-8.xml,
+	  acs-kernel.pt_BR.ISO-8859-1.xml: fix typo in message catalog:
+	  common_lastt -&gt; common_last
+
+2007-06-28 14:21  matthewg
+
+	* packages/acs-tcl/tcl/site-nodes-procs.tcl: Replacing a db_foreach
+	  with a tcl foreach loop of a db_list_of_lists because you can run
+	  out of db pools if site_node::update_cache is called in the loop
+	  for too many parent nodes
+
+2007-06-28 10:23  matthewg
+
+	* packages/notifications/sql/oracle/:
+	  notifications-core-create.sql, notifications-package-create.sql,
+	  upgrade/upgrade-5.4.0d2-5.4.0d3.sql: Adding support for oracle
+	  for the upgrade to 5.4.0d3 which allows for file attachments
+
+2007-06-28 00:23  maltes
+
+	* packages/acs-tcl/tcl/site-nodes-procs.tcl: Fixed problem with
+	  mutex locking up the site when we needed to update the parent
+
+2007-06-27 16:35  cesarh
+
+	* packages/acs-tcl/tcl/apm-procs.tcl: Changing the proc
+	  instance_new, now it takes the package-instance-name instead of
+	  instance_name, and fall back to current behavior if the
+	  package-instance-name is empty
+
+2007-06-27 16:25  cesarh
+
+	* packages/acs-tcl/tcl/apm-install-procs.tcl: Adding the following:
+	  1. Added a new attribute called package-instance-name to use it
+	  as label in the context bar.	2. Added a new proc called
+	  apm::package_version::attributes::set_all_instances_names which
+	  changes all instances names for those packages that have the
+	  attribute package-instance-name and the instance name is equal to
+	  package-name.  3. Added a new proc called
+	  apm::package_version::attributes::get_instance_name which gets
+	  the package-instance-name for a given package-key.
+
+2007-06-27 16:05  cesarh
+
+	* packages/notifications/notifications.info: bumping version
+	  numbers to 5.4.0d4, since was added the attribute
+	  package-instance-name to use it in the context bar.
+
+2007-06-27 16:00  cesarh
+
 	*
-	  packages/acs-core-docs/www/xml/engineering-standards/docbook-primer.xml:
-	  added administration documenation requirements
+	  packages/notifications/catalog/notifications.es_GT.ISO-8859-1.xml:
+	  Addind message key &quot;notifications&quot; to use it in the context bar.
 
-2004-11-19 13:46  jader
+2007-06-27 11:54  matthewg
 
-	* packages/acs-subsite/www/user/portrait/upload-2.tcl: Applying
-	  patch 617 for bug 2161, courtesy of Carsten Clasohm.
+	* packages/notifications/: notifications.info,
+	  sql/postgresql/notifications-core-create.sql,
+	  sql/postgresql/notifications-package-create.sql,
+	  sql/postgresql/upgrade/upgrade-5.4.0d2-5.4.0d3.sql,
+	  tcl/apm-callback-procs.tcl, tcl/delivery-method-procs.tcl,
+	  tcl/notification-email-procs.tcl, tcl/notification-procs.tcl,
+	  tcl/sweep-procs-oracle.xql, tcl/sweep-procs-postgresql.xql,
+	  tcl/sweep-procs.tcl: Adding support for file attachments via
+	  file_ids in the notifications table, includes sql upgrade scripts
+	  and bumps the version to 5.4.0d3
 
-2004-11-18 13:48  jader
+2007-06-25 17:05  donb
 
-	* packages/acs-admin/www/server-restart.adp: Fix link to APM
+	* packages/acs-subsite/tcl/: callback-procs.tcl, group-procs.tcl:
+	  Reverted ill-conceived changes by MatthewG
 
-2004-11-18 13:46  jader
+2007-06-25 17:02  matthewg
 
-	* packages/acs-admin/www/server-restart.adp: Add link to APM
+	* packages/acs-subsite/tcl/: callback-procs.tcl, group-procs.tcl:
+	  Reverting previous change pending further discussion, cleanup and
+	  formal approvals.
 
-2004-11-18 12:27  torbenb
+2007-06-25 12:37  matthewg
 
+	* packages/acs-subsite/tcl/: callback-procs.tcl, group-procs.tcl:
+	  Adding group::add_member callback and changed the
+	  group::add_member proc to allow organization_rel's to be used -
+	  since organization =&gt; group mappings are needed and
+	  membership_rel requires person =&gt; group mappings.
+
+2007-06-25 06:52  maltes
+
+	* packages/acs-tcl/tcl/site-nodes-procs.tcl: Remove ds_comment
+
+2007-06-25 03:25  maltes
+
+	* packages/acs-tcl/tcl/site-nodes-procs.tcl: Fixed an issue with
+	  two identical entries in site_node_url_by_object_id
+
+2007-06-19 23:21  maltes
+
+	* packages/acs-admin/www/: index.adp, index.tcl: Made sure that we
+	  are not loading subsites if there are to many of them
+
+2007-06-19 06:31  donb
+
+	* packages/acs-subsite/acs-subsite.info: Added image/png to the
+	  allowable portrait image types
+
+2007-06-17 02:20  gustafn
+
+	* www/: site-master.adp, site-master.tcl: when multiple xinhas
+	  should be presented on a page, the code was broken; fix for this
+	  bug, which was introduced recently
+
+2007-06-13 18:36  gustafn
+
+	* packages/acs-templating/www/resources/xinha-nightly/: Xinha.css,
+	  XinhaCore.js, htmlarea.js, release-notes.txt,
+	  examples/Newbie.html, examples/XinhaConfig.js,
+	  examples/custom.css, examples/dynamic.css,
+	  examples/ext_example-body.html, examples/ext_example-menu.php,
+	  examples/ext_example.html, examples/full_example.css,
+	  examples/stylist.css, examples/testbed.html, lang/de.js,
+	  lang/eu.js, lang/fr.js, lang/ja.js,
+	  modules/ColorPicker/ColorPicker.js, modules/CreateLink/link.js,
+	  modules/Dialogs/popupwin.js, modules/Gecko/Gecko.js,
+	  modules/GetHtml/DOMwalk.js, modules/InsertImage/insert_image.js,
+	  modules/InternetExplorer/InternetExplorer.js,
+	  plugins/CharCounter/char-counter.js,
+	  plugins/CharacterMap/character-map.js,
+	  plugins/CharacterMap/lang/fr.js, plugins/Equation/example.html,
+	  plugins/ExtendedFileManager/editor.php,
+	  plugins/ExtendedFileManager/images.php,
+	  plugins/ExtendedFileManager/manager.php,
+	  plugins/ExtendedFileManager/prompt.html,
+	  plugins/ExtendedFileManager/resizer.php,
+	  plugins/ExtendedFileManager/Classes/ExtendedFileManager.php,
+	  plugins/ExtendedFileManager/assets/EditorContent.js,
+	  plugins/ExtendedFileManager/assets/images.js,
+	  plugins/ExtendedFileManager/assets/manager.css,
+	  plugins/ExtendedFileManager/assets/manager.js,
+	  plugins/ExtendedFileManager/assets/popup.js,
+	  plugins/ExtendedFileManager/lang/de.js,
+	  plugins/HtmlEntities/Entities.js,
+	  plugins/ImageManager/config.inc.php,
+	  plugins/ImageManager/editor.php,
+	  plugins/ImageManager/editorFrame.php,
+	  plugins/ImageManager/image-manager.js,
+	  plugins/ImageManager/images.php,
+	  plugins/ImageManager/manager.php,
+	  plugins/ImageManager/resizer.php,
+	  plugins/ImageManager/thumbs.php,
+	  plugins/ImageManager/Classes/Files.php,
+	  plugins/ImageManager/Classes/GD.php,
+	  plugins/ImageManager/Classes/IM.php,
+	  plugins/ImageManager/Classes/ImageEditor.php,
+	  plugins/ImageManager/Classes/ImageManager.php,
+	  plugins/ImageManager/Classes/NetPBM.php,
+	  plugins/ImageManager/Classes/Thumbnail.php,
+	  plugins/ImageManager/Classes/Transform.php,
+	  plugins/ImageManager/assets/EditorContent.js,
+	  plugins/ImageManager/assets/manager.css,
+	  plugins/ImageManager/assets/manager.js,
+	  plugins/ImageManager/assets/popup.js, plugins/Linker/linker.js,
+	  plugins/SaveSubmit/lang/fr.js, plugins/SmartReplace/dialog.html,
+	  plugins/SmartReplace/smart-replace.js,
+	  plugins/SpellChecker/spell-check-logic.cgi,
+	  plugins/SpellChecker/spell-check-ui.html,
+	  plugins/SpellChecker/spell-checker.js,
+	  plugins/Stylist/stylist.js, plugins/SuperClean/tidy.php,
+	  plugins/TableOperations/table-operations.js,
+	  plugins/TableOperations/popups/merge_cells.html, popups/popup.js,
+	  skins/silva/skin.css, skins/silva/statusbar.png,
+	  skins/silva/toolbar.png: upgraded xinha to version 0.931
+
+2007-06-08 10:44  gustafn
+
+	* packages/acs-service-contract/: acs-service-contract.info,
+	  sql/postgresql/acs-sc-msg-types-create.sql,
+	  sql/postgresql/acs-sc-packages-create.sql,
+	  sql/postgresql/upgrade/upgrade-5.3.1-5.4.0d1.sql: add missing
+	  function_args to stored precedures (provided by Stefan Sobernig)
+
+2007-06-05 02:06  maltes
+
+	* packages/acs-tcl/tcl/site-nodes-procs.tcl: Made sure that we
+	  preload the non acs-subsite packages mounted under root
+
+2007-06-05 02:01  maltes
+
+	* packages/acs-tcl/tcl/: request-processor-procs.tcl,
+	  site-nodes-procs.tcl: If you add www. to the hostname it should
+	  still work with the hostename based node mapping
+
+2007-05-29 08:29  maltes
+
+	* packages/acs-tcl/tcl/: site-nodes-procs.tcl, utilities-procs.tcl:
+	  change notice to debug. add string_check_urlsafe
+
+2007-05-28 22:40  maltes
+
+	* packages/acs-subsite/: acs-subsite.info, lib/email-confirm.adp,
+	  lib/email-confirm.tcl, www/register/email-confirm.adp,
+	  www/register/email-confirm.tcl: Support for EmailConfirm template
+
+2007-05-28 22:40  maltes
+
+	* packages/acs-subsite/www/shared/portrait-bits.tcl: Portrait bits
+	  are included so I deem it a bad idea to raise an ad_return_error,
+	  especially if not all users have portraits
+
+2007-05-28 22:38  maltes
+
+	* packages/acs-subsite/www/user/: basic-info-update.adp,
+	  basic-info-update.tcl: Ups. Wrong copy/paste. Now it goes
+	  correctly to the userinfotemplate
+
+2007-05-28 22:37  maltes
+
+	* packages/acs-subsite/www/user/portrait/: upload.adp, upload.tcl:
+	  Handle thumbnail portraits correctly. Especially delete them when
+	  the original changes or was deleted. Additional delete the items
+	  for good and not let them linger around. We do not have an
+	  interface to resurrect old portraits and if a user willingly
+	  uploads or deletes a portrait he should not have a photo album of
+	  portraits to come back to.
+
+2007-05-28 10:05  maltes
+
+	* packages/acs-subsite/catalog/acs-subsite.en_US.ISO-8859-1.xml:
+	  Message key should not start with package_key
+
+2007-05-28 08:51  maltes
+
+	* packages/acs-admin/: acs-admin.info,
+	  tcl/acs-admin-callback-procs.tcl,
+	  www/users/member-state-change.tcl: Added support for after user
+	  state change callback
+
+2007-05-27 07:35  maltes
+
+	* packages/acs-kernel/acs-kernel.info: Support for cookiedomain
+
+2007-05-27 07:32  maltes
+
+	* packages/acs-tcl/: lib/ad-return-complaint.adp,
+	  tcl/security-procs.tcl: Added support for cookie domain
+
+2007-05-27 07:31  maltes
+
+	* packages/acs-tcl/tcl/site-nodes-procs.tcl: has_children_p might
+	  not always exist
+
+2007-05-27 04:29  maltes
+
+	* packages/acs-tcl/tcl/site-nodes-procs.tcl: Fixed the site node
+	  lazy caching by applying different methods. Now let's hope that
+	  we are not having too many unnecessary trips to the database
+	  because of the url's location in /www or in
+	  /packages/acs-subsite/www
+
+2007-05-26 03:51  maltes
+
+	* packages/notifications/: notifications.info,
+	  catalog/notifications.de_DE.ISO-8859-1.xml,
+	  catalog/notifications.en_US.ISO-8859-1.xml: New messages
+
+2007-05-26 03:43  maltes
+
+	* packages/notifications/: tcl/notification-display-procs.tcl,
+	  www/manage-postgresql.xql, www/manage.adp, www/manage.tcl,
+	  www/subscribers.adp, www/subscribers.tcl: Show admins who is
+	  subscribed to an object
+
+2007-05-17 04:08  emmar
+
+	* packages/: acs-admin/catalog/acs-admin.es_ES.ISO-8859-1.xml,
+	  acs-kernel/catalog/acs-kernel.es_ES.ISO-8859-1.xml,
+	  acs-subsite/catalog/acs-subsite.es_ES.ISO-8859-1.xml,
+	  acs-tcl/catalog/acs-tcl.es_ES.ISO-8859-1.xml,
+	  acs-templating/catalog/acs-templating.es_ES.ISO-8859-1.xml,
+	  search/catalog/search.es_ES.ISO-8859-1.xml: Spanish translation
+
+2007-05-17 03:37  emmar
+
+	* www/default-master.adp: Fix master source value
+
+2007-05-17 03:09  emmar
+
+	* packages/acs-content-repository/sql/common/mime-type-data.sql:
+	  Remove duplicated inserts of Open Documents mime types
+
+2007-05-16 16:30  donb
+
+	* packages/acs-subsite/tcl/subsite-procs.tcl: Improved a previous
+	  fix slightly
+
+2007-05-15 13:14  donb
+
+	* packages/notifications/: notifications.info,
+	  catalog/notifications.ar_EG.utf-8.xml,
+	  catalog/notifications.ar_LB.utf-8.xml,
+	  catalog/notifications.ast_ES.ISO-8859-1.xml,
+	  catalog/notifications.ca_ES.ISO-8859-1.xml,
+	  catalog/notifications.da_DK.ISO-8859-1.xml,
+	  catalog/notifications.de_DE.ISO-8859-1.xml,
+	  catalog/notifications.el_GR.utf-8.xml,
+	  catalog/notifications.en_US.ISO-8859-1.xml,
+	  catalog/notifications.es_ES.ISO-8859-1.xml,
+	  catalog/notifications.es_GT.ISO-8859-1.xml,
+	  catalog/notifications.eu_ES.ISO-8859-1.xml,
+	  catalog/notifications.fi_FI.utf-8.xml,
+	  catalog/notifications.fr_FR.ISO-8859-1.xml,
+	  catalog/notifications.gl_ES.ISO-8859-1.xml,
+	  catalog/notifications.hu_HU.utf-8.xml,
+	  catalog/notifications.it_IT.ISO-8859-1.xml,
+	  catalog/notifications.ko_KR.utf-8.xml,
+	  catalog/notifications.ms_MY.utf-8.xml,
+	  catalog/notifications.nl_NL.ISO-8859-1.xml,
+	  catalog/notifications.nn_NO.ISO-8859-1.xml,
+	  catalog/notifications.no_NO.ISO-8859-1.xml,
+	  catalog/notifications.pl_PL.utf-8.xml,
+	  catalog/notifications.pt_BR.ISO-8859-1.xml,
+	  catalog/notifications.pt_PT.ISO-8859-1.xml,
+	  catalog/notifications.ru_RU.utf-8.xml,
+	  catalog/notifications.sv_SE.ISO-8859-1.xml,
+	  catalog/notifications.zh_CN.utf-8.xml,
+	  tcl/notification-display-procs.tcl, www/manage.adp,
+	  www/request-change-frequency.adp, www/request-new.adp,
+	  www/admin/index.adp: Merged changes to HEAD ...
+
+2007-05-15 03:37  darior
+
+	* packages/tsearch2-driver/: tsearch2-driver.info,
+	  tcl/tsearch2-driver-procs.tcl: Added new parameter to limite the
+	  file indexed size (we have crashes in pg 8.2.4)
+
+2007-05-14 15:53  donb
+
+	* packages/acs-subsite/www/file.vuh: Removed check for views
+	  packages, Daveb thinks this was something he did for a client and
+	  checked in by accident.
+
+2007-05-14 13:30  donb
+
+	* ChangeLog, readme.txt, etc/config.tcl,
+	  packages/acs-admin/acs-admin.info,
+	  packages/acs-admin/catalog/acs-admin.en_US.ISO-8859-1.xml,
+	  packages/acs-admin/catalog/acs-admin.es_ES.ISO-8859-1.xml,
+	  packages/acs-admin/lib/service-parameters.tcl,
+	  packages/acs-admin/tcl/apm-admin-procs.tcl,
+	  packages/acs-admin/www/apm/version-callbacks.tcl,
+	  packages/acs-admin/www/apm/version-i18n.tcl,
+	  packages/acs-admin/www/auth/authority.tcl,
+	  packages/acs-admin/www/auth/batch-job.tcl,
+	  packages/acs-admin/www/auth/index.tcl,
+	  packages/acs-api-browser/acs-api-browser.info,
+	  packages/acs-authentication/acs-authentication.info,
+	  packages/acs-authentication/catalog/acs-authentication.ar_LB.utf-8.xml,
+	  packages/acs-authentication/catalog/acs-authentication.ca_ES.ISO-8859-1.xml,
+	  packages/acs-authentication/catalog/acs-authentication.da_DK.ISO-8859-1.xml,
+	  packages/acs-authentication/catalog/acs-authentication.de_DE.ISO-8859-1.xml,
+	  packages/acs-authentication/catalog/acs-authentication.el_GR.utf-8.xml,
+	  packages/acs-authentication/catalog/acs-authentication.en_US.ISO-8859-1.xml,
+	  packages/acs-authentication/catalog/acs-authentication.es_CO.ISO-8859-1.xml,
+	  packages/acs-authentication/catalog/acs-authentication.es_ES.ISO-8859-1.xml,
+	  packages/acs-authentication/catalog/acs-authentication.es_GT.ISO-8859-1.xml,
+	  packages/acs-authentication/catalog/acs-authentication.eu_ES.ISO-8859-1.xml,
+	  packages/acs-authentication/catalog/acs-authentication.fa_IR.utf-8.xml,
+	  packages/acs-authentication/catalog/acs-authentication.fr_FR.ISO-8859-1.xml,
+	  packages/acs-authentication/catalog/acs-authentication.gl_ES.ISO-8859-1.xml,
+	  packages/acs-authentication/catalog/acs-authentication.hi_IN.utf-8.xml,
+	  packages/acs-authentication/catalog/acs-authentication.hu_HU.utf-8.xml,
+	  packages/acs-authentication/catalog/acs-authentication.ind_ID.utf-8.xml,
+	  packages/acs-authentication/catalog/acs-authentication.it_IT.ISO-8859-1.xml,
+	  packages/acs-authentication/catalog/acs-authentication.ms_MY.utf-8.xml,
+	  packages/acs-authentication/catalog/acs-authentication.nl_NL.ISO-8859-1.xml,
+	  packages/acs-authentication/catalog/acs-authentication.nn_NO.ISO-8859-1.xml,
+	  packages/acs-authentication/catalog/acs-authentication.no_NO.ISO-8859-1.xml,
+	  packages/acs-authentication/catalog/acs-authentication.pa_IN.utf-8.xml,
+	  packages/acs-authentication/catalog/acs-authentication.pl_PL.utf-8.xml,
+	  packages/acs-authentication/catalog/acs-authentication.pt_BR.ISO-8859-1.xml,
+	  packages/acs-authentication/catalog/acs-authentication.ro_RO.utf-8.xml,
+	  packages/acs-authentication/catalog/acs-authentication.ru_RU.utf-8.xml,
+	  packages/acs-authentication/catalog/acs-authentication.th_TH.utf-8.xml,
+	  packages/acs-authentication/catalog/acs-authentication.tr_TR.utf-8.xml,
+	  packages/acs-authentication/catalog/acs-authentication.zh_CN.utf-8.xml,
+	  packages/acs-authentication/catalog/acs-authentication.zh_TW.utf-8.xml,
+	  packages/acs-authentication/tcl/authentication-procs.tcl,
+	  packages/acs-automated-testing/acs-automated-testing.info,
+	  packages/acs-automated-testing/tcl/tclwebtest-procs.tcl,
+	  packages/acs-bootstrap-installer/acs-bootstrap-installer.info,
+	  packages/acs-bootstrap-installer/installer.tcl,
+	  packages/acs-content-repository/acs-content-repository.info,
+	  packages/acs-content-repository/sql/common/mime-type-data.sql,
+	  packages/acs-content-repository/sql/postgresql/content-create.sql,
+	  packages/acs-content-repository/sql/postgresql/upgrade/upgrade-5.3.0b1-5.3.0b2.sql,
+	  packages/acs-content-repository/sql/postgresql/upgrade/upgrade-5.3.0b2-5.3.0b3.sql,
+	  packages/acs-content-repository/sql/postgresql/upgrade/upgrade-5.3.0d1-5.3.0d2.sql,
+	  packages/acs-content-repository/tcl/test/content-search-procs.tcl,
+	  packages/acs-core-docs/acs-core-docs.info,
+	  packages/acs-core-docs/www/xml/Makefile,
+	  packages/acs-core-docs/www/xml/variables.ent,
+	  packages/acs-core-docs/www/xml/for-everyone/release-notes.xml,
+	  packages/acs-kernel/acs-kernel.info,
+	  packages/acs-kernel/catalog/acs-kernel.ar_EG.utf-8.xml,
+	  packages/acs-kernel/catalog/acs-kernel.ar_LB.utf-8.xml,
+	  packages/acs-kernel/catalog/acs-kernel.ast_ES.ISO-8859-1.xml,
+	  packages/acs-kernel/catalog/acs-kernel.ca_ES.ISO-8859-1.xml,
+	  packages/acs-kernel/catalog/acs-kernel.da_DK.ISO-8859-1.xml,
+	  packages/acs-kernel/catalog/acs-kernel.de_DE.ISO-8859-1.xml,
+	  packages/acs-kernel/catalog/acs-kernel.el_GR.utf-8.xml,
+	  packages/acs-kernel/catalog/acs-kernel.en_US.ISO-8859-1.xml,
+	  packages/acs-kernel/catalog/acs-kernel.es_CO.ISO-8859-1.xml,
+	  packages/acs-kernel/catalog/acs-kernel.es_ES.ISO-8859-1.xml,
+	  packages/acs-kernel/catalog/acs-kernel.es_GT.ISO-8859-1.xml,
+	  packages/acs-kernel/catalog/acs-kernel.eu_ES.ISO-8859-1.xml,
+	  packages/acs-kernel/catalog/acs-kernel.fi_FI.utf-8.xml,
+	  packages/acs-kernel/catalog/acs-kernel.fr_FR.ISO-8859-1.xml,
+	  packages/acs-kernel/catalog/acs-kernel.gl_ES.ISO-8859-1.xml,
+	  packages/acs-kernel/catalog/acs-kernel.hi_IN.utf-8.xml,
+	  packages/acs-kernel/catalog/acs-kernel.hu_HU.utf-8.xml,
+	  packages/acs-kernel/catalog/acs-kernel.it_IT.ISO-8859-1.xml,
+	  packages/acs-kernel/catalog/acs-kernel.ja_JP.utf-8.xml,
+	  packages/acs-kernel/catalog/acs-kernel.ko_KR.utf-8.xml,
+	  packages/acs-kernel/catalog/acs-kernel.ms_MY.utf-8.xml,
+	  packages/acs-kernel/catalog/acs-kernel.nl_NL.ISO-8859-1.xml,
+	  packages/acs-kernel/catalog/acs-kernel.nn_NO.ISO-8859-1.xml,
+	  packages/acs-kernel/catalog/acs-kernel.no_NO.ISO-8859-1.xml,
+	  packages/acs-kernel/catalog/acs-kernel.pa_IN.utf-8.xml,
+	  packages/acs-kernel/catalog/acs-kernel.pl_PL.utf-8.xml,
+	  packages/acs-kernel/catalog/acs-kernel.pt_BR.ISO-8859-1.xml,
+	  packages/acs-kernel/catalog/acs-kernel.pt_PT.ISO-8859-1.xml,
+	  packages/acs-kernel/catalog/acs-kernel.ro_RO.utf-8.xml,
+	  packages/acs-kernel/catalog/acs-kernel.ru_RU.utf-8.xml,
+	  packages/acs-kernel/catalog/acs-kernel.sv_SE.ISO-8859-1.xml,
+	  packages/acs-kernel/catalog/acs-kernel.tr_TR.utf-8.xml,
+	  packages/acs-kernel/catalog/acs-kernel.zh_CN.utf-8.xml,
+	  packages/acs-kernel/catalog/acs-kernel.zh_TW.utf-8.xml,
+	  packages/acs-kernel/sql/oracle/acs-permissions-create.sql,
+	  packages/acs-kernel/sql/oracle/upgrade/upgrade-5.3.1b1-5.3.1b2.sql,
+	  packages/acs-kernel/sql/postgresql/acs-permissions-create.sql,
+	  packages/acs-kernel/sql/postgresql/upgrade/upgrade-5.3.1b1-5.3.1b2.sql,
+	  packages/acs-lang/acs-lang.info,
+	  packages/acs-lang/catalog/acs-lang.ar_EG.utf-8.xml,
+	  packages/acs-lang/catalog/acs-lang.ar_LB.utf-8.xml,
+	  packages/acs-lang/catalog/acs-lang.ast_ES.ISO-8859-1.xml,
+	  packages/acs-lang/catalog/acs-lang.ca_ES.ISO-8859-1.xml,
+	  packages/acs-lang/catalog/acs-lang.da_DK.ISO-8859-1.xml,
+	  packages/acs-lang/catalog/acs-lang.de_DE.ISO-8859-1.xml,
+	  packages/acs-lang/catalog/acs-lang.el_GR.utf-8.xml,
+	  packages/acs-lang/catalog/acs-lang.en_GB.ISO-8859-1.xml,
+	  packages/acs-lang/catalog/acs-lang.en_US.ISO-8859-1.xml,
+	  packages/acs-lang/catalog/acs-lang.es_CO.ISO-8859-1.xml,
+	  packages/acs-lang/catalog/acs-lang.es_ES.ISO-8859-1.xml,
+	  packages/acs-lang/catalog/acs-lang.es_GT.ISO-8859-1.xml,
+	  packages/acs-lang/catalog/acs-lang.eu_ES.ISO-8859-1.xml,
+	  packages/acs-lang/catalog/acs-lang.fa_IR.utf-8.xml,
+	  packages/acs-lang/catalog/acs-lang.fi_FI.utf-8.xml,
+	  packages/acs-lang/catalog/acs-lang.fr_FR.ISO-8859-1.xml,
+	  packages/acs-lang/catalog/acs-lang.gl_ES.ISO-8859-1.xml,
+	  packages/acs-lang/catalog/acs-lang.hi_IN.utf-8.xml,
+	  packages/acs-lang/catalog/acs-lang.hu_HU.utf-8.xml,
+	  packages/acs-lang/catalog/acs-lang.it_IT.ISO-8859-1.xml,
+	  packages/acs-lang/catalog/acs-lang.ja_JP.utf-8.xml,
+	  packages/acs-lang/catalog/acs-lang.ko_KR.utf-8.xml,
+	  packages/acs-lang/catalog/acs-lang.ms_MY.utf-8.xml,
+	  packages/acs-lang/catalog/acs-lang.nl_NL.ISO-8859-1.xml,
+	  packages/acs-lang/catalog/acs-lang.nn_NO.ISO-8859-1.xml,
+	  packages/acs-lang/catalog/acs-lang.no_NO.ISO-8859-1.xml,
+	  packages/acs-lang/catalog/acs-lang.pa_IN.utf-8.xml,
+	  packages/acs-lang/catalog/acs-lang.pl_PL.utf-8.xml,
+	  packages/acs-lang/catalog/acs-lang.pt_BR.ISO-8859-1.xml,
+	  packages/acs-lang/catalog/acs-lang.pt_PT.ISO-8859-1.xml,
+	  packages/acs-lang/catalog/acs-lang.ro_RO.utf-8.xml,
+	  packages/acs-lang/catalog/acs-lang.ru_RU.utf-8.xml,
+	  packages/acs-lang/catalog/acs-lang.sh_HR.utf-8.xml,
+	  packages/acs-lang/catalog/acs-lang.sv_SE.ISO-8859-1.xml,
+	  packages/acs-lang/catalog/acs-lang.th_TH.utf-8.xml,
+	  packages/acs-lang/catalog/acs-lang.tr_TR.utf-8.xml,
+	  packages/acs-lang/catalog/acs-lang.zh_CN.utf-8.xml,
+	  packages/acs-lang/catalog/acs-lang.zh_TW.utf-8.xml,
+	  packages/acs-lang/sql/oracle/ad-locales.sql,
+	  packages/acs-lang/sql/postgresql/ad-locales.sql,
+	  packages/acs-lang/tcl/lang-util-procs.tcl,
+	  packages/acs-lang/tcl/lang-widget-procs.tcl,
+	  packages/acs-lang/www/admin/batch-editor.tcl,
+	  packages/acs-lang/www/admin/locale-edit.tcl,
+	  packages/acs-lang/www/admin/set-system-timezone.tcl,
+	  packages/acs-messaging/acs-messaging.info,
+	  packages/acs-reference/acs-reference.info,
+	  packages/acs-service-contract/acs-service-contract.info,
+	  packages/acs-subsite/acs-subsite.info,
+	  packages/acs-subsite/catalog/acs-subsite.ar_EG.utf-8.xml,
+	  packages/acs-subsite/catalog/acs-subsite.ar_LB.utf-8.xml,
+	  packages/acs-subsite/catalog/acs-subsite.ast_ES.ISO-8859-1.xml,
+	  packages/acs-subsite/catalog/acs-subsite.ca_ES.ISO-8859-1.xml,
+	  packages/acs-subsite/catalog/acs-subsite.da_DK.ISO-8859-1.xml,
+	  packages/acs-subsite/catalog/acs-subsite.de_DE.ISO-8859-1.xml,
+	  packages/acs-subsite/catalog/acs-subsite.el_GR.utf-8.xml,
+	  packages/acs-subsite/catalog/acs-subsite.en_GB.ISO-8859-1.xml,
+	  packages/acs-subsite/catalog/acs-subsite.en_US.ISO-8859-1.xml,
+	  packages/acs-subsite/catalog/acs-subsite.es_CO.ISO-8859-1.xml,
+	  packages/acs-subsite/catalog/acs-subsite.es_ES.ISO-8859-1.xml,
+	  packages/acs-subsite/catalog/acs-subsite.es_GT.ISO-8859-1.xml,
+	  packages/acs-subsite/catalog/acs-subsite.eu_ES.ISO-8859-1.xml,
+	  packages/acs-subsite/catalog/acs-subsite.fi_FI.utf-8.xml,
+	  packages/acs-subsite/catalog/acs-subsite.fr_FR.ISO-8859-1.xml,
+	  packages/acs-subsite/catalog/acs-subsite.gl_ES.ISO-8859-1.xml,
+	  packages/acs-subsite/catalog/acs-subsite.hi_IN.utf-8.xml,
+	  packages/acs-subsite/catalog/acs-subsite.hu_HU.utf-8.xml,
+	  packages/acs-subsite/catalog/acs-subsite.it_IT.ISO-8859-1.xml,
+	  packages/acs-subsite/catalog/acs-subsite.ja_JP.utf-8.xml,
+	  packages/acs-subsite/catalog/acs-subsite.ko_KR.utf-8.xml,
+	  packages/acs-subsite/catalog/acs-subsite.ms_MY.utf-8.xml,
+	  packages/acs-subsite/catalog/acs-subsite.nl_NL.ISO-8859-1.xml,
+	  packages/acs-subsite/catalog/acs-subsite.nn_NO.ISO-8859-1.xml,
+	  packages/acs-subsite/catalog/acs-subsite.no_NO.ISO-8859-1.xml,
+	  packages/acs-subsite/catalog/acs-subsite.pa_IN.utf-8.xml,
+	  packages/acs-subsite/catalog/acs-subsite.pl_PL.utf-8.xml,
+	  packages/acs-subsite/catalog/acs-subsite.pt_BR.ISO-8859-1.xml,
+	  packages/acs-subsite/catalog/acs-subsite.pt_PT.ISO-8859-1.xml,
+	  packages/acs-subsite/catalog/acs-subsite.ro_RO.utf-8.xml,
+	  packages/acs-subsite/catalog/acs-subsite.ru_RU.utf-8.xml,
+	  packages/acs-subsite/catalog/acs-subsite.sh_HR.utf-8.xml,
+	  packages/acs-subsite/catalog/acs-subsite.sv_SE.ISO-8859-1.xml,
+	  packages/acs-subsite/catalog/acs-subsite.th_TH.utf-8.xml,
+	  packages/acs-subsite/catalog/acs-subsite.tr_TR.utf-8.xml,
+	  packages/acs-subsite/catalog/acs-subsite.zh_CN.utf-8.xml,
+	  packages/acs-subsite/catalog/acs-subsite.zh_TW.utf-8.xml,
+	  packages/acs-subsite/lib/user-info.tcl,
+	  packages/acs-subsite/tcl/group-procs.tcl,
+	  packages/acs-subsite/www/file.vuh,
+	  packages/acs-subsite/www/image.vuh,
+	  packages/acs-subsite/www/permissions/perm-include.tcl,
+	  packages/acs-subsite/www/pvt/home.adp,
+	  packages/acs-subsite/www/resources/core.js,
+	  packages/acs-subsite/www/resources/email.gif,
+	  packages/acs-subsite/www/resources/email_add.gif,
+	  packages/acs-subsite/www/resources/email_delete.gif,
+	  packages/acs-subsite/www/resources/email_open.gif,
+	  packages/acs-subsite/www/resources/feed.gif,
+	  packages/acs-subsite/www/shared/parameters.tcl,
+	  packages/acs-subsite/www/shared/whos-online.adp,
+	  packages/acs-subsite/www/user/portrait/comment-edit.adp,
+	  packages/acs-subsite/www/user/portrait/upload.adp,
+	  packages/acs-tcl/acs-tcl.info,
+	  packages/acs-tcl/catalog/acs-tcl.ar_EG.utf-8.xml,
+	  packages/acs-tcl/catalog/acs-tcl.ar_LB.utf-8.xml,
+	  packages/acs-tcl/catalog/acs-tcl.ast_ES.ISO-8859-1.xml,
+	  packages/acs-tcl/catalog/acs-tcl.ca_ES.ISO-8859-1.xml,
+	  packages/acs-tcl/catalog/acs-tcl.da_DK.ISO-8859-1.xml,
+	  packages/acs-tcl/catalog/acs-tcl.de_DE.ISO-8859-1.xml,
+	  packages/acs-tcl/catalog/acs-tcl.en_US.ISO-8859-1.xml,
+	  packages/acs-tcl/catalog/acs-tcl.es_CO.ISO-8859-1.xml,
+	  packages/acs-tcl/catalog/acs-tcl.es_ES.ISO-8859-1.xml,
+	  packages/acs-tcl/catalog/acs-tcl.es_GT.ISO-8859-1.xml,
+	  packages/acs-tcl/catalog/acs-tcl.eu_ES.ISO-8859-1.xml,
+	  packages/acs-tcl/catalog/acs-tcl.fa_IR.utf-8.xml,
+	  packages/acs-tcl/catalog/acs-tcl.fi_FI.utf-8.xml,
+	  packages/acs-tcl/catalog/acs-tcl.fr_FR.ISO-8859-1.xml,
+	  packages/acs-tcl/catalog/acs-tcl.gl_ES.ISO-8859-1.xml,
+	  packages/acs-tcl/catalog/acs-tcl.hi_IN.utf-8.xml,
+	  packages/acs-tcl/catalog/acs-tcl.hu_HU.utf-8.xml,
+	  packages/acs-tcl/catalog/acs-tcl.ind_ID.utf-8.xml,
+	  packages/acs-tcl/catalog/acs-tcl.it_IT.ISO-8859-1.xml,
+	  packages/acs-tcl/catalog/acs-tcl.ja_JP.utf-8.xml,
+	  packages/acs-tcl/catalog/acs-tcl.ko_KR.utf-8.xml,
+	  packages/acs-tcl/catalog/acs-tcl.ms_MY.utf-8.xml,
+	  packages/acs-tcl/catalog/acs-tcl.nl_NL.ISO-8859-1.xml,
+	  packages/acs-tcl/catalog/acs-tcl.nn_NO.ISO-8859-1.xml,
+	  packages/acs-tcl/catalog/acs-tcl.no_NO.ISO-8859-1.xml,
+	  packages/acs-tcl/catalog/acs-tcl.pl_PL.utf-8.xml,
+	  packages/acs-tcl/catalog/acs-tcl.pt_BR.ISO-8859-1.xml,
+	  packages/acs-tcl/catalog/acs-tcl.pt_PT.ISO-8859-1.xml,
+	  packages/acs-tcl/catalog/acs-tcl.ro_RO.utf-8.xml,
+	  packages/acs-tcl/catalog/acs-tcl.ru_RU.utf-8.xml,
+	  packages/acs-tcl/catalog/acs-tcl.sh_HR.utf-8.xml,
+	  packages/acs-tcl/catalog/acs-tcl.sv_SE.ISO-8859-1.xml,
+	  packages/acs-tcl/catalog/acs-tcl.tr_TR.utf-8.xml,
+	  packages/acs-tcl/catalog/acs-tcl.zh_CN.utf-8.xml,
+	  packages/acs-tcl/catalog/acs-tcl.zh_TW.utf-8.xml,
+	  packages/acs-tcl/lib/progress-bar.adp,
+	  packages/acs-tcl/lib/static-progress-bar.adp,
+	  packages/acs-tcl/lib/static-progress-bar.tcl,
+	  packages/acs-tcl/tcl/00-database-procs.tcl,
+	  packages/acs-tcl/tcl/application-data-link-procs.tcl,
+	  packages/acs-tcl/tcl/application-data-link-procs.xql,
+	  packages/acs-tcl/tcl/database-init.tcl,
+	  packages/acs-tcl/tcl/form-processing-procs.tcl,
+	  packages/acs-tcl/tcl/table-display-procs.tcl,
+	  packages/acs-tcl/tcl/utilities-procs.tcl,
+	  packages/acs-tcl/tcl/widgets-procs.tcl,
+	  packages/acs-tcl/tcl/test/application-data-link-procs.tcl,
+	  packages/acs-templating/acs-templating.info,
+	  packages/acs-templating/catalog/acs-templating.ar_LB.utf-8.xml,
+	  packages/acs-templating/catalog/acs-templating.ca_ES.ISO-8859-1.xml,
+	  packages/acs-templating/catalog/acs-templating.da_DK.ISO-8859-1.xml,
+	  packages/acs-templating/catalog/acs-templating.de_DE.ISO-8859-1.xml,
+	  packages/acs-templating/catalog/acs-templating.el_GR.utf-8.xml,
+	  packages/acs-templating/catalog/acs-templating.en_US.ISO-8859-1.xml,
+	  packages/acs-templating/catalog/acs-templating.es_CO.ISO-8859-1.xml,
+	  packages/acs-templating/catalog/acs-templating.es_ES.ISO-8859-1.xml,
+	  packages/acs-templating/catalog/acs-templating.es_GT.ISO-8859-1.xml,
+	  packages/acs-templating/catalog/acs-templating.eu_ES.ISO-8859-1.xml,
+	  packages/acs-templating/catalog/acs-templating.fi_FI.utf-8.xml,
+	  packages/acs-templating/catalog/acs-templating.fr_FR.ISO-8859-1.xml,
+	  packages/acs-templating/catalog/acs-templating.gl_ES.ISO-8859-1.xml,
+	  packages/acs-templating/catalog/acs-templating.hi_IN.utf-8.xml,
+	  packages/acs-templating/catalog/acs-templating.hu_HU.utf-8.xml,
+	  packages/acs-templating/catalog/acs-templating.it_IT.ISO-8859-1.xml,
+	  packages/acs-templating/catalog/acs-templating.ko_KR.utf-8.xml,
+	  packages/acs-templating/catalog/acs-templating.ms_MY.utf-8.xml,
+	  packages/acs-templating/catalog/acs-templating.nl_NL.ISO-8859-1.xml,
+	  packages/acs-templating/catalog/acs-templating.nn_NO.ISO-8859-1.xml,
+	  packages/acs-templating/catalog/acs-templating.no_NO.ISO-8859-1.xml,
+	  packages/acs-templating/catalog/acs-templating.pa_IN.utf-8.xml,
+	  packages/acs-templating/catalog/acs-templating.pt_BR.ISO-8859-1.xml,
+	  packages/acs-templating/catalog/acs-templating.pt_PT.ISO-8859-1.xml,
+	  packages/acs-templating/catalog/acs-templating.ro_RO.utf-8.xml,
+	  packages/acs-templating/catalog/acs-templating.ru_RU.utf-8.xml,
+	  packages/acs-templating/catalog/acs-templating.sh_HR.utf-8.xml,
+	  packages/acs-templating/catalog/acs-templating.sv_SE.ISO-8859-1.xml,
+	  packages/acs-templating/catalog/acs-templating.tr_TR.utf-8.xml,
+	  packages/acs-templating/catalog/acs-templating.zh_CN.utf-8.xml,
+	  packages/acs-templating/catalog/acs-templating.zh_TW.utf-8.xml,
+	  packages/acs-templating/resources/forms/accessible-forms.adp,
+	  packages/acs-templating/resources/forms/standard.adp,
+	  packages/acs-templating/resources/lists/courses.adp,
+	  packages/acs-templating/resources/lists/filters.adp,
+	  packages/acs-templating/resources/lists/list.adp,
+	  packages/acs-templating/resources/lists/table.adp,
+	  packages/acs-templating/tcl/currency-procs.tcl,
+	  packages/acs-templating/tcl/date-procs.tcl,
+	  packages/acs-templating/tcl/element-procs.tcl,
+	  packages/acs-templating/tcl/form-procs.tcl,
+	  packages/acs-templating/tcl/list-procs.tcl,
+	  packages/acs-templating/tcl/parse-procs.tcl,
+	  packages/acs-templating/tcl/richtext-procs.tcl,
+	  packages/acs-templating/tcl/spellcheck-procs.tcl,
+	  packages/acs-templating/tcl/tag-init.tcl,
+	  packages/acs-templating/tcl/widget-procs.tcl,
+	  packages/acs-templating/www/resources/forms.css,
+	  packages/acs-templating/www/resources/lists.css,
+	  packages/acs-templating/www/resources/mktree.css,
+	  packages/acs-templating/www/resources/xinha-nightly/htmlarea.js,
+	  packages/acs-templating/www/resources/xinha-nightly/plugins/OacsAttach/oacs-attach.js,
+	  packages/acs-translations/acs-translations.info,
+	  packages/ref-timezones/ref-timezones.info,
+	  packages/search/search.info,
+	  packages/search/catalog/search.de_DE.ISO-8859-1.xml,
+	  packages/search/catalog/search.en_US.ISO-8859-1.xml,
+	  packages/search/catalog/search.es_ES.ISO-8859-1.xml,
+	  packages/search/catalog/search.nl_NL.ISO-8859-1.xml,
+	  packages/search/catalog/search.pl_PL.utf-8.xml,
+	  packages/search/catalog/search.pt_BR.ISO-8859-1.xml,
+	  packages/search/tcl/search-procs.tcl,
+	  packages/search/www/search.tcl, www/blank-compat.adp,
+	  www/blank-compat.tcl, www/blank-master.adp, www/blank-master.tcl,
+	  www/default-master.adp, www/default-master.tcl,
+	  www/site-compat.adp, www/site-compat.tcl, www/site-master.adp,
+	  www/site-master.tcl: Merged the 5.3 branch with HEAD.  Look for
+	  tags with the pattern drb-*-20070513
+
+2007-05-05 23:58  maltes
+
+	* packages/acs-subsite/: acs-subsite.info, tcl/subsite-procs.tcl,
+	  www/members/user-new.adp, www/members/user-new.tcl,
+	  www/pvt/home.adp, www/pvt/home.tcl, www/register/index.adp,
+	  www/register/index.tcl, www/register/user-new.adp,
+	  www/register/user-new.tcl, www/user/basic-info-update.adp,
+	  www/user/basic-info-update.tcl: Bugfixes
+
+2007-05-05 06:07  maltes
+
+	* packages/acs-subsite/: acs-subsite.info,
+	  tcl/email-image-procs.tcl, tcl/subsite-procs.tcl,
+	  www/resources/core.js, www/resources/default-master.css,
+	  www/resources/site-master.css, www/shared/parameters.tcl: Merged
+	  from 5.3 what I could detect what needed to be merged
+
+2007-05-04 04:45  maltes
+
+	* packages/notifications/: notifications.info,
+	  catalog/notifications.en_US.ISO-8859-1.xml, www/manage.adp:
+	  Upgraded version numbers to reflect the fact that it belongs to
+	  the 5.4 release. Made sure it depends on an acs-mail-lite version
+	  which has complex_send
+
+2007-05-02 02:32  maltes
+
+	* packages/acs-mail-lite/tcl/acs-mail-lite-procs-oracle.xql:
+	  Applied patch #841 fixes bug #3087
+
+2007-04-18 02:13  maltes
+
+	* packages/acs-mail-lite/tcl/: acs-mail-lite-init.tcl,
+	  acs-mail-lite-procs.tcl: Made sure that you are only sending if
+	  the to_addr is not empty after working on it
+
+2007-04-16 00:02  gustafn
+
+	* packages/acs-kernel/sql/:
+	  oracle/upgrade/upgrade-5.3.0b1-5.3.0b2.sql,
+	  postgresql/upgrade/upgrade-5.3.0b1-5.3.0b2.sql: create indices
+	  conditionally in upgrade scripts (many thanks to daveb for the
+	  snippets for oracle and postres)
+
+2007-04-15 04:09  gustafn
+
+	* packages/acs-kernel/sql/:
+	  oracle/upgrade/upgrade-5.3.0b1-5.3.0b2.sql,
+	  postgresql/upgrade/upgrade-5.3.0b1-5.3.0b2.sql: adding missing
+	  upgrade scripts to create index
+
+2007-04-13 14:38  gustafn
+
+	* packages/acs-kernel/: acs-kernel.info,
+	  sql/oracle/acs-permissions-create.sql,
+	  sql/postgresql/acs-permissions-create.sql: create an additional
+	  index to speed up permission checking
+
+2007-04-13 12:53  gustafn
+
+	* packages/acs-subsite/tcl/group-procs.tcl: Fix for bug #2998; this
+	  fixes as well a bug, when the regression test is run more than
+	  once without restarting the server.
+
+2007-04-13 03:23  gustafn
+
+	* packages/acs-content-repository/tcl/: filter-procs.tcl,
+	  item-procs-postgresql.xql, item-procs.tcl, publish-procs.tcl:
+	  some more cleanup of the item-procs.tcl, and calls to item:: in
+	  packages/acs-content-repository
+
+2007-04-12 04:52  gustafn
+
+	* packages/acs-content-repository/tcl/: content-item-procs.tcl,
+	  content-revision-procs.tcl, item-procs-oracle.xql,
+	  item-procs.tcl, item-procs.xql: Major cleanup of item-procs,
+	  replaced DB calls by calls to content::item::* in 18 of the 24
+	  deprecated procs, just six procs are still required. Commented
+	  most of the affected calls in ::content::item::*
+
+2007-04-12 00:32  maltes
+
+	* etc/backup.sh: Added the option to rsync instead of tar and scp.
+	  This is useful if you have a large number of files in the content
+	  repository which you do not want to compress (especially if you
+	  have podcasts there)
+
+2007-04-11 11:46  gustafn
+
+	* packages/acs-content-repository/tcl/item-procs-postgresql.xql:
+	  removed unneeded .xql query with typo
+
+2007-04-09 00:12  maltes
+
+	* packages/acs-mail-lite/: acs-mail-lite.info,
+	  catalog/acs-mail-lite.en_US.ISO-8859-1.xml: New langauge keys
+
+2007-04-09 00:10  maltes
+
+	* packages/acs-admin/www/users/: bouncing-users.adp,
+	  bouncing-users.tcl, bouncing-users.xql, index.adp: Added link for
+	  bouncing users
+
+2007-04-08 23:39  maltes
+
+	* packages/acs-subsite/www/file.vuh: Actually track the object_id,
+	  there is no file_id
+
+2007-04-08 23:39  maltes
+
+	* packages/acs-subsite/www/register/: restore-bounce.adp,
+	  restore-bounce.tcl: Added files to restore user accounts if email
+	  is bouncing
+
+2007-04-08 23:36  maltes
+
+	* packages/acs-mail-lite/tcl/incoming-mail-procs.tcl: Added support
+	  for autoreplys
+
+2007-04-08 23:18  maltes
+
+	* packages/acs-mail-lite/tcl/: acs-mail-lite-procs-oracle.xql,
+	  acs-mail-lite-procs-postgresql.xql, acs-mail-lite-procs.xql,
+	  bounce-procs-oracle.xql, bounce-procs-postgresql.xql,
+	  bounce-procs.tcl, bounce-procs.xql: Some more cleanup, put bounce
+	  restore in acs-subsite
+
+2007-04-08 01:25  maltes
+
+	* packages/acs-mail-lite/:
+	  catalog/acs-mail-lite.en_US.ISO-8859-1.xml, tcl/bounce-procs.tcl,
+	  www/restore-bounce.adp, www/restore-bounce.tcl: Added enabling of
+	  bouncing e-mails
+
+2007-04-08 01:12  maltes
+
+	* packages/acs-mail-lite/: acs-mail-lite.info,
+	  tcl/acs-mail-lite-procs.tcl, tcl/bounce-procs.tcl,
+	  tcl/incoming-mail-procs.tcl: Some cleanup
+
+2007-04-06 10:36  gustafn
+
+	* packages/acs-tcl/tcl/00-database-procs.tcl: fix db_string to work
+	  with different databases
+
+2007-03-29 16:13  victorg
+
+	* packages/acs-api-browser/lib/search.tcl: Typo in var name (
+	  db_doc_serch_query_name )
+
+2007-03-28 23:51  gustafn
+
+	* packages/acs-content-repository/: acs-content-repository.info,
+	  sql/common/mime-type-data.sql,
+	  sql/common/upgrade/upgrade-5.3.0b1-5.3.0b2.sql: add mime types
+	  for .xpi and .mp4
+
+2007-03-26 23:34  gustafn
+
+	* packages/acs-admin/www/install/index.adp: fix: add needed ending
+	  slash in link pointing to http://openacs.org/repository/
+
+2007-03-16 22:31  maltes
+
+	* packages/acs-subsite/www/register/user-new.tcl: Made sure you
+	  pass on the return_url to the alternative registration
+
+2007-03-14 06:21  daveb
+
+	* packages/acs-templating/www/scripts/xinha/attach-file.adp: Add
+	  link capabilities for attach-file
+
+2007-03-14 01:55  maltes
+
+	* packages/acs-tcl/tcl/request-processor-procs.tcl: Added charset
+	  support from oacs-5-3
+
+2007-03-13 05:48  daveb
+
+	* packages/acs-templating/www/scripts/xinha/attach-file.tcl: Make
+	  sure f_href is set so the javascript can pass the link back to
+	  xinha.
+
+2007-03-13 01:09  maltes
+
+	* packages/acs-tcl/tcl/: site-nodes-procs-oracle.xql,
+	  site-nodes-procs-postgresql.xql, site-nodes-procs.tcl,
+	  site-nodes-procs.xql: Implemented site node lazy caching. This
+	  will prevent the site from loading the whole site node at the
+	  startup but on demand
+
+2007-03-09 08:45  maltes
+
+	* packages/acs-tcl/tcl/: site-nodes-procs.tcl,
+	  site-nodes-procs.xql: provide a procedure to get the root_node_id
+	  and make it cached (as the root node_id will not change that
+	  easily without a restart)
+
+2007-02-27 16:31  jiml
+
+	* ChangeLog, etc/config.tcl: a config parameter read used a
+	  hardwired server name; unhardwired it
+
+2007-02-26 02:07  gustafn
+
+	* packages/acs-templating/tcl/richtext-procs.tcl: don't check HTML
+	  security properties, when the user is a side wide admin or a
+	  package admin
+
+2007-02-25 11:06  gustafn
+
+	* packages/acs-templating/www/resources/xinha-nightly/: Xinha.css,
+	  XinhaCore.js, htmlarea.js, release-notes.txt,
+	  examples/custom.css, examples/dynamic.css,
+	  examples/ext_example-body.html, examples/ext_example-menu.php,
+	  examples/ext_example.html, examples/full_example.css,
+	  examples/full_example.js, examples/stylist.css,
+	  examples/testbed.html, images/ed_about.gif, images/ed_align.gif,
+	  images/ed_align_center.gif, images/ed_align_justify.gif,
+	  images/ed_align_left.gif, images/ed_align_right.gif,
+	  images/ed_buttons_main.gif, images/ed_charmap.gif,
+	  images/ed_clearfonts.gif, images/ed_color_bg.gif,
+	  images/ed_color_fg.gif, images/ed_copy.gif, images/ed_custom.gif,
+	  images/ed_cut.gif, images/ed_delete.gif,
+	  images/ed_format_bold.gif, images/ed_format_italic.gif,
+	  images/ed_format_strike.gif, images/ed_format_sub.gif,
+	  images/ed_format_sup.gif, images/ed_format_underline.gif,
+	  images/ed_help.gif, images/ed_hr.gif, images/ed_html.gif,
+	  images/ed_image.gif, images/ed_indent_less.gif,
+	  images/ed_indent_more.gif, images/ed_killword.gif,
+	  images/ed_left_to_right.gif, images/ed_link.gif,
+	  images/ed_list_bullet.gif, images/ed_list_num.gif,
+	  images/ed_overwrite.gif, images/ed_paste.gif,
+	  images/ed_print.gif, images/ed_redo.gif,
+	  images/ed_right_to_left.gif, images/ed_rmformat.gif,
+	  images/ed_save.gif, images/ed_saveas.gif,
+	  images/ed_selectall.gif, images/ed_show_border.gif,
+	  images/ed_splitblock.gif, images/ed_splitcel.gif,
+	  images/ed_undo.gif, images/ed_word_cleaner.gif,
+	  images/fullscreen_maximize.gif, images/fullscreen_minimize.gif,
+	  images/insert_table.gif, images/insertfilelink.gif,
+	  images/tidy.gif, images/toggle_borders.gif,
+	  images/xinha_logo.gif, images/de/bold.gif, images/de/italic.gif,
+	  images/de/underline.gif, images/fr/bold.gif,
+	  images/fr/strikethrough.gif, images/fr/underline.gif, lang/b5.js,
+	  lang/ch.js, lang/cz.js, lang/da.js, lang/de.js, lang/ee.js,
+	  lang/el.js, lang/es.js, lang/fi.js, lang/fr.js, lang/gb.js,
+	  lang/he.js, lang/hu.js, lang/it.js, lang/ja.js, lang/lt.js,
+	  lang/lv.js, lang/nb.js, lang/nl.js, lang/ro.js, lang/ru.js,
+	  lang/si.js, lang/vn.js, modules/ColorPicker/ColorPicker.js,
+	  modules/CreateLink/link.js, modules/Dialogs/dialog.js,
+	  modules/Dialogs/inline-dialog.js, modules/Dialogs/popupwin.js,
+	  modules/FullScreen/full-screen.js, modules/FullScreen/lang/ja.js,
+	  modules/Gecko/Gecko.js, modules/Gecko/paraHandlerBest.js,
+	  modules/Gecko/paraHandlerDirty.js, modules/GetHtml/DOMwalk.js,
+	  modules/GetHtml/TransformInnerHTML.js,
+	  modules/InsertImage/insert_image.html,
+	  modules/InsertImage/insert_image.js,
+	  modules/InsertTable/insert_table.html,
+	  modules/InsertTable/insert_table.js,
+	  modules/InternetExplorer/InternetExplorer.js,
+	  plugins/Abbreviation/abbreviation.js,
+	  plugins/Abbreviation/img/ed_abbreviation.gif,
+	  plugins/Abbreviation/lang/ja.js,
+	  plugins/Abbreviation/popups/abbreviation.html,
+	  plugins/BackgroundImage/img/ed_bgimage.gif,
+	  plugins/BackgroundImage/lang/ja.js,
+	  plugins/BackgroundImage/popups/bgimage.html, plugins/CSS/css.js,
+	  plugins/CharCounter/char-counter.js,
+	  plugins/CharCounter/lang/ja.js,
+	  plugins/CharacterMap/character-map.js,
+	  plugins/CharacterMap/img/ed_charmap.gif,
+	  plugins/CharacterMap/lang/de.js, plugins/CharacterMap/lang/ja.js,
+	  plugins/CharacterMap/popups/select_character.html,
+	  plugins/ClientsideSpellcheck/img/clientside-spellcheck.gif,
+	  plugins/ClientsideSpellcheck/img/he-spell-check.gif,
+	  plugins/ClientsideSpellcheck/lang/ja.js,
+	  plugins/ContextMenu/1.pl, plugins/ContextMenu/context-menu.js,
+	  plugins/ContextMenu/lang/de.js, plugins/ContextMenu/lang/el.js,
+	  plugins/ContextMenu/lang/fr.js, plugins/ContextMenu/lang/he.js,
+	  plugins/ContextMenu/lang/ja.js, plugins/ContextMenu/lang/nl.js,
+	  plugins/DefinitionList/definition-list.js,
+	  plugins/DefinitionList/img/ed_dd.gif,
+	  plugins/DefinitionList/img/ed_dl.gif,
+	  plugins/DefinitionList/img/ed_dt.gif,
+	  plugins/DefinitionList/lang/ja.js,
+	  plugins/DynamicCSS/dynamiccss.js, plugins/DynamicCSS/lang/de.js,
+	  plugins/DynamicCSS/lang/fr.js, plugins/DynamicCSS/lang/ja.js,
+	  plugins/EditTag/img/ed_edit_tag.gif, plugins/EditTag/lang/ja.js,
+	  plugins/EditTag/popups/edit_tag.html,
+	  plugins/Equation/ASCIIMathML.js, plugins/Equation/equation.js,
+	  plugins/Equation/img/abs_value.gif,
+	  plugins/Equation/img/diag_fraction.gif,
+	  plugins/Equation/img/divide.gif,
+	  plugins/Equation/img/dsp_greater_equal.gif,
+	  plugins/Equation/img/dsp_less_equal.gif,
+	  plugins/Equation/img/dsp_notequal.gif,
+	  plugins/Equation/img/equation.gif,
+	  plugins/Equation/img/equation.old.gif,
+	  plugins/Equation/img/greater_equal_than.gif,
+	  plugins/Equation/img/hor_fraction.gif,
+	  plugins/Equation/img/less_equal_than.gif,
+	  plugins/Equation/img/mul.gif, plugins/Equation/img/notequal.gif,
+	  plugins/Equation/img/parenthesis.gif,
+	  plugins/Equation/img/root.gif,
+	  plugins/Equation/img/square_root.gif,
+	  plugins/Equation/lang/ja.js,
+	  plugins/ExtendedFileManager/config.inc.php,
+	  plugins/ExtendedFileManager/extended-file-manager.js,
+	  plugins/ExtendedFileManager/manager.php,
+	  plugins/ExtendedFileManager/resizer.php,
+	  plugins/ExtendedFileManager/Classes/ExtendedFileManager.php,
+	  plugins/ExtendedFileManager/assets/EditorContent.js,
+	  plugins/ExtendedFileManager/assets/dialog.js,
+	  plugins/ExtendedFileManager/assets/editor.js,
+	  plugins/ExtendedFileManager/assets/editorFrame.js,
+	  plugins/ExtendedFileManager/assets/images.js,
+	  plugins/ExtendedFileManager/assets/manager.js,
+	  plugins/ExtendedFileManager/assets/popup.js,
+	  plugins/ExtendedFileManager/assets/wz_jsgraphics.js,
+	  plugins/ExtendedFileManager/demo_images/linux/linux.gif,
+	  plugins/ExtendedFileManager/icons/def_small.gif,
+	  plugins/ExtendedFileManager/icons/doc.gif,
+	  plugins/ExtendedFileManager/icons/fla.gif,
+	  plugins/ExtendedFileManager/icons/fla_small.gif,
+	  plugins/ExtendedFileManager/icons/folder.gif,
+	  plugins/ExtendedFileManager/icons/folder_small.gif,
+	  plugins/ExtendedFileManager/icons/gz.gif,
+	  plugins/ExtendedFileManager/icons/gz_small.gif,
+	  plugins/ExtendedFileManager/icons/html.gif,
+	  plugins/ExtendedFileManager/icons/js.gif,
+	  plugins/ExtendedFileManager/icons/js_small.gif,
+	  plugins/ExtendedFileManager/icons/mov.gif,
+	  plugins/ExtendedFileManager/icons/mov_small.gif,
+	  plugins/ExtendedFileManager/icons/pdf.gif,
+	  plugins/ExtendedFileManager/icons/php.gif,
+	  plugins/ExtendedFileManager/icons/php_small.gif,
+	  plugins/ExtendedFileManager/icons/ppt.gif,
+	  plugins/ExtendedFileManager/icons/rar.gif,
+	  plugins/ExtendedFileManager/icons/rar_small.gif,
+	  plugins/ExtendedFileManager/icons/txt.gif,
+	  plugins/ExtendedFileManager/icons/txt_small.gif,
+	  plugins/ExtendedFileManager/icons/xls.gif,
+	  plugins/ExtendedFileManager/icons/zip.gif,
+	  plugins/ExtendedFileManager/icons/zip_small.gif,
+	  plugins/ExtendedFileManager/img/btnFolderNew.gif,
+	  plugins/ExtendedFileManager/img/btnFolderNew1.gif,
+	  plugins/ExtendedFileManager/img/btnFolderUp1.gif,
+	  plugins/ExtendedFileManager/img/btn_cancel.gif,
+	  plugins/ExtendedFileManager/img/btn_ok.gif,
+	  plugins/ExtendedFileManager/img/crop.gif,
+	  plugins/ExtendedFileManager/img/default.gif,
+	  plugins/ExtendedFileManager/img/div.gif,
+	  plugins/ExtendedFileManager/img/dots.gif,
+	  plugins/ExtendedFileManager/img/ed_linkfile.gif,
+	  plugins/ExtendedFileManager/img/ed_linkfile1.gif,
+	  plugins/ExtendedFileManager/img/edit_active.gif,
+	  plugins/ExtendedFileManager/img/edit_copy.gif,
+	  plugins/ExtendedFileManager/img/edit_cut.gif,
+	  plugins/ExtendedFileManager/img/edit_paste.gif,
+	  plugins/ExtendedFileManager/img/edit_pencil.gif,
+	  plugins/ExtendedFileManager/img/edit_rename.gif,
+	  plugins/ExtendedFileManager/img/edit_trash.gif,
+	  plugins/ExtendedFileManager/img/folder.gif,
+	  plugins/ExtendedFileManager/img/hand.gif,
+	  plugins/ExtendedFileManager/img/locked.gif,
+	  plugins/ExtendedFileManager/img/measure.gif,
+	  plugins/ExtendedFileManager/img/noimages.gif,
+	  plugins/ExtendedFileManager/img/rotate.gif,
+	  plugins/ExtendedFileManager/img/save.gif,
+	  plugins/ExtendedFileManager/img/scale.gif,
+	  plugins/ExtendedFileManager/img/t_black.gif,
+	  plugins/ExtendedFileManager/img/t_white.gif,
+	  plugins/ExtendedFileManager/img/unlocked.gif,
+	  plugins/ExtendedFileManager/img/unlocked2.gif,
+	  plugins/ExtendedFileManager/lang/ja.js,
+	  plugins/Filter/img/ed_filter.gif, plugins/Filter/lang/ja.js,
+	  plugins/FindReplace/fr_engine.js,
+	  plugins/FindReplace/img/ed_find.gif,
+	  plugins/FindReplace/lang/ja.js,
+	  plugins/FindReplace/popups/find_replace.html,
+	  plugins/FormOperations/form-operations.js,
+	  plugins/FormOperations/img/buttons.gif,
+	  plugins/FormOperations/lang/ja.js, plugins/Forms/forms.js,
+	  plugins/Forms/img/ed_button.gif,
+	  plugins/Forms/img/ed_checkbox.gif,
+	  plugins/Forms/img/ed_fieldset.gif, plugins/Forms/img/ed_file.gif,
+	  plugins/Forms/img/ed_form.gif, plugins/Forms/img/ed_hidden.gif,
+	  plugins/Forms/img/ed_image.gif, plugins/Forms/img/ed_label.gif,
+	  plugins/Forms/img/ed_password.gif,
+	  plugins/Forms/img/ed_radio.gif, plugins/Forms/img/ed_reset.gif,
+	  plugins/Forms/img/ed_select.gif, plugins/Forms/img/ed_submit.gif,
+	  plugins/Forms/img/ed_text.gif, plugins/Forms/img/ed_textarea.gif,
+	  plugins/Forms/lang/ja.js, plugins/Forms/popups/form.html,
+	  plugins/Forms/popups/input.html,
+	  plugins/Forms/popups/select.html,
+	  plugins/Forms/popups/textarea.html,
+	  plugins/FullPage/full-page.js, plugins/FullPage/img/docprop.gif,
+	  plugins/FullPage/lang/de.js, plugins/FullPage/lang/fr.js,
+	  plugins/FullPage/lang/he.js, plugins/FullPage/lang/ja.js,
+	  plugins/FullPage/lang/ro.js,
+	  plugins/FullPage/popups/docprop.html,
+	  plugins/HorizontalRule/horizontal-rule.js,
+	  plugins/HorizontalRule/lang/ja.js,
+	  plugins/HorizontalRule/popups/edit_horizontal_rule.html,
+	  plugins/HtmlEntities/Entities.js,
+	  plugins/HtmlEntities/html-entities.js,
+	  plugins/HtmlEntities/iso-8859-1.js,
+	  plugins/HtmlTidy/html-tidy-logic.php,
+	  plugins/HtmlTidy/html-tidy.js,
+	  plugins/HtmlTidy/img/html-tidy.gif, plugins/HtmlTidy/lang/ja.js,
+	  plugins/ImageManager/config.inc.php,
+	  plugins/ImageManager/editor.php,
+	  plugins/ImageManager/editorFrame.php,
+	  plugins/ImageManager/image-manager.js,
+	  plugins/ImageManager/images.php,
+	  plugins/ImageManager/manager.php,
+	  plugins/ImageManager/resizer.php,
+	  plugins/ImageManager/thumbs.php,
+	  plugins/ImageManager/Classes/Files.php,
+	  plugins/ImageManager/Classes/GD.php,
+	  plugins/ImageManager/Classes/IM.php,
+	  plugins/ImageManager/Classes/ImageEditor.php,
+	  plugins/ImageManager/Classes/ImageManager.php,
+	  plugins/ImageManager/Classes/NetPBM.php,
+	  plugins/ImageManager/Classes/Thumbnail.php,
+	  plugins/ImageManager/Classes/Transform.php,
+	  plugins/ImageManager/assets/EditorContent.js,
+	  plugins/ImageManager/assets/dialog.js,
+	  plugins/ImageManager/assets/editor.js,
+	  plugins/ImageManager/assets/editorFrame.js,
+	  plugins/ImageManager/assets/images.js,
+	  plugins/ImageManager/assets/manager.js,
+	  plugins/ImageManager/assets/popup.js,
+	  plugins/ImageManager/assets/wz_jsgraphics.js,
+	  plugins/ImageManager/demo_images/linux/linux.gif,
+	  plugins/ImageManager/img/btnFolderNew.gif,
+	  plugins/ImageManager/img/btnFolderUp.gif,
+	  plugins/ImageManager/img/btn_cancel.gif,
+	  plugins/ImageManager/img/btn_ok.gif,
+	  plugins/ImageManager/img/crop.gif,
+	  plugins/ImageManager/img/default.gif,
+	  plugins/ImageManager/img/div.gif,
+	  plugins/ImageManager/img/dots.gif,
+	  plugins/ImageManager/img/edit_active.gif,
+	  plugins/ImageManager/img/edit_pencil.gif,
+	  plugins/ImageManager/img/edit_trash.gif,
+	  plugins/ImageManager/img/folder.gif,
+	  plugins/ImageManager/img/hand.gif,
+	  plugins/ImageManager/img/locked.gif,
+	  plugins/ImageManager/img/measure.gif,
+	  plugins/ImageManager/img/noimages.gif,
+	  plugins/ImageManager/img/rotate.gif,
+	  plugins/ImageManager/img/save.gif,
+	  plugins/ImageManager/img/scale.gif,
+	  plugins/ImageManager/img/t_black.gif,
+	  plugins/ImageManager/img/t_white.gif,
+	  plugins/ImageManager/img/unlocked2.gif,
+	  plugins/ImageManager/lang/ja.js,
+	  plugins/InsertAnchor/insert-anchor.js,
+	  plugins/InsertAnchor/img/insert-anchor.gif,
+	  plugins/InsertAnchor/lang/ja.js,
+	  plugins/InsertAnchor/popups/insert_anchor.html,
+	  plugins/InsertMarquee/insert-marquee.js,
+	  plugins/InsertMarquee/img/ed_marquee.gif,
+	  plugins/InsertMarquee/lang/ja.js,
+	  plugins/InsertMarquee/popups/insert_marquee.html,
+	  plugins/InsertPagebreak/img/pagebreak.gif,
+	  plugins/InsertPagebreak/lang/ja.js,
+	  plugins/InsertPicture/InsertPicture.php,
+	  plugins/InsertPicture/img/btn_open.gif,
+	  plugins/InsertPicture/img/nopic.gif,
+	  plugins/InsertPicture/lang/ja.js,
+	  plugins/InsertSmiley/img/ed_smiley.gif,
+	  plugins/InsertSmiley/lang/ja.js,
+	  plugins/InsertSmiley/popups/insertsmiley.html,
+	  plugins/InsertSmiley/smileys/0009.gif,
+	  plugins/InsertSmiley/smileys/0010.gif,
+	  plugins/InsertSmiley/smileys/0011.gif,
+	  plugins/InsertSmiley/smileys/0013.gif,
+	  plugins/InsertSmiley/smileys/0015.gif,
+	  plugins/InsertSmiley/smileys/0016.gif,
+	  plugins/InsertSmiley/smileys/0018.gif,
+	  plugins/InsertSmiley/smileys/0019.gif,
+	  plugins/InsertSmiley/smileys/0020.gif,
+	  plugins/InsertSmiley/smileys/0021.gif,
+	  plugins/InsertSmiley/smileys/0022.gif,
+	  plugins/InsertSmiley/smileys/0023.gif,
+	  plugins/InsertSmiley/smileys/0024.gif,
+	  plugins/InsertSmiley/smileys/0025.gif,
+	  plugins/InsertSmiley/smileys/0026.gif,
+	  plugins/InsertSmiley/smileys/0027.gif,
+	  plugins/InsertSmiley/smileys/0028.gif,
+	  plugins/InsertSmiley/smileys/0029.gif,
+	  plugins/InsertSmiley/smileys/0030.gif,
+	  plugins/InsertSmiley/smileys/0031.gif,
+	  plugins/InsertSmiley/smileys/0033.gif,
+	  plugins/InsertSmiley/smileys/0036.gif,
+	  plugins/InsertSmiley/smileys/0038.gif,
+	  plugins/InsertSmiley/smileys/0039.gif,
+	  plugins/InsertSmiley/smileys/0041.gif,
+	  plugins/InsertSmiley/smileys/0042.gif,
+	  plugins/InsertSmiley/smileys/0043.gif,
+	  plugins/InsertSmiley/smileys/0044.gif,
+	  plugins/InsertSmiley/smileys/0045.gif,
+	  plugins/InsertSmiley/smileys/0046.gif,
+	  plugins/InsertSmiley/smileys/0047.gif,
+	  plugins/InsertSmiley/smileys/0048.gif,
+	  plugins/InsertSmiley/smileys/0049.gif,
+	  plugins/InsertSmiley/smileys/0051.gif,
+	  plugins/InsertSmiley/smileys/0052.gif,
+	  plugins/InsertSmiley/smileys/0055.gif,
+	  plugins/InsertSmiley/smileys/0056.gif,
+	  plugins/InsertSmiley/smileys/0057.gif,
+	  plugins/InsertSmiley/smileys/0058.gif,
+	  plugins/InsertSmiley/smileys/0059.gif,
+	  plugins/InsertSmiley/smileys/0060.gif,
+	  plugins/InsertSmiley/smileys/0061.gif,
+	  plugins/InsertSmiley/smileys/0062.gif,
+	  plugins/InsertSmiley/smileys/0064.gif,
+	  plugins/InsertSmiley/smileys/0065.gif,
+	  plugins/InsertSmiley/smileys/0066.gif,
+	  plugins/InsertSmiley/smileys/0067.gif,
+	  plugins/InsertSmiley/smileys/0068.gif,
+	  plugins/InsertSmiley/smileys/0070.gif,
+	  plugins/InsertSmiley/smileys/0071.gif,
+	  plugins/InsertSmiley/smileys/0072.gif,
+	  plugins/InsertSmiley/smileys/0074.gif,
+	  plugins/InsertSmiley/smileys/0076.gif,
+	  plugins/InsertSmiley/smileys/0077.gif,
+	  plugins/InsertSmiley/smileys/0080.gif,
+	  plugins/InsertSmiley/smileys/0082.gif,
+	  plugins/InsertSmiley/smileys/0083.gif,
+	  plugins/InsertSmiley/smileys/0084.gif,
+	  plugins/InsertSmiley/smileys/0085.gif,
+	  plugins/InsertSmiley/smileys/0086.gif,
+	  plugins/InsertSmiley/smileys/0087.gif,
+	  plugins/InsertSmiley/smileys/0088.gif,
+	  plugins/InsertSmiley/smileys/0089.gif,
+	  plugins/InsertSmiley/smileys/0090.gif,
+	  plugins/InsertSmiley/smileys/0091.gif,
+	  plugins/InsertSmiley/smileys/0092.gif,
+	  plugins/InsertSmiley/smileys/0093.gif,
+	  plugins/InsertSmiley/smileys/0094.gif,
+	  plugins/InsertSmiley/smileys/0096.gif,
+	  plugins/InsertSmiley/smileys/0097.gif,
+	  plugins/InsertSmiley/smileys/0098.gif,
+	  plugins/InsertSmiley/smileys/0099.gif,
+	  plugins/InsertSmiley/smileys/0100.gif,
+	  plugins/InsertSmiley/smileys/0101.gif,
+	  plugins/InsertSmiley/smileys/0102.gif,
+	  plugins/InsertSmiley/smileys/0103.gif,
+	  plugins/InsertSmiley/smileys/0104.gif,
+	  plugins/InsertSmiley/smileys/0105.gif,
+	  plugins/InsertSmiley/smileys/0106.gif,
+	  plugins/InsertSmiley/smileys/0107.gif,
+	  plugins/InsertSmiley/smileys/0108.gif,
+	  plugins/InsertSmiley/smileys/0109.gif,
+	  plugins/InsertSmiley/smileys/0110.gif,
+	  plugins/InsertSmiley/smileys/0111.gif,
+	  plugins/InsertSmiley/smileys/0112.gif,
+	  plugins/InsertSmiley/smileys/0113.gif,
+	  plugins/InsertSmiley/smileys/0115.gif,
+	  plugins/InsertSmiley/smileys/0116.gif,
+	  plugins/InsertSmiley/smileys/0117.gif,
+	  plugins/InsertSmiley/smileys/0118.gif,
+	  plugins/InsertSmiley/smileys/0119.gif,
+	  plugins/InsertSmiley/smileys/0120.gif,
+	  plugins/InsertSmiley/smileys/0121.gif,
+	  plugins/InsertSmiley/smileys/0122.gif,
+	  plugins/InsertSmiley/smileys/0123.gif,
+	  plugins/InsertSmiley/smileys/0124.gif,
+	  plugins/InsertSmiley/smileys/0125.gif,
+	  plugins/InsertSmiley/smileys/0126.gif,
+	  plugins/InsertSmiley/smileys/0128.gif,
+	  plugins/InsertSmiley/smileys/0129.gif,
+	  plugins/InsertSmiley/smileys/0130.gif,
+	  plugins/InsertSmiley/smileys/0131.gif,
+	  plugins/InsertSmiley/smileys/0132.gif,
+	  plugins/InsertSmiley/smileys/0133.gif,
+	  plugins/InsertSmiley/smileys/0134.gif,
+	  plugins/InsertSmiley/smileys/0135.gif,
+	  plugins/InsertSmiley/smileys/0136.gif,
+	  plugins/InsertSmiley/smileys/0137.gif,
+	  plugins/InsertSmiley/smileys/0138.gif,
+	  plugins/InsertSmiley/smileys/0139.gif,
+	  plugins/InsertSmiley/smileys/0140.gif,
+	  plugins/InsertSmiley/smileys/0141.gif,
+	  plugins/InsertSmiley/smileys/0142.gif,
+	  plugins/InsertSmiley/smileys/0144.gif,
+	  plugins/InsertSmiley/smileys/0145.gif,
+	  plugins/InsertSmiley/smileys/0146.gif,
+	  plugins/InsertSmiley/smileys/0147.gif,
+	  plugins/InsertSmiley/smileys/0148.gif,
+	  plugins/InsertSmiley/smileys/0149.gif,
+	  plugins/InsertSmiley/smileys/0150.gif,
+	  plugins/InsertSmiley/smileys/0151.gif,
+	  plugins/InsertSmiley/smileys/0152.gif,
+	  plugins/InsertSmiley/smileys/0153.gif,
+	  plugins/InsertSmiley/smileys/0154.gif,
+	  plugins/InsertSmiley/smileys/0155.gif,
+	  plugins/InsertSmiley/smileys/0156.gif,
+	  plugins/InsertSmiley/smileys/0157.gif,
+	  plugins/InsertSmiley/smileys/0158.gif,
+	  plugins/InsertSmiley/smileys/0159.gif,
+	  plugins/InsertSmiley/smileys/0160.gif,
+	  plugins/InsertSmiley/smileys/0161.gif,
+	  plugins/InsertSmiley/smileys/0162.gif,
+	  plugins/InsertSmiley/smileys/0163.gif,
+	  plugins/InsertSmiley/smileys/0164.gif,
+	  plugins/InsertSmiley/smileys/0165.gif,
+	  plugins/InsertSmiley/smileys/0166.gif,
+	  plugins/InsertSmiley/smileys/0167.gif,
+	  plugins/InsertSmiley/smileys/0168.gif,
+	  plugins/InsertSmiley/smileys/0169.gif,
+	  plugins/InsertSmiley/smileys/0170.gif,
+	  plugins/InsertSmiley/smileys/0171.gif,
+	  plugins/InsertSmiley/smileys/0172.gif,
+	  plugins/InsertSmiley/smileys/0174.gif,
+	  plugins/InsertSmiley/smileys/0175.gif,
+	  plugins/InsertSmiley/smileys/0176.gif,
+	  plugins/InsertSmiley/smileys/0177.gif,
+	  plugins/InsertSmiley/smileys/0178.gif,
+	  plugins/InsertSmiley/smileys/0179.gif,
+	  plugins/InsertSmiley/smileys/0180.gif,
+	  plugins/InsertSmiley/smileys/0181.gif,
+	  plugins/InsertSmiley/smileys/0182.gif,
+	  plugins/InsertSmiley/smileys/0183.gif,
+	  plugins/InsertSmiley/smileys/0184.gif,
+	  plugins/InsertSmiley/smileys/0185.gif,
+	  plugins/InsertSmiley/smileys/0186.gif,
+	  plugins/InsertSmiley/smileys/0187.gif,
+	  plugins/InsertSmiley/smileys/0188.gif,
+	  plugins/InsertSmiley/smileys/0189.gif,
+	  plugins/InsertSmiley/smileys/0190.gif,
+	  plugins/InsertSmiley/smileys/0192.gif,
+	  plugins/InsertSmiley/smileys/0193.gif,
+	  plugins/InsertSmiley/smileys/0194.gif,
+	  plugins/InsertSmiley/smileys/0195.gif,
+	  plugins/InsertSmiley/smileys/0196.gif,
+	  plugins/InsertSmiley/smileys/0197.gif,
+	  plugins/InsertSmiley/smileys/0198.gif,
+	  plugins/InsertSmiley/smileys/0199.gif,
+	  plugins/InsertSmiley/smileys/0200.gif,
+	  plugins/InsertSmiley/smileys/0201.gif,
+	  plugins/InsertSmiley/smileys/0202.gif,
+	  plugins/InsertSmiley/smileys/0205.gif,
+	  plugins/InsertSmiley/smileys/0206.gif,
+	  plugins/InsertSmiley/smileys/0207.gif,
+	  plugins/InsertSmiley/smileys/0208.gif,
+	  plugins/InsertSmiley/smileys/0209.gif,
+	  plugins/InsertSmiley/smileys/0210.gif,
+	  plugins/InsertSmiley/smileys/0211.gif,
+	  plugins/InsertSmiley/smileys/0212.gif,
+	  plugins/InsertSmiley/smileys/0213.gif,
+	  plugins/InsertSmiley/smileys/0214.gif,
+	  plugins/InsertSmiley/smileys/0215.gif,
+	  plugins/InsertSmiley/smileys/0216.gif,
+	  plugins/InsertSmiley/smileys/0217.gif,
+	  plugins/InsertSmiley/smileys/0218.gif,
+	  plugins/InsertSmiley/smileys/0219.gif,
+	  plugins/InsertSmiley/smileys/0220.gif,
+	  plugins/InsertSmiley/smileys/0222.gif,
+	  plugins/InsertSmiley/smileys/0223.gif,
+	  plugins/InsertSmiley/smileys/0224.gif,
+	  plugins/InsertSmiley/smileys/0225.gif,
+	  plugins/InsertSmiley/smileys/0226.gif,
+	  plugins/InsertSmiley/smileys/0227.gif,
+	  plugins/InsertSmiley/smileys/0228.gif,
+	  plugins/InsertSmiley/smileys/0229.gif,
+	  plugins/InsertSmiley/smileys/0230.gif,
+	  plugins/InsertSmiley/smileys/0231.gif,
+	  plugins/InsertSmiley/smileys/0232.gif,
+	  plugins/InsertSmiley/smileys/0233.gif,
+	  plugins/InsertSmiley/smileys/0234.gif,
+	  plugins/InsertSmiley/smileys/0235.gif,
+	  plugins/InsertSmiley/smileys/0236.gif,
+	  plugins/InsertSmiley/smileys/0237.gif,
+	  plugins/InsertSmiley/smileys/0238.gif,
+	  plugins/InsertSmiley/smileys/0239.gif,
+	  plugins/InsertSmiley/smileys/0240.gif,
+	  plugins/InsertSmiley/smileys/0241.gif,
+	  plugins/InsertSmiley/smileys/0242.gif,
+	  plugins/InsertSmiley/smileys/0243.gif,
+	  plugins/InsertSmiley/smileys/0244.gif,
+	  plugins/InsertSmiley/smileys/0245.gif,
+	  plugins/InsertSmiley/smileys/0246.gif,
+	  plugins/InsertSmiley/smileys/0247.gif,
+	  plugins/InsertSmiley/smileys/0248.gif,
+	  plugins/InsertSmiley/smileys/0249.gif,
+	  plugins/InsertSmiley/smileys/0250.gif,
+	  plugins/InsertSmiley/smileys/0251.gif,
+	  plugins/InsertSmiley/smileys/0252.gif,
+	  plugins/InsertSmiley/smileys/0254.gif,
+	  plugins/InsertSmiley/smileys/0255.gif,
+	  plugins/InsertSmiley/smileys/0257.gif,
+	  plugins/InsertSmiley/smileys/0259.gif,
+	  plugins/InsertSmiley/smileys/0260.gif,
+	  plugins/InsertSmiley/smileys/0261.gif,
+	  plugins/InsertSmiley/smileys/0262.gif,
+	  plugins/InsertSmiley/smileys/0263.gif,
+	  plugins/InsertSmiley/smileys/0264.gif,
+	  plugins/InsertSmiley/smileys/0265.gif,
+	  plugins/InsertSmiley/smileys/0266.gif,
+	  plugins/InsertSmiley/smileys/0267.gif,
+	  plugins/InsertSmiley/smileys/0268.gif,
+	  plugins/InsertSmiley/smileys/0269.gif,
+	  plugins/InsertSmiley/smileys/0270.gif,
+	  plugins/InsertSmiley/smileys/0271.gif,
+	  plugins/InsertSmiley/smileys/0272.gif,
+	  plugins/InsertSmiley/smileys/0273.gif,
+	  plugins/InsertSmiley/smileys/0275.gif,
+	  plugins/InsertSmiley/smileys/0276.gif,
+	  plugins/InsertSmiley/smileys/0277.gif,
+	  plugins/InsertSmiley/smileys/0278.gif,
+	  plugins/InsertSmiley/smileys/0279.gif,
+	  plugins/InsertSmiley/smileys/0280.gif,
+	  plugins/InsertSmiley/smileys/0281.gif,
+	  plugins/InsertSmiley/smileys/0282.gif,
+	  plugins/InsertSmiley/smileys/0284.gif,
+	  plugins/InsertSmiley/smileys/0285.gif,
+	  plugins/InsertSmiley/smileys/0286.gif,
+	  plugins/InsertSmiley/smileys/0287.gif,
+	  plugins/InsertSmiley/smileys/0288.gif,
+	  plugins/InsertSmiley/smileys/0289.gif,
+	  plugins/InsertSmiley/smileys/0290.gif,
+	  plugins/InsertSmiley/smileys/0291.gif,
+	  plugins/InsertSmiley/smileys/0292.gif,
+	  plugins/InsertSmiley/smileys/0293.gif,
+	  plugins/InsertSmiley/smileys/0294.gif,
+	  plugins/InsertSmiley/smileys/0295.gif,
+	  plugins/InsertSmiley/smileys/0297.gif,
+	  plugins/InsertSmiley/smileys/0298.gif,
+	  plugins/InsertSmiley/smileys/0299.gif,
+	  plugins/InsertSmiley/smileys/0300.gif,
+	  plugins/InsertSmiley/smileys/0301.gif,
+	  plugins/InsertSmiley/smileys/0302.gif,
+	  plugins/InsertSmiley/smileys/0303.gif,
+	  plugins/InsertSmiley/smileys/0304.gif,
+	  plugins/InsertSmiley/smileys/0305.gif,
+	  plugins/InsertSmiley/smileys/0307.gif,
+	  plugins/InsertSmiley/smileys/0308.gif,
+	  plugins/InsertSmiley/smileys/0309.gif,
+	  plugins/InsertSmiley/smileys/0310.gif,
+	  plugins/InsertSmiley/smileys/0311.gif,
+	  plugins/InsertSmiley/smileys/0313.gif,
+	  plugins/InsertSmiley/smileys/0314.gif,
+	  plugins/InsertSmiley/smileys/0315.gif,
+	  plugins/InsertSmiley/smileys/0316.gif,
+	  plugins/InsertSmiley/smileys/0317.gif,
+	  plugins/InsertSmiley/smileys/0318.gif,
+	  plugins/InsertSmiley/smileys/0319.gif,
+	  plugins/InsertSmiley/smileys/0320.gif,
+	  plugins/InsertSmiley/smileys/0322.gif,
+	  plugins/InsertSmiley/smileys/0323.gif,
+	  plugins/InsertSmiley/smileys/0324.gif,
+	  plugins/InsertSmiley/smileys/0325.gif,
+	  plugins/InsertSmiley/smileys/0327.gif,
+	  plugins/InsertSmiley/smileys/0328.gif,
+	  plugins/InsertSmiley/smileys/0329.gif,
+	  plugins/InsertSmiley/smileys/0330.gif,
+	  plugins/InsertSmiley/smileys/0331.gif,
+	  plugins/InsertSmiley/smileys/0332.gif,
+	  plugins/InsertSmiley/smileys/0333.gif,
+	  plugins/InsertSmiley/smileys/0336.gif,
+	  plugins/InsertSmiley/smileys/0337.gif,
+	  plugins/InsertSmiley/smileys/0338.gif,
+	  plugins/InsertSmiley/smileys/0339.gif,
+	  plugins/InsertSmiley/smileys/0340.gif,
+	  plugins/InsertSmiley/smileys/0341.gif,
+	  plugins/InsertSmiley/smileys/0342.gif,
+	  plugins/InsertSmiley/smileys/0343.gif,
+	  plugins/InsertSmiley/smileys/0344.gif,
+	  plugins/InsertSmiley/smileys/0345.gif,
+	  plugins/InsertSmiley/smileys/0346.gif,
+	  plugins/InsertSmiley/smileys/0347.gif,
+	  plugins/InsertSmiley/smileys/0348.gif,
+	  plugins/InsertSmiley/smileys/0349.gif,
+	  plugins/InsertSmiley/smileys/0350.gif,
+	  plugins/InsertSmiley/smileys/0351.gif,
+	  plugins/InsertSmiley/smileys/0352.gif,
+	  plugins/InsertSmiley/smileys/0353.gif,
+	  plugins/InsertSmiley/smileys/0354.gif,
+	  plugins/InsertSmiley/smileys/0355.gif,
+	  plugins/InsertSmiley/smileys/0356.gif,
+	  plugins/InsertSmiley/smileys/0357.gif,
+	  plugins/InsertSmiley/smileys/0358.gif,
+	  plugins/InsertSmiley/smileys/0359.gif,
+	  plugins/InsertSmiley/smileys/0360.gif,
+	  plugins/InsertSmiley/smileys/0361.gif,
+	  plugins/InsertSmiley/smileys/0362.gif,
+	  plugins/InsertSmiley/smileys/0363.gif,
+	  plugins/InsertSmiley/smileys/0364.gif,
+	  plugins/InsertSmiley/smileys/0365.gif,
+	  plugins/InsertSmiley/smileys/0366.gif,
+	  plugins/InsertSmiley/smileys/0367.gif,
+	  plugins/InsertSmiley/smileys/0368.gif,
+	  plugins/InsertSmiley/smileys/0369.gif,
+	  plugins/InsertSmiley/smileys/0370.gif,
+	  plugins/InsertSmiley/smileys/0372.gif,
+	  plugins/InsertSmiley/smileys/0373.gif,
+	  plugins/InsertSmiley/smileys/0375.gif,
+	  plugins/InsertSmiley/smileys/0376.gif,
+	  plugins/InsertSmiley/smileys/0377.gif,
+	  plugins/InsertSmiley/smileys/0378.gif,
+	  plugins/InsertSmiley/smileys/0380.gif,
+	  plugins/InsertSmiley/smileys/0381.gif,
+	  plugins/InsertSmiley/smileys/0382.gif,
+	  plugins/InsertSmiley/smileys/0383.gif,
+	  plugins/InsertSmiley/smileys/0384.gif,
+	  plugins/InsertSmiley/smileys/0385.gif,
+	  plugins/InsertSmiley/smileys/0386.gif,
+	  plugins/InsertSmiley/smileys/0387.gif,
+	  plugins/InsertSmiley/smileys/0388.gif,
+	  plugins/InsertSmiley/smileys/0389.gif,
+	  plugins/InsertSmiley/smileys/0390.gif,
+	  plugins/InsertSmiley/smileys/0391.gif,
+	  plugins/InsertSmiley/smileys/0392.gif,
+	  plugins/InsertSmiley/smileys/0393.gif,
+	  plugins/InsertSmiley/smileys/0394.gif,
+	  plugins/InsertSmiley/smileys/0396.gif,
+	  plugins/InsertSmiley/smileys/0397.gif,
+	  plugins/InsertSmiley/smileys/0398.gif,
+	  plugins/InsertSmiley/smileys/0399.gif,
+	  plugins/InsertSmiley/smileys/0400.gif,
+	  plugins/InsertSmiley/smileys/0401.gif,
+	  plugins/InsertSmiley/smileys/0402.gif,
+	  plugins/InsertSmiley/smileys/0403.gif,
+	  plugins/InsertSmiley/smileys/0404.gif,
+	  plugins/InsertSmiley/smileys/0406.gif,
+	  plugins/InsertSmiley/smileys/0407.gif,
+	  plugins/InsertSmiley/smileys/0408.gif,
+	  plugins/InsertSmiley/smileys/0409.gif,
+	  plugins/InsertSmiley/smileys/0410.gif,
+	  plugins/InsertSmiley/smileys/0411.gif,
+	  plugins/InsertSmiley/smileys/0412.gif,
+	  plugins/InsertSmiley/smileys/0413.gif,
+	  plugins/InsertSmiley/smileys/0414.gif,
+	  plugins/InsertSmiley/smileys/0416.gif,
+	  plugins/InsertSmiley/smileys/0417.gif,
+	  plugins/InsertSmiley/smileys/0418.gif,
+	  plugins/InsertSmiley/smileys/0419.gif,
+	  plugins/InsertSmiley/smileys/0420.gif,
+	  plugins/InsertSmiley/smileys/0421.gif,
+	  plugins/InsertSmiley/smileys/0422.gif,
+	  plugins/InsertSmiley/smileys/0423.gif,
+	  plugins/InsertSmiley/smileys/0424.gif,
+	  plugins/InsertSmiley/smileys/0425.gif,
+	  plugins/InsertSmiley/smileys/0426.gif,
+	  plugins/InsertSmiley/smileys/0427.gif,
+	  plugins/InsertSmiley/smileys/0428.gif,
+	  plugins/InsertSmiley/smileys/0429.gif,
+	  plugins/InsertSmiley/smileys/0430.gif,
+	  plugins/InsertSmiley/smileys/0431.gif,
+	  plugins/InsertSmiley/smileys/0432.gif,
+	  plugins/InsertSmiley/smileys/0433.gif,
+	  plugins/InsertSmiley/smileys/0434.gif,
+	  plugins/InsertSmiley/smileys/0435.gif,
+	  plugins/InsertSmiley/smileys/0436.gif,
+	  plugins/InsertSmiley/smileys/0437.gif,
+	  plugins/InsertSmiley/smileys/0438.gif,
+	  plugins/InsertSmiley/smileys/0439.gif,
+	  plugins/InsertSmiley/smileys/0441.gif,
+	  plugins/InsertSmiley/smileys/0442.gif,
+	  plugins/InsertSmiley/smileys/0443.gif,
+	  plugins/InsertSmiley/smileys/0444.gif,
+	  plugins/InsertSmiley/smileys/0445.gif,
+	  plugins/InsertSmiley/smileys/0446.gif,
+	  plugins/InsertSmiley/smileys/0447.gif,
+	  plugins/InsertSmiley/smileys/0448.gif,
+	  plugins/InsertSmiley/smileys/0449.gif,
+	  plugins/InsertSmiley/smileys/0450.gif,
+	  plugins/InsertSmiley/smileys/0451.gif,
+	  plugins/InsertSmiley/smileys/0452.gif,
+	  plugins/InsertSmiley/smileys/0453.gif,
+	  plugins/InsertSmiley/smileys/0454.gif,
+	  plugins/InsertSmiley/smileys/0456.gif,
+	  plugins/InsertSmiley/smileys/0457.gif,
+	  plugins/InsertSmiley/smileys/0458.gif,
+	  plugins/InsertSmiley/smileys/0459.gif,
+	  plugins/InsertSmiley/smileys/0461.gif,
+	  plugins/InsertSmiley/smileys/0462.gif,
+	  plugins/InsertSmiley/smileys/0463.gif,
+	  plugins/InsertSmiley/smileys/0464.gif,
+	  plugins/InsertSmiley/smileys/0465.gif,
+	  plugins/InsertSmiley/smileys/0466.gif,
+	  plugins/InsertSmiley/smileys/0467.gif,
+	  plugins/InsertSmiley/smileys/0468.gif,
+	  plugins/InsertSmiley/smileys/0469.gif,
+	  plugins/InsertSmiley/smileys/0471.gif,
+	  plugins/InsertSmiley/smileys/0472.gif,
+	  plugins/InsertSmiley/smileys/0473.gif,
+	  plugins/InsertSmiley/smileys/0474.gif,
+	  plugins/InsertSmiley/smileys/0475.gif,
+	  plugins/InsertSmiley/smileys/0476.gif,
+	  plugins/InsertSmiley/smileys/0477.gif,
+	  plugins/InsertSmiley/smileys/0478.gif,
+	  plugins/InsertSmiley/smileys/0479.gif,
+	  plugins/InsertSmiley/smileys/0480.gif,
+	  plugins/InsertSmiley/smileys/0482.gif,
+	  plugins/InsertSmiley/smileys/0483.gif,
+	  plugins/InsertSmiley/smileys/0484.gif,
+	  plugins/InsertSmiley/smileys/0485.gif,
+	  plugins/InsertSmiley/smileys/0486.gif,
+	  plugins/InsertSmiley/smileys/0487.gif,
+	  plugins/InsertSmiley/smileys/0488.gif,
+	  plugins/InsertSmiley/smileys/0489.gif,
+	  plugins/InsertSmiley/smileys/0490.gif,
+	  plugins/InsertSmiley/smileys/0492.gif,
+	  plugins/InsertSmiley/smileys/0493.gif,
+	  plugins/InsertSmiley/smileys/0494.gif,
+	  plugins/InsertSmiley/smileys/0495.gif,
+	  plugins/InsertSmiley/smileys/0496.gif,
+	  plugins/InsertSmiley/smileys/0497.gif,
+	  plugins/InsertSmiley/smileys/0498.gif,
+	  plugins/InsertSmiley/smileys/0500.gif,
+	  plugins/InsertSmiley/smileys/0501.gif,
+	  plugins/InsertSmiley/smileys/0502.gif,
+	  plugins/InsertSmiley/smileys/0503.gif,
+	  plugins/InsertSmiley/smileys/0504.gif,
+	  plugins/InsertSmiley/smileys/0505.gif,
+	  plugins/InsertSmiley/smileys/0506.gif,
+	  plugins/InsertSmiley/smileys/0507.gif,
+	  plugins/InsertSmiley/smileys/0508.gif,
+	  plugins/InsertSmiley/smileys/0509.gif,
+	  plugins/InsertSmiley/smileys/0510.gif,
+	  plugins/InsertSmiley/smileys/0511.gif,
+	  plugins/InsertSmiley/smileys/0512.gif,
+	  plugins/InsertSmiley/smileys/0513.gif,
+	  plugins/InsertSmiley/smileys/0514.gif,
+	  plugins/InsertSmiley/smileys/0515.gif,
+	  plugins/InsertSmiley/smileys/0516.gif,
+	  plugins/InsertSmiley/smileys/0517.gif,
+	  plugins/InsertSmiley/smileys/0518.gif,
+	  plugins/InsertSmiley/smileys/0519.gif,
+	  plugins/InsertSmiley/smileys/0520.gif,
+	  plugins/InsertSmiley/smileys/0521.gif,
+	  plugins/InsertSmiley/smileys/0522.gif,
+	  plugins/InsertSmiley/smileys/0523.gif,
+	  plugins/InsertSmiley/smileys/0524.gif,
+	  plugins/InsertSmiley/smileys/0525.gif,
+	  plugins/InsertSmiley/smileys/0526.gif,
+	  plugins/InsertSmiley/smileys/0528.gif,
+	  plugins/InsertSmiley/smileys/0530.gif,
+	  plugins/InsertSmiley/smileys/0531.gif,
+	  plugins/InsertSmiley/smileys/0532.gif,
+	  plugins/InsertSmiley/smileys/0534.gif,
+	  plugins/InsertSmiley/smileys/0535.gif,
+	  plugins/InsertSmiley/smileys/0536.gif,
+	  plugins/InsertSmiley/smileys/0537.gif,
+	  plugins/InsertSmiley/smileys/0538.gif,
+	  plugins/InsertSmiley/smileys/0539.gif,
+	  plugins/InsertSmiley/smileys/0540.gif,
+	  plugins/InsertSmiley/smileys/0542.gif,
+	  plugins/InsertSmiley/smileys/0543.gif,
+	  plugins/InsertSmiley/smileys/0544.gif,
+	  plugins/InsertSmiley/smileys/0545.gif,
+	  plugins/InsertSmiley/smileys/0546.gif,
+	  plugins/InsertSmiley/smileys/0547.gif,
+	  plugins/InsertSmiley/smileys/0548.gif,
+	  plugins/InsertSmiley/smileys/0549.gif,
+	  plugins/InsertSmiley/smileys/0550.gif,
+	  plugins/InsertSmiley/smileys/0551.gif,
+	  plugins/InsertSmiley/smileys/0552.gif,
+	  plugins/InsertSmiley/smileys/0553.gif,
+	  plugins/InsertSmiley/smileys/0554.gif,
+	  plugins/InsertSmiley/smileys/0555.gif,
+	  plugins/InsertSmiley/smileys/0556.gif,
+	  plugins/InsertSmiley/smileys/0557.gif,
+	  plugins/InsertSmiley/smileys/0558.gif,
+	  plugins/InsertSmiley/smileys/0559.gif,
+	  plugins/InsertSmiley/smileys/0560.gif,
+	  plugins/InsertSmiley/smileys/0561.gif,
+	  plugins/InsertSmiley/smileys/0564.gif,
+	  plugins/InsertSmiley/smileys/0566.gif,
+	  plugins/InsertSmiley/smileys/0567.gif,
+	  plugins/InsertSmiley/smileys/0568.gif,
+	  plugins/InsertSmiley/smileys/0569.gif,
+	  plugins/InsertSmiley/smileys/0570.gif,
+	  plugins/InsertSmiley/smileys/0571.gif,
+	  plugins/InsertSmiley/smileys/0572.gif,
+	  plugins/InsertSmiley/smileys/0573.gif,
+	  plugins/InsertSmiley/smileys/0574.gif,
+	  plugins/InsertSmiley/smileys/0575.gif,
+	  plugins/InsertSmiley/smileys/0576.gif,
+	  plugins/InsertSmiley/smileys/0577.gif,
+	  plugins/InsertSmiley/smileys/0578.gif,
+	  plugins/InsertSmiley/smileys/0579.gif,
+	  plugins/InsertSmiley/smileys/0580.gif,
+	  plugins/InsertSnippet/img/ed_snippet.gif,
+	  plugins/InsertSnippet/lang/ja.js, plugins/LangMarks/img/el.gif,
+	  plugins/LangMarks/img/en.gif, plugins/LangMarks/img/fr.gif,
+	  plugins/LangMarks/img/la.gif, plugins/LangMarks/lang/ja.js,
+	  plugins/Linker/dialog.html, plugins/Linker/linker.js,
+	  plugins/Linker/scan.php, plugins/Linker/dTree/api.html,
+	  plugins/Linker/dTree/dtree.js,
+	  plugins/Linker/dTree/example01.html,
+	  plugins/Linker/dTree/img/base.gif,
+	  plugins/Linker/dTree/img/cd.gif,
+	  plugins/Linker/dTree/img/copy.gif,
+	  plugins/Linker/dTree/img/folder.gif,
+	  plugins/Linker/dTree/img/folderopen.gif,
+	  plugins/Linker/dTree/img/globe.gif,
+	  plugins/Linker/dTree/img/imgfolder.gif,
+	  plugins/Linker/dTree/img/join.gif,
+	  plugins/Linker/dTree/img/joinbottom.gif,
+	  plugins/Linker/dTree/img/line.gif,
+	  plugins/Linker/dTree/img/minus.gif,
+	  plugins/Linker/dTree/img/minusbottom.gif,
+	  plugins/Linker/dTree/img/move.gif,
+	  plugins/Linker/dTree/img/musicfolder.gif,
+	  plugins/Linker/dTree/img/nolines_minus.gif,
+	  plugins/Linker/dTree/img/nolines_plus.gif,
+	  plugins/Linker/dTree/img/offline.gif,
+	  plugins/Linker/dTree/img/page.gif,
+	  plugins/Linker/dTree/img/plus.gif,
+	  plugins/Linker/dTree/img/plusbottom.gif,
+	  plugins/Linker/dTree/img/question.gif,
+	  plugins/Linker/dTree/img/trash.gif, plugins/Linker/lang/de.js,
+	  plugins/Linker/lang/fr.js, plugins/Linker/lang/ja.js,
+	  plugins/Linker/lang/pl.js, plugins/ListType/list-type.js,
+	  plugins/ListType/lang/de.js, plugins/ListType/lang/ja.js,
+	  plugins/NoteServer/note-server.js,
+	  plugins/NoteServer/img/note.gif, plugins/NoteServer/lang/ja.js,
+	  plugins/NoteServer/popups/codenote.html,
+	  plugins/PasteText/paste-text.js,
+	  plugins/PasteText/img/ed_paste_text.gif,
+	  plugins/PasteText/lang/ja.js,
+	  plugins/PasteText/popups/paste_text.html,
+	  plugins/QuickTag/tag-lib.js,
+	  plugins/QuickTag/img/ed_quicktag.gif,
+	  plugins/QuickTag/lang/ja.js,
+	  plugins/QuickTag/popups/quicktag.html,
+	  plugins/SaveSubmit/save-submit.js,
+	  plugins/SaveSubmit/img/ed_save_green.gif,
+	  plugins/SaveSubmit/img/ed_save_red.gif,
+	  plugins/SaveSubmit/lang/ja.js, plugins/SetId/img/set-id.gif,
+	  plugins/SetId/lang/ja.js, plugins/SetId/popups/set_id.html,
+	  plugins/SmartReplace/smart-replace.js,
+	  plugins/SmartReplace/lang/ja.js,
+	  plugins/SmartReplace/popups/dialog.html,
+	  plugins/SpellChecker/aspell_setup.php,
+	  plugins/SpellChecker/readme-tech.html,
+	  plugins/SpellChecker/spell-check-logic.cgi,
+	  plugins/SpellChecker/spell-check-logic.php,
+	  plugins/SpellChecker/spell-check-savedicts.php,
+	  plugins/SpellChecker/spell-check-ui.html,
+	  plugins/SpellChecker/spell-check-ui.js,
+	  plugins/SpellChecker/spell-checker.js,
+	  plugins/SpellChecker/img/he-spell-check.gif,
+	  plugins/SpellChecker/img/spell-check.gif,
+	  plugins/SpellChecker/lang/cz.js, plugins/SpellChecker/lang/da.js,
+	  plugins/SpellChecker/lang/de.js, plugins/SpellChecker/lang/he.js,
+	  plugins/SpellChecker/lang/hu.js, plugins/SpellChecker/lang/ja.js,
+	  plugins/SpellChecker/lang/nl.js, plugins/SpellChecker/lang/ro.js,
+	  plugins/Stylist/stylist.js, plugins/Stylist/lang/ja.js,
+	  plugins/SuperClean/dialog.html,
+	  plugins/SuperClean/super-clean.js, plugins/SuperClean/tidy.php,
+	  plugins/SuperClean/img/ed_superclean.gif,
+	  plugins/SuperClean/lang/ja.js,
+	  plugins/TableOperations/table-operations.js,
+	  plugins/TableOperations/img/cell-delete.gif,
+	  plugins/TableOperations/img/cell-insert-after.gif,
+	  plugins/TableOperations/img/cell-insert-before.gif,
+	  plugins/TableOperations/img/cell-merge.gif,
+	  plugins/TableOperations/img/cell-prop.gif,
+	  plugins/TableOperations/img/cell-split.gif,
+	  plugins/TableOperations/img/col-delete.gif,
+	  plugins/TableOperations/img/col-insert-after.gif,
+	  plugins/TableOperations/img/col-insert-before.gif,
+	  plugins/TableOperations/img/col-split.gif,
+	  plugins/TableOperations/img/row-delete.gif,
+	  plugins/TableOperations/img/row-insert-above.gif,
+	  plugins/TableOperations/img/row-insert-under.gif,
+	  plugins/TableOperations/img/row-prop.gif,
+	  plugins/TableOperations/img/row-split.gif,
+	  plugins/TableOperations/img/table-prop.gif,
+	  plugins/TableOperations/lang/cz.js,
+	  plugins/TableOperations/lang/da.js,
+	  plugins/TableOperations/lang/de.js,
+	  plugins/TableOperations/lang/el.js,
+	  plugins/TableOperations/lang/fi.js,
+	  plugins/TableOperations/lang/fr.js,
+	  plugins/TableOperations/lang/he.js,
+	  plugins/TableOperations/lang/it.js,
+	  plugins/TableOperations/lang/ja.js,
+	  plugins/TableOperations/lang/nb.js,
+	  plugins/TableOperations/lang/nl.js,
+	  plugins/TableOperations/lang/ro.js, plugins/Template/template.js,
+	  plugins/Template/img/ed_template.gif,
+	  plugins/Template/img/layout_01.gif,
+	  plugins/Template/img/layout_02.gif,
+	  plugins/Template/img/layout_03.gif, plugins/Template/lang/ja.js,
+	  plugins/UnFormat/img/unformat.gif, plugins/UnFormat/lang/ja.js,
+	  popups/about.html, popups/blank.html, popups/editor_help.html,
+	  popups/popup.css, popups/popup.js, popups/select_color.html,
+	  skins/blue-metallic/separator.gif,
+	  skins/green-look/button-background.gif,
+	  skins/green-look/separator.gif, skins/silva/html.gif: upgrade to
+	  version 0.92 beta hotfix 1
+
+2007-02-19 14:15  michaels
+
+	* packages/acs-kernel/sql/postgresql/acs-relationships-create.sql:
+	  define args for acs_rel__delete
+
+2007-02-17 08:53  gustafn
+
+	* packages/search/www/search.tcl: fix for bug 3061
+
+2007-02-13 21:29  carlb
+
+	* www/blank-master.adp: adding html lang attribute so we can pass
+	  WCAG P3 and getting rid of old RTE textarea to pass P2 (need to
+	  warn people upgrading that they might need to add that back if
+	  they are using RTE -- I added it to release notes I started in
+	  the wiki on openacs.org)
+
+2007-02-13 21:26  carlb
+
+	* www/blank-master.tcl: adding html lang attribute so we can pass
+	  WCAG P3
+
+2007-02-04 23:17  maltes
+
+	* packages/acs-tcl/tcl/test/acs-tcl-test-procs.tcl: Added test case
+
+2007-02-04 23:05  maltes
+
+	* packages/acs-tcl/tcl/: community-core-procs.tcl,
+	  community-core-procs.xql, test/acs-tcl-test-procs.tcl: Added
+	  procedure to check if a user is actually registered. We should
+	  probably change auth::require_login to check if the user is
+	  registered instead of just checking for the existance of the
+	  cookie
+
+2007-02-02 13:10  gustafn
+
 	*
-	  packages/acs-core-docs/www/xml/engineering-standards/docbook-primer.xml:
-	  changing package status url to most recent version
+	  packages/acs-templating/www/resources/xinha-nightly/plugins/ExtendedFileManager/assets/hover.htc:
+	  added missing file from xinha's extended file manager
 
-2004-11-18 11:01  torbenb
+2007-02-02 13:08  gustafn
 
+	* www/blank-master.adp: adjust blank-master to use the new xinha
+	  version
+
+2007-02-02 13:04  gustafn
+
+	* packages/acs-templating/www/resources/xinha-nightly/: Xinha.css,
+	  XinhaCore.js, dialog.js, functionsIE.js, functionsMozilla.js,
+	  getHTML.js, htmlarea.css, htmlarea.js, inline-dialog.js,
+	  panel-dialog.js, popupdiv.js, popupwin.js, release-notes.txt,
+	  contrib/compress.bat, contrib/compression_readme.txt,
+	  contrib/dojo_js_compressor.jar, contrib/lc_parse_strings.php,
+	  contrib/php-xinha.php, examples/custom.css, examples/dynamic.css,
+	  examples/ext_example-body.html, examples/ext_example-menu.php,
+	  examples/ext_example.html, examples/ext_example.js,
+	  examples/full_example-body.html, examples/full_example-menu.html,
+	  examples/full_example.css, examples/simple_example.html,
+	  examples/stylist.css, examples/testbed.html,
+	  images/xinha_logo.gif, lang/de.js, lang/fa.js, lang/fr.js,
+	  lang/nb.js, lang/no.js, lang/pl.js, lang/ru.js, lang/sv.js,
+	  modules/ColorPicker/ColorPicker.js, modules/CreateLink/link.html,
+	  modules/CreateLink/link.js, modules/Dialogs/dialog.js,
+	  modules/Dialogs/inline-dialog.js,
+	  modules/Dialogs/panel-dialog.js, modules/Dialogs/popupwin.js,
+	  modules/FullScreen/full-screen.js, modules/FullScreen/lang/de.js,
+	  modules/FullScreen/lang/fr.js, modules/FullScreen/lang/nb.js,
+	  modules/FullScreen/lang/pl.js, modules/FullScreen/lang/ru.js,
+	  modules/FullScreen/lang/sv.js, modules/Gecko/Gecko.js,
+	  modules/Gecko/paraHandlerBest.js,
+	  modules/Gecko/paraHandlerDirty.js, modules/GetHtml/DOMwalk.js,
+	  modules/GetHtml/TransformInnerHTML.js,
+	  modules/InsertImage/insert_image.html,
+	  modules/InsertImage/insert_image.js,
+	  modules/InsertTable/insert_table.html,
+	  modules/InsertTable/insert_table.js,
+	  modules/InternetExplorer/InternetExplorer.js,
+	  plugins/Abbreviation/lang/nb.js,
+	  plugins/BackgroundImage/lang/nb.js, plugins/CSS/css.js,
+	  plugins/CharCounter/char-counter.js,
+	  plugins/CharCounter/lang/de.js, plugins/CharCounter/lang/fr.js,
+	  plugins/CharCounter/lang/nb.js,
+	  plugins/CharacterMap/character-map.js,
+	  plugins/CharacterMap/lang/nb.js, plugins/CharacterMap/lang/sv.js,
+	  plugins/ClientsideSpellcheck/lang/nb.js,
+	  plugins/ContextMenu/context-menu.js,
+	  plugins/ContextMenu/lang/nb.js, plugins/ContextMenu/lang/sv.js,
+	  plugins/DefinitionList/definition-list.css,
+	  plugins/DefinitionList/definition-list.js,
+	  plugins/DefinitionList/img/ed_dd.gif,
+	  plugins/DefinitionList/img/ed_dl.gif,
+	  plugins/DefinitionList/img/ed_dt.gif,
+	  plugins/DoubleClick/double-click.js,
+	  plugins/DynamicCSS/lang/nb.js, plugins/EditTag/lang/nb.js,
+	  plugins/EnterParagraphs/enter-paragraphs.js,
+	  plugins/Equation/ASCIIMathML.js, plugins/Equation/equation.js,
+	  plugins/Equation/example.html, plugins/Equation/readme.txt,
+	  plugins/Equation/lang/de.js, plugins/Equation/lang/nb.js,
+	  plugins/Equation/popups/dialog.html,
+	  plugins/ExtendedFileManager/Readme.txt,
+	  plugins/ExtendedFileManager/backend.php,
+	  plugins/ExtendedFileManager/config.inc.php,
+	  plugins/ExtendedFileManager/editor.php,
+	  plugins/ExtendedFileManager/editorFrame.php,
+	  plugins/ExtendedFileManager/extended-file-manager.js,
+	  plugins/ExtendedFileManager/images.php,
+	  plugins/ExtendedFileManager/manager.php,
+	  plugins/ExtendedFileManager/resizer.php,
+	  plugins/ExtendedFileManager/thumbs.php,
+	  plugins/ExtendedFileManager/Classes/ExtendedFileManager.php,
+	  plugins/ExtendedFileManager/assets/EditorContent.js,
+	  plugins/ExtendedFileManager/assets/ImageEditor.css,
+	  plugins/ExtendedFileManager/assets/dialog.js,
+	  plugins/ExtendedFileManager/assets/editor.css,
+	  plugins/ExtendedFileManager/assets/editor.js,
+	  plugins/ExtendedFileManager/assets/editorFrame.css,
+	  plugins/ExtendedFileManager/assets/editorFrame.js,
+	  plugins/ExtendedFileManager/assets/imagelist.css,
+	  plugins/ExtendedFileManager/assets/images.js,
+	  plugins/ExtendedFileManager/assets/manager.css,
+	  plugins/ExtendedFileManager/assets/manager.js,
+	  plugins/ExtendedFileManager/assets/popup.js,
+	  plugins/ExtendedFileManager/assets/slider.js,
+	  plugins/ExtendedFileManager/assets/wz_jsgraphics.js,
+	  plugins/ExtendedFileManager/demo_images/bikerpeep.jpg,
+	  plugins/ExtendedFileManager/demo_images/wesnoth078.jpg,
+	  plugins/ExtendedFileManager/demo_images/linux/linux.gif,
+	  plugins/ExtendedFileManager/icons/def.gif,
+	  plugins/ExtendedFileManager/icons/def_small.gif,
+	  plugins/ExtendedFileManager/icons/doc.gif,
+	  plugins/ExtendedFileManager/icons/doc_small.gif,
+	  plugins/ExtendedFileManager/icons/fla.gif,
+	  plugins/ExtendedFileManager/icons/fla_small.gif,
+	  plugins/ExtendedFileManager/icons/folder.gif,
+	  plugins/ExtendedFileManager/icons/folder_small.gif,
+	  plugins/ExtendedFileManager/icons/gif_small.gif,
+	  plugins/ExtendedFileManager/icons/gz.gif,
+	  plugins/ExtendedFileManager/icons/gz_small.gif,
+	  plugins/ExtendedFileManager/icons/html.gif,
+	  plugins/ExtendedFileManager/icons/html_small.gif,
+	  plugins/ExtendedFileManager/icons/jpg_small.gif,
+	  plugins/ExtendedFileManager/icons/js.gif,
+	  plugins/ExtendedFileManager/icons/js_small.gif,
+	  plugins/ExtendedFileManager/icons/mov.gif,
+	  plugins/ExtendedFileManager/icons/mov_small.gif,
+	  plugins/ExtendedFileManager/icons/pdf.gif,
+	  plugins/ExtendedFileManager/icons/pdf_small.gif,
+	  plugins/ExtendedFileManager/icons/php.gif,
+	  plugins/ExtendedFileManager/icons/php_small.gif,
+	  plugins/ExtendedFileManager/icons/png_small.gif,
+	  plugins/ExtendedFileManager/icons/ppt.gif,
+	  plugins/ExtendedFileManager/icons/ppt_small.gif,
+	  plugins/ExtendedFileManager/icons/rar.gif,
+	  plugins/ExtendedFileManager/icons/rar_small.gif,
+	  plugins/ExtendedFileManager/icons/txt.gif,
+	  plugins/ExtendedFileManager/icons/txt_small.gif,
+	  plugins/ExtendedFileManager/icons/xls.gif,
+	  plugins/ExtendedFileManager/icons/xls_small.gif,
+	  plugins/ExtendedFileManager/icons/zip.gif,
+	  plugins/ExtendedFileManager/icons/zip_small.gif,
+	  plugins/ExtendedFileManager/img/1x1_transparent.gif,
+	  plugins/ExtendedFileManager/img/2x2.gif,
+	  plugins/ExtendedFileManager/img/2x2_w.gif,
+	  plugins/ExtendedFileManager/img/btnFolderNew.gif,
+	  plugins/ExtendedFileManager/img/btnFolderNew1.gif,
+	  plugins/ExtendedFileManager/img/btnFolderUp.gif,
+	  plugins/ExtendedFileManager/img/btnFolderUp1.gif,
+	  plugins/ExtendedFileManager/img/btn_cancel.gif,
+	  plugins/ExtendedFileManager/img/btn_ok.gif,
+	  plugins/ExtendedFileManager/img/crop.gif,
+	  plugins/ExtendedFileManager/img/default.gif,
+	  plugins/ExtendedFileManager/img/div.gif,
+	  plugins/ExtendedFileManager/img/dots.gif,
+	  plugins/ExtendedFileManager/img/ed_linkfile.gif,
+	  plugins/ExtendedFileManager/img/ed_linkfile1.gif,
+	  plugins/ExtendedFileManager/img/edit_active.gif,
+	  plugins/ExtendedFileManager/img/edit_copy.gif,
+	  plugins/ExtendedFileManager/img/edit_cut.gif,
+	  plugins/ExtendedFileManager/img/edit_paste.gif,
+	  plugins/ExtendedFileManager/img/edit_pencil.gif,
+	  plugins/ExtendedFileManager/img/edit_rename.gif,
+	  plugins/ExtendedFileManager/img/edit_trash.gif,
+	  plugins/ExtendedFileManager/img/folder.gif,
+	  plugins/ExtendedFileManager/img/hand.gif,
+	  plugins/ExtendedFileManager/img/islocked2.gif,
+	  plugins/ExtendedFileManager/img/locked.gif,
+	  plugins/ExtendedFileManager/img/measure.gif,
+	  plugins/ExtendedFileManager/img/noimages.gif,
+	  plugins/ExtendedFileManager/img/rotate.gif,
+	  plugins/ExtendedFileManager/img/save.gif,
+	  plugins/ExtendedFileManager/img/scale.gif,
+	  plugins/ExtendedFileManager/img/spacer.gif,
+	  plugins/ExtendedFileManager/img/t_black.gif,
+	  plugins/ExtendedFileManager/img/t_white.gif,
+	  plugins/ExtendedFileManager/img/unlocked.gif,
+	  plugins/ExtendedFileManager/img/unlocked2.gif,
+	  plugins/ExtendedFileManager/img/unlocked_empty.gif,
+	  plugins/ExtendedFileManager/lang/de.js,
+	  plugins/ExtendedFileManager/lang/nb.js,
+	  plugins/ExtendedFileManager/lang/nl.js,
+	  plugins/ExtendedFileManager/lang/pl.js, plugins/Filter/filter.js,
+	  plugins/FindReplace/lang/nb.js, plugins/FindReplace/lang/sv.js,
+	  plugins/FormOperations/form-operations.js,
+	  plugins/FormOperations/lang/nb.js, plugins/Forms/forms.js,
+	  plugins/FullPage/full-page.js, plugins/FullPage/test.html,
+	  plugins/FullPage/lang/nb.js,
+	  plugins/FullPage/popups/docprop.html,
+	  plugins/FullScreen/full-screen.js, plugins/FullScreen/lang/nb.js,
+	  plugins/FullScreen/lang/sv.js, plugins/GetHtml/get-html.js,
+	  plugins/HorizontalRule/lang/de.js,
+	  plugins/HorizontalRule/lang/nb.js,
+	  plugins/HtmlEntities/Entities.js,
+	  plugins/HtmlEntities/html-entities.js,
+	  plugins/HtmlTidy/lang/nb.js, plugins/ImageManager/config.inc.php,
+	  plugins/ImageManager/editor.php,
+	  plugins/ImageManager/editorFrame.php,
+	  plugins/ImageManager/image-manager.js,
+	  plugins/ImageManager/images.php,
+	  plugins/ImageManager/manager.php,
+	  plugins/ImageManager/newFolder.html,
+	  plugins/ImageManager/resizer.php,
+	  plugins/ImageManager/thumbs.php,
+	  plugins/ImageManager/Classes/Files.php,
+	  plugins/ImageManager/Classes/GD.php,
+	  plugins/ImageManager/Classes/IM.php,
+	  plugins/ImageManager/Classes/ImageEditor.php,
+	  plugins/ImageManager/Classes/ImageManager.php,
+	  plugins/ImageManager/Classes/NetPBM.php,
+	  plugins/ImageManager/Classes/Thumbnail.php,
+	  plugins/ImageManager/Classes/Transform.php,
+	  plugins/ImageManager/assets/dialog.js,
+	  plugins/ImageManager/assets/editor.js,
+	  plugins/ImageManager/assets/editorFrame.js,
+	  plugins/ImageManager/assets/images.js,
+	  plugins/ImageManager/assets/manager.css,
+	  plugins/ImageManager/assets/manager.js,
+	  plugins/ImageManager/assets/popup.js,
+	  plugins/ImageManager/lang/de.js, plugins/ImageManager/lang/nb.js,
+	  plugins/ImageManager/lang/no.js, plugins/ImageManager/lang/sv.js,
+	  plugins/InsertAnchor/lang/nb.js, plugins/InsertAnchor/lang/nl.js,
+	  plugins/InsertMarquee/lang/nb.js,
+	  plugins/InsertPagebreak/lang/nb.js,
+	  plugins/InsertPicture/InsertPicture.php,
+	  plugins/InsertPicture/insert-picture.js,
+	  plugins/InsertPicture/lang/de.js,
+	  plugins/InsertPicture/lang/nb.js,
+	  plugins/InsertPicture/lang/sv.js,
+	  plugins/InsertSmiley/lang/nb.js,
+	  plugins/InsertSnippet/demosnippets.js,
+	  plugins/InsertSnippet/insert-snippet.js,
+	  plugins/InsertSnippet/readme.html,
+	  plugins/InsertSnippet/snippets.php,
+	  plugins/InsertSnippet/lang/nb.js,
+	  plugins/InsertSnippet/lang/no.js,
+	  plugins/InsertSnippet/popups/insertsnippet.html,
+	  plugins/LangMarks/lang/nb.js, plugins/LangMarks/lang/nl.js,
+	  plugins/Linker/linker.js, plugins/Linker/scan.php,
+	  plugins/Linker/dTree/dtree.css, plugins/Linker/lang/nb.js,
+	  plugins/ListType/lang/nb.js, plugins/ListType/lang/sv.js,
+	  plugins/NoteServer/lang/nb.js, plugins/PasteText/lang/es.js,
+	  plugins/PasteText/lang/nb.js, plugins/QuickTag/lang/nb.js,
+	  plugins/SaveSubmit/README.txt, plugins/SaveSubmit/save-submit.js,
+	  plugins/SaveSubmit/img/ed_save_green.gif,
+	  plugins/SaveSubmit/img/ed_save_red.gif,
+	  plugins/SaveSubmit/lang/de.js, plugins/SaveSubmit/lang/ru.js,
+	  plugins/SetId/set-id.css, plugins/SetId/set-id.js,
+	  plugins/SetId/img/placeholder.gif, plugins/SetId/img/set-id.gif,
+	  plugins/SetId/lang/de.js, plugins/SetId/lang/nb.js,
+	  plugins/SetId/lang/no.js, plugins/SetId/popups/set_id.html,
+	  plugins/SmartReplace/readme.txt,
+	  plugins/SmartReplace/smart-replace.js,
+	  plugins/SmartReplace/img/smartquotes.gif,
+	  plugins/SmartReplace/lang/de.js,
+	  plugins/SmartReplace/popups/dialog.html,
+	  plugins/SpellChecker/aspell_setup.php,
+	  plugins/SpellChecker/spell-check-logic.cgi,
+	  plugins/SpellChecker/spell-check-logic.php,
+	  plugins/SpellChecker/spell-check-ui.html,
+	  plugins/SpellChecker/spell-check-ui.js,
+	  plugins/SpellChecker/spell-checker.js,
+	  plugins/SpellChecker/lang/nb.js, plugins/Stylist/stylist.js,
+	  plugins/Stylist/lang/nb.js, plugins/SuperClean/super-clean.js,
+	  plugins/SuperClean/tidy.php, plugins/SuperClean/lang/nb.js,
+	  plugins/TableOperations/table-operations.js,
+	  plugins/TableOperations/img/table-prop.gif,
+	  plugins/TableOperations/lang/nb.js,
+	  plugins/TableOperations/lang/sv.js, plugins/Template/lang/nb.js,
+	  plugins/UnFormat/lang/nb.js, popups/about.html,
+	  popups/color_picker.js, popups/editor_help.html,
+	  popups/insert_image.html, popups/insert_image.js,
+	  popups/insert_table.html, popups/link.html, popups/link.js,
+	  popups/popup.css, popups/popup.js, popups/select_color.html,
+	  skins/green-look/button-background.png, skins/silva/dialog.jpg,
+	  skins/silva/html.gif, skins/silva/skin.css,
+	  skins/silva/statusbar.png, skins/silva/toolbar.png: updating
+	  xinha to 0.91beta+
+
+2007-02-02 11:49  gustafn
+
+	* packages/acs-templating/tcl/richtext-procs.tcl: merged daves
+	  changes from 5-3, eliminated dead code
+
+2007-01-30 06:40  maltes
+
+	* packages/acs-subsite/www/file.vuh: Added view tracking
+
+2007-01-29 09:16  maltes
+
+	* packages/acs-mail-lite/: acs-mail-lite.info,
+	  tcl/acs-mail-lite-callback-procs.tcl,
+	  tcl/acs-mail-lite-procs.tcl, tcl/incoming-mail-procs.tcl:
+	  Upgraded version to reflect it is part of core now. Added
+	  incoming_object_email callback as per
+	  http://openacs.org/xowiki/incoming_email. Moved incoming e-mail
+	  procs to a separate file
+
+2007-01-29 04:27  maltes
+
+	* packages/acs-subsite/: acs-subsite.info, tcl/party-procs.tcl,
+	  tcl/party-procs.xql: Added party::party_p procedure
+
+2007-01-29 04:25  maltes
+
+	* packages/acs-tcl/: acs-tcl.info, tcl/object-procs.tcl,
+	  tcl/object-procs.xql: Added acs_object::object_p procedure
+
+2007-01-23 14:39  carlb
+
+	* packages/acs-templating/www/scripts/xinha/attach-image.adp:
+	  layout and on upload error message fix
+
+2007-01-20 23:41  maltes
+
+	* packages/acs-subsite/www/file.vuh: Fixed the indention and added
+	  a missing closing brace
+
+2007-01-18 03:57  gustafn
+
+	* packages/acs-authentication/tcl/authentication-procs.tcl: Long
+	  URLs can cause a reboot of aolserver 4.0.10. Prevent the
+	  situation when user is required to authenticate while submitting
+	  a form.
+
+2007-01-16 15:18  donb
+
+	* packages/acs-subsite/tcl/subsite-procs.tcl:
+	  auto_mount_application only worked for the first two mounts of a
+	  package using an autogenerated name!	This bug's been in ACS 4.x
+	  since the very beginning AFAICT.
+
+2007-01-15 11:59  gustafn
+
+	* packages/acs-admin/tcl/apm-admin-procs.tcl: fixing code leading
+	  to a broken repository/5-3/manifest due to overlong command line
+	  in tar command. The new version uses the &quot;--files-from filename&quot;
+	  option from GNU tar (this code is most probably only run on
+	  openacs.org)
+
+2007-01-14 23:53  gustafn
+
+	* packages/acs-admin/www/apm/build-repository.tcl: fixing code
+	  leading to a broken repository/5-3/manifest due to overlong
+	  command line in tar command. The new version uses the
+	  &quot;--files-from filename&quot; option from GNU tar (this code is most
+	  probably only run on openacs.org)
+
+2007-01-14 22:57  maltes
+
+	* packages/acs-tcl/acs-tcl.info: Increased version number to
+	  reflect the fact that it was changed on HEAD, ready for the next
+	  branch
+
+2007-01-14 22:56  maltes
+
+	* packages/acs-tcl/tcl/defs-procs.tcl: Added function to return a
+	  string as a file with filename and mime_type
+
+2007-01-10 13:21  gustafn
+
+	* bin/create-tablespace.tcl, etc/config.tcl,
+	  etc/install/tcl/acs-lang-procs.tcl,
+	  etc/install/tcl/admin-procs.tcl, etc/install/tcl/class-procs.tcl,
+	  etc/install/tcl/dotlrn-procs.tcl, etc/install/tcl/twt-procs.tcl,
+	  etc/install/tcl/user-procs.tcl,
+	  etc/keepalive/keepalive-config.tcl,
+	  packages/acs-admin/lib/become.tcl,
+	  packages/acs-admin/lib/password-update.tcl,
+	  packages/acs-admin/lib/service-parameters.tcl,
+	  packages/acs-admin/tcl/apm-admin-procs.tcl,
+	  packages/acs-admin/www/index.tcl,
+	  packages/acs-admin/www/send-email.tcl,
+	  packages/acs-admin/www/apm/build-repository.tcl,
+	  packages/acs-admin/www/apm/cvs-status.tcl,
+	  packages/acs-admin/www/apm/index.tcl,
+	  packages/acs-admin/www/apm/package-delete.tcl,
+	  packages/acs-admin/www/apm/package-load-2.tcl,
+	  packages/acs-admin/www/apm/packages-install-2.tcl,
+	  packages/acs-admin/www/apm/packages-install-3.tcl,
+	  packages/acs-admin/www/apm/packages-install-4.tcl,
+	  packages/acs-admin/www/apm/packages-install.tcl,
+	  packages/acs-admin/www/apm/parameter-add-2.tcl,
+	  packages/acs-admin/www/apm/parameter-delete.tcl,
+	  packages/acs-admin/www/apm/parameter-edit-2.tcl,
+	  packages/acs-admin/www/apm/version-callback-add-edit.tcl,
+	  packages/acs-admin/www/apm/version-dependencies.tcl,
+	  packages/acs-admin/www/apm/version-edit-2.tcl,
+	  packages/acs-admin/www/apm/version-files.tcl,
+	  packages/acs-admin/www/apm/version-i18n-process-2.tcl,
+	  packages/acs-admin/www/apm/version-i18n.tcl,
+	  packages/acs-admin/www/apm/version-parameter-values.tcl,
+	  packages/acs-admin/www/apm/version-parameters.tcl,
+	  packages/acs-admin/www/apm/version-tag.tcl,
+	  packages/acs-admin/www/apm/version-view.tcl,
+	  packages/acs-admin/www/apm/write-all-specs.tcl,
+	  packages/acs-admin/www/auth/authority-delete.tcl,
+	  packages/acs-admin/www/auth/authority-registration-select.tcl,
+	  packages/acs-admin/www/auth/authority-set-enabled-p.tcl,
+	  packages/acs-admin/www/auth/authority-set-sort-order.tcl,
+	  packages/acs-admin/www/auth/authority.tcl,
+	  packages/acs-admin/www/auth/batch-action.tcl,
+	  packages/acs-admin/www/auth/batch-job.tcl,
+	  packages/acs-admin/www/auth/index.tcl,
+	  packages/acs-admin/www/cache/flush-cache.tcl,
+	  packages/acs-admin/www/cache/flush.tcl,
+	  packages/acs-admin/www/cache/index.tcl,
+	  packages/acs-admin/www/cache/one.tcl,
+	  packages/acs-admin/www/install/install-2.tcl,
+	  packages/acs-admin/www/install/install-3.tcl,
+	  packages/acs-admin/www/install/install-4.tcl,
+	  packages/acs-admin/www/install/install.tcl,
+	  packages/acs-admin/www/test/security-test.tcl,
+	  packages/acs-admin/www/test/signed-cookies-test-2.tcl,
+	  packages/acs-admin/www/users/complex-search.tcl,
+	  packages/acs-admin/www/users/member-state-change.tcl,
+	  packages/acs-admin/www/users/merge-confirm.tcl,
+	  packages/acs-admin/www/users/merge-final.tcl,
+	  packages/acs-admin/www/users/merge.tcl,
+	  packages/acs-admin/www/users/modify-admin-privileges.tcl,
+	  packages/acs-admin/www/users/one.tcl,
+	  packages/acs-admin/www/users/search.tcl,
+	  packages/acs-admin/www/users/session-history.tcl,
+	  packages/acs-admin/www/users/user-add-2.tcl,
+	  packages/acs-admin/www/users/user-batch-add-2.tcl,
+	  packages/acs-api-browser/tcl/acs-api-documentation-procs.tcl,
+	  packages/acs-api-browser/www/display-sql.tcl,
+	  packages/acs-api-browser/www/proc-browse.tcl,
+	  packages/acs-api-browser/www/proc-search.tcl,
+	  packages/acs-api-browser/www/procs-file-view.tcl,
+	  packages/acs-authentication/tcl/authentication-procs.tcl,
+	  packages/acs-authentication/tcl/authority-procs.tcl,
+	  packages/acs-authentication/tcl/driver-procs.tcl,
+	  packages/acs-authentication/tcl/local-procs.tcl,
+	  packages/acs-authentication/tcl/password-procs.tcl,
+	  packages/acs-authentication/tcl/sync-procs.tcl,
+	  packages/acs-authentication/tcl/test/acs-authentication-procs.tcl,
+	  packages/acs-authentication/tcl/test/sync-test-procs.tcl,
+	  packages/acs-automated-testing/tcl/aa-test-procs.tcl,
+	  packages/acs-automated-testing/tcl/filter-procs.tcl,
+	  packages/acs-automated-testing/tcl/tclwebtest-procs.tcl,
+	  packages/acs-automated-testing/www/index.tcl,
+	  packages/acs-automated-testing/www/admin/index.tcl,
+	  packages/acs-automated-testing/www/admin/proc-coverage.tcl,
+	  packages/acs-automated-testing/www/admin/rerun.tcl,
+	  packages/acs-bootstrap-installer/bootstrap.tcl,
+	  packages/acs-bootstrap-installer/db-init-checks-oracle.tcl,
+	  packages/acs-bootstrap-installer/db-init-checks-postgresql.tcl,
+	  packages/acs-bootstrap-installer/installer.tcl,
+	  packages/acs-bootstrap-installer/installer/index.tcl,
+	  packages/acs-bootstrap-installer/installer/install.tcl,
+	  packages/acs-bootstrap-installer/tcl/00-proc-procs.tcl,
+	  packages/acs-bootstrap-installer/tcl/10-utilities-procs.tcl,
+	  packages/acs-bootstrap-installer/tcl/20-db-bootstrap-procs.tcl,
+	  packages/acs-bootstrap-installer/tcl/30-apm-load-procs.tcl,
+	  packages/acs-bootstrap-installer/tcl/40-db-query-dispatcher-procs.tcl,
+	  packages/acs-content-repository/tcl/acs-content-repository-callback-procs.tcl,
+	  packages/acs-content-repository/tcl/acs-content-repository-init.tcl,
+	  packages/acs-content-repository/tcl/acs-content-repository-procs.tcl,
+	  packages/acs-content-repository/tcl/content-folder-procs.tcl,
+	  packages/acs-content-repository/tcl/content-item-procs.tcl,
+	  packages/acs-content-repository/tcl/content-procs.tcl,
+	  packages/acs-content-repository/tcl/content-revision-procs.tcl,
+	  packages/acs-content-repository/tcl/content-type-procs.tcl,
+	  packages/acs-content-repository/tcl/doc-procs.tcl,
+	  packages/acs-content-repository/tcl/extlink-procs.tcl,
+	  packages/acs-content-repository/tcl/filter-procs.tcl,
+	  packages/acs-content-repository/tcl/item-procs.tcl,
+	  packages/acs-content-repository/tcl/keyword-procs.tcl,
+	  packages/acs-content-repository/tcl/publish-procs.tcl,
+	  packages/acs-content-repository/tcl/revision-procs.tcl,
+	  packages/acs-content-repository/tcl/symlink-procs.tcl,
+	  packages/acs-content-repository/tcl/test/content-image-test-procs.tcl,
+	  packages/acs-content-repository/tcl/test/content-item-test-procs.tcl,
+	  packages/acs-content-repository/tcl/test/content-keyword-test-procs.tcl,
+	  packages/acs-content-repository/tcl/test/content-revision-test-procs.tcl,
+	  packages/acs-core-docs/www/files/tutorial/myfirstpackage-procs.tcl,
+	  packages/acs-core-docs/www/sql/display-sql.tcl,
+	  packages/acs-lang/lib/messages-to-translate.tcl,
+	  packages/acs-lang/tcl/lang-catalog-procs.tcl,
+	  packages/acs-lang/tcl/lang-message-procs.tcl,
+	  packages/acs-lang/tcl/lang-util-procs.tcl,
+	  packages/acs-lang/tcl/lang-widget-procs.tcl,
+	  packages/acs-lang/tcl/locale-procs.tcl,
+	  packages/acs-lang/tcl/localization-data-init.tcl,
+	  packages/acs-lang/tcl/localization-procs.tcl,
+	  packages/acs-lang/tcl/test/acs-lang-test-procs.tcl,
+	  packages/acs-lang/www/change-locale-include.tcl,
+	  packages/acs-lang/www/admin/batch-editor.tcl,
+	  packages/acs-lang/www/admin/edit-localized-message.tcl,
+	  packages/acs-lang/www/admin/index.tcl,
+	  packages/acs-lang/www/admin/locale-edit.tcl,
+	  packages/acs-lang/www/admin/localized-message-new.tcl,
+	  packages/acs-lang/www/admin/message-list.tcl,
+	  packages/acs-lang/www/admin/message-search.tcl,
+	  packages/acs-lang/www/admin/message-usage-include.tcl,
+	  packages/acs-lang/www/admin/package-list.tcl,
+	  packages/acs-lang/www/admin/set-system-timezone.tcl,
+	  packages/acs-lang/www/admin/translator-mode-toggle.tcl,
+	  packages/acs-lang/www/admin/test/test.tcl,
+	  packages/acs-lang/www/admin/test/timezone.tcl,
+	  packages/acs-mail-lite/lib/email.tcl,
+	  packages/acs-mail-lite/tcl/acs-mail-lite-callback-procs.tcl,
+	  packages/acs-mail-lite/tcl/acs-mail-lite-procs.tcl,
+	  packages/acs-mail-lite/tcl/complex-send-procs.tcl,
+	  packages/acs-messaging/tcl/acs-messaging-procs.tcl,
+	  packages/acs-service-contract/tcl/acs-service-contract-procs.tcl,
+	  packages/acs-service-contract/tcl/contract-procs.tcl,
+	  packages/acs-service-contract/tcl/implementation-procs.tcl,
+	  packages/acs-service-contract/www/binding-display.tcl,
+	  packages/acs-subsite/lib/login.tcl,
+	  packages/acs-subsite/lib/services.tcl,
+	  packages/acs-subsite/lib/user-info.tcl,
+	  packages/acs-subsite/lib/user-new.tcl,
+	  packages/acs-subsite/tcl/apm-callback-procs.tcl,
+	  packages/acs-subsite/tcl/application-group-procs.tcl,
+	  packages/acs-subsite/tcl/attribute-procs.tcl,
+	  packages/acs-subsite/tcl/email-image-procs.tcl,
+	  packages/acs-subsite/tcl/group-procs.tcl,
+	  packages/acs-subsite/tcl/group-type-procs.tcl,
+	  packages/acs-subsite/tcl/package-procs.tcl,
+	  packages/acs-subsite/tcl/party-procs.tcl,
+	  packages/acs-subsite/tcl/plpgsql-utility-procs.tcl,
+	  packages/acs-subsite/tcl/plsql-utility-procs.tcl,
+	  packages/acs-subsite/tcl/rel-segments-procs.tcl,
+	  packages/acs-subsite/tcl/rel-types-procs.tcl,
+	  packages/acs-subsite/tcl/relation-procs.tcl,
+	  packages/acs-subsite/tcl/subsite-callback-procs.tcl,
+	  packages/acs-subsite/tcl/subsite-procs.tcl,
+	  packages/acs-subsite/www/group-master.tcl,
+	  packages/acs-subsite/www/index.tcl,
+	  packages/acs-subsite/www/admin/subsite-add.tcl,
+	  packages/acs-subsite/www/admin/applications/application-add.tcl,
+	  packages/acs-subsite/www/admin/attributes/add-2.tcl,
+	  packages/acs-subsite/www/admin/attributes/delete-2.tcl,
+	  packages/acs-subsite/www/admin/attributes/edit-one.tcl,
+	  packages/acs-subsite/www/admin/attributes/enum-add-2.tcl,
+	  packages/acs-subsite/www/admin/attributes/enum-add.tcl,
+	  packages/acs-subsite/www/admin/attributes/one.tcl,
+	  packages/acs-subsite/www/admin/attributes/value-delete-2.tcl,
+	  packages/acs-subsite/www/admin/group-types/change-join-policy-2.tcl,
+	  packages/acs-subsite/www/admin/group-types/change-join-policy.tcl,
+	  packages/acs-subsite/www/admin/group-types/delete-2.tcl,
+	  packages/acs-subsite/www/admin/group-types/rel-type-add-2.tcl,
+	  packages/acs-subsite/www/admin/group-types/rel-type-remove-2.tcl,
+	  packages/acs-subsite/www/admin/groups/change-join-policy-2.tcl,
+	  packages/acs-subsite/www/admin/groups/constraints-create-2.tcl,
+	  packages/acs-subsite/www/admin/groups/delete-2.tcl,
+	  packages/acs-subsite/www/admin/groups/elements-display-list.tcl,
+	  packages/acs-subsite/www/admin/groups/new.tcl,
+	  packages/acs-subsite/www/admin/groups/one.tcl,
+	  packages/acs-subsite/www/admin/groups/rel-type-add-2.tcl,
+	  packages/acs-subsite/www/admin/groups/rel-type-remove-2.tcl,
+	  packages/acs-subsite/www/admin/parties/new.tcl,
+	  packages/acs-subsite/www/admin/rel-segments/constraints-redirect.tcl,
+	  packages/acs-subsite/www/admin/rel-segments/delete-2.tcl,
+	  packages/acs-subsite/www/admin/rel-segments/new-3.tcl,
+	  packages/acs-subsite/www/admin/rel-segments/new.tcl,
+	  packages/acs-subsite/www/admin/rel-segments/constraints/delete-2.tcl,
+	  packages/acs-subsite/www/admin/rel-segments/constraints/new.tcl,
+	  packages/acs-subsite/www/admin/rel-types/delete-2.tcl,
+	  packages/acs-subsite/www/admin/rel-types/mapping-remove-2.tcl,
+	  packages/acs-subsite/www/admin/rel-types/roles/delete-2.tcl,
+	  packages/acs-subsite/www/admin/rel-types/roles/edit.tcl,
+	  packages/acs-subsite/www/admin/relations/add.tcl,
+	  packages/acs-subsite/www/admin/relations/change-member-state.tcl,
+	  packages/acs-subsite/www/admin/relations/remove-2.tcl,
+	  packages/acs-subsite/www/admin/site-map/allow-for-view.tcl,
+	  packages/acs-subsite/www/admin/site-map/application-new.tcl,
+	  packages/acs-subsite/www/admin/site-map/auto-mount.tcl,
+	  packages/acs-subsite/www/admin/site-map/index.tcl,
+	  packages/acs-subsite/www/admin/site-map/instance-delete.tcl,
+	  packages/acs-subsite/www/admin/site-map/package-new.tcl,
+	  packages/acs-subsite/www/admin/site-map/parameter-set.tcl,
+	  packages/acs-subsite/www/admin/site-map/site-map.tcl,
+	  packages/acs-subsite/www/admin/users/new.tcl,
+	  packages/acs-subsite/www/members/index.tcl,
+	  packages/acs-subsite/www/members/member-invite.tcl,
+	  packages/acs-subsite/www/members/user-batch-add-2.tcl,
+	  packages/acs-subsite/www/members/user-new.tcl,
+	  packages/acs-subsite/www/permissions/grant.tcl,
+	  packages/acs-subsite/www/permissions/one.tcl,
+	  packages/acs-subsite/www/permissions/perm-include.tcl,
+	  packages/acs-subsite/www/permissions/perm-modify.tcl,
+	  packages/acs-subsite/www/permissions/revoke-2.tcl,
+	  packages/acs-subsite/www/pvt/alerts.tcl,
+	  packages/acs-subsite/www/pvt/home.tcl,
+	  packages/acs-subsite/www/pvt/set-on-vacation-to-null.tcl,
+	  packages/acs-subsite/www/register/auto-login.tcl,
+	  packages/acs-subsite/www/register/email-confirm.tcl,
+	  packages/acs-subsite/www/register/logout.tcl,
+	  packages/acs-subsite/www/register/user-join.tcl,
+	  packages/acs-subsite/www/register/user-new.tcl,
+	  packages/acs-subsite/www/shared/community-member.tcl,
+	  packages/acs-subsite/www/shared/parameters.tcl,
+	  packages/acs-subsite/www/shared/portrait-bits.tcl,
+	  packages/acs-subsite/www/shared/portrait-thumbnail-bits.tcl,
+	  packages/acs-subsite/www/shared/portrait.tcl,
+	  packages/acs-subsite/www/shared/send-email.tcl,
+	  packages/acs-subsite/www/shared/session-update.tcl,
+	  packages/acs-subsite/www/shared/whos-online.tcl,
+	  packages/acs-subsite/www/site-map/index.tcl,
+	  packages/acs-subsite/www/user/basic-info-update.tcl,
+	  packages/acs-subsite/www/user/email-privacy-level.tcl,
+	  packages/acs-subsite/www/user/password-reset.tcl,
+	  packages/acs-subsite/www/user/password-update.tcl,
+	  packages/acs-subsite/www/user/portrait/comment-edit.tcl,
+	  packages/acs-subsite/www/user/portrait/erase.tcl,
+	  packages/acs-subsite/www/user/portrait/index.tcl,
+	  packages/acs-subsite/www/user/portrait/upload.tcl,
+	  packages/acs-tcl/lib/actions.tcl,
+	  packages/acs-tcl/lib/page-error.tcl,
+	  packages/acs-tcl/tcl/00-database-procs.tcl,
+	  packages/acs-tcl/tcl/30-xml-utils-procs.tcl,
+	  packages/acs-tcl/tcl/acs-permissions-procs.tcl,
+	  packages/acs-tcl/tcl/ad-functional-procs.tcl,
+	  packages/acs-tcl/tcl/admin-procs.tcl,
+	  packages/acs-tcl/tcl/adp-parser-procs.tcl,
+	  packages/acs-tcl/tcl/aolserver-3-procs.tcl,
+	  packages/acs-tcl/tcl/apm-file-procs.tcl,
+	  packages/acs-tcl/tcl/apm-install-procs.tcl,
+	  packages/acs-tcl/tcl/apm-procs.tcl,
+	  packages/acs-tcl/tcl/apm-xml-procs.tcl,
+	  packages/acs-tcl/tcl/application-link-procs.tcl,
+	  packages/acs-tcl/tcl/community-core-procs.tcl,
+	  packages/acs-tcl/tcl/defs-procs.tcl,
+	  packages/acs-tcl/tcl/document-procs.tcl,
+	  packages/acs-tcl/tcl/ds-stub-procs.tcl,
+	  packages/acs-tcl/tcl/exception-procs.tcl,
+	  packages/acs-tcl/tcl/form-processing-procs.tcl,
+	  packages/acs-tcl/tcl/html-email-procs.tcl,
+	  packages/acs-tcl/tcl/install-procs.tcl,
+	  packages/acs-tcl/tcl/membership-rel-procs.tcl,
+	  packages/acs-tcl/tcl/memoize-procs.tcl,
+	  packages/acs-tcl/tcl/navigation-procs.tcl,
+	  packages/acs-tcl/tcl/openacs-kernel-procs.tcl,
+	  packages/acs-tcl/tcl/parameter-procs.tcl,
+	  packages/acs-tcl/tcl/request-processor-init.tcl,
+	  packages/acs-tcl/tcl/request-processor-procs.tcl,
+	  packages/acs-tcl/tcl/rollout-email-procs.tcl,
+	  packages/acs-tcl/tcl/security-init.tcl,
+	  packages/acs-tcl/tcl/security-procs.tcl,
+	  packages/acs-tcl/tcl/server-cluster-procs.tcl,
+	  packages/acs-tcl/tcl/site-node-apm-integration-procs.tcl,
+	  packages/acs-tcl/tcl/site-node-object-map-procs.tcl,
+	  packages/acs-tcl/tcl/site-nodes-procs.tcl,
+	  packages/acs-tcl/tcl/sql-statement-procs.tcl,
+	  packages/acs-tcl/tcl/stack-trace-procs.tcl,
+	  packages/acs-tcl/tcl/table-display-procs.tcl,
+	  packages/acs-tcl/tcl/tcl-documentation-procs.tcl,
+	  packages/acs-tcl/tcl/text-html-procs.tcl,
+	  packages/acs-tcl/tcl/user-extensions-procs.tcl,
+	  packages/acs-tcl/tcl/utilities-procs.tcl,
+	  packages/acs-tcl/tcl/whos-online-procs.tcl,
+	  packages/acs-tcl/tcl/widgets-procs.tcl,
+	  packages/acs-tcl/tcl/xml-0-sgml-procs.tcl,
+	  packages/acs-tcl/tcl/xml-1-dom-procs.tcl,
+	  packages/acs-tcl/tcl/xml-2-procs.tcl,
+	  packages/acs-tcl/tcl/test/acs-tcl-apm-procs.tcl,
+	  packages/acs-tcl/tcl/test/acs-tcl-test-procs.tcl,
+	  packages/acs-tcl/tcl/test/ad-proc-test-procs.tcl,
+	  packages/acs-tcl/tcl/test/community-core-test-procs.tcl,
+	  packages/acs-tcl/tcl/test/datamodel-test-procs.tcl,
+	  packages/acs-tcl/tcl/test/file-test-procs.tcl,
+	  packages/acs-tcl/tcl/test/log-test-procs.tcl,
+	  packages/acs-tcl/tcl/test/navigation-procs.tcl,
+	  packages/acs-tcl/tcl/test/object-test-case-procs.tcl,
+	  packages/acs-tcl/tcl/test/test-permissions-procs.tcl,
+	  packages/acs-tcl/tcl/test/whos-online-procs.tcl,
+	  packages/acs-templating/tcl/acs-integration-procs.tcl,
+	  packages/acs-templating/tcl/apm-callback-procs.tcl,
+	  packages/acs-templating/tcl/currency-procs.tcl,
+	  packages/acs-templating/tcl/data-procs.tcl,
+	  packages/acs-templating/tcl/date-procs.tcl,
+	  packages/acs-templating/tcl/debug-procs.tcl,
+	  packages/acs-templating/tcl/doc-procs.tcl,
+	  packages/acs-templating/tcl/doc-tcl-procs.tcl,
+	  packages/acs-templating/tcl/element-procs.tcl,
+	  packages/acs-templating/tcl/file-procs.tcl,
+	  packages/acs-templating/tcl/filter-procs.tcl,
+	  packages/acs-templating/tcl/form-procs.tcl,
+	  packages/acs-templating/tcl/list-procs.tcl,
+	  packages/acs-templating/tcl/mime-procs.tcl,
+	  packages/acs-templating/tcl/paginator-procs.tcl,
+	  packages/acs-templating/tcl/parse-procs.tcl,
+	  packages/acs-templating/tcl/query-procs.tcl,
+	  packages/acs-templating/tcl/request-procs.tcl,
+	  packages/acs-templating/tcl/richtext-or-file-procs.tcl,
+	  packages/acs-templating/tcl/richtext-procs.tcl,
+	  packages/acs-templating/tcl/spellcheck-init.tcl,
+	  packages/acs-templating/tcl/spellcheck-procs.tcl,
+	  packages/acs-templating/tcl/tab-procs.tcl,
+	  packages/acs-templating/tcl/table-procs.tcl,
+	  packages/acs-templating/tcl/tag-init.tcl,
+	  packages/acs-templating/tcl/tag-procs.tcl,
+	  packages/acs-templating/tcl/util-procs.tcl,
+	  packages/acs-templating/tcl/widget-procs.tcl,
+	  packages/acs-templating/tcl/wizard-procs.tcl,
+	  packages/acs-templating/tcl/test/spell-checker-procs.tcl,
+	  packages/acs-templating/www/admin/test/chain-frac-0.tcl,
+	  packages/acs-templating/www/admin/test/chain-frac-1.tcl,
+	  packages/acs-templating/www/admin/test/include.tcl,
+	  packages/acs-templating/www/doc/demo/contract-2.tcl,
+	  packages/acs-templating/www/doc/demo/display-edit.tcl,
+	  packages/acs-templating/www/doc/demo/fibo-master.tcl,
+	  packages/acs-templating/www/doc/demo/fibo.tcl,
+	  packages/acs-templating/www/doc/demo/list.tcl,
+	  packages/acs-templating/www/doc/demo/sandwich.tcl,
+	  packages/acs-templating/www/doc/demo/user-edit.tcl,
+	  packages/acs-templating/www/doc/exercise/form-sample.tcl,
+	  packages/acs-templating/www/doc/exercise/list-and-var-sample.tcl,
+	  packages/acs-templating/www/resources/xinha-nightly/plugins/OacsFs/popups/file-selector.tcl,
+	  packages/search/tcl/search-procs.tcl,
+	  packages/search/tcl/syndicate-procs.tcl,
+	  packages/search/www/search.tcl,
+	  packages/search/www/admin/index-missing-objects.tcl,
+	  tcl/0-acs-init.tcl, www/blank-master.tcl, www/login-status.tcl,
+	  www/site-master.tcl: Normalizing string comparison operations
+	  into tcl 8.4 operations, enabling byte-code compilation for
+	  expressions and many conditionals
+
+2007-01-08 15:57  donb
+
+	* packages/acs-bootstrap-installer/installer/index.tcl: Fixed two
+	  spelling errors in install error messages.  All these years, and
+	  I'd never noticed them before ...
+
+2007-01-08 05:47  maltes
+
+	* packages/acs-mail-lite/tcl/: complex-send-procs-postgresql.xql,
+	  complex-send-procs.tcl: Added error tracking to the
+	  complex_sweeper and fixed an error with the reply_to address
+
+2007-01-05 10:28  daveb
+
+	* packages/acs-templating/www/scripts/xinha/attach-file.adp: Update
+	  title. Fix javascript in lower cancel button
+
+2007-01-04 08:32  rocaelh
+
+	* packages/acs-subsite/www/admin/: index.adp, index.tcl:
+	  eliminating registration assessment deadlink
+
+2007-01-02 01:53  gustafn
+
+	* packages/acs-reference/sql/postgresql/acs-reference-create.sql:
+	  adding missing variable declaration needed at least for  pg 8.2
+
+2006-12-31 13:08  daveb
+
+	* packages/acs-content-repository/tcl/revision-procs.tcl: Fix typo
+	  sn_gifsize should be ns_gifsize. Bug#3056. Thanks to Jon Griffin
+	  for finding it and for the patch.
+
+2006-12-30 03:29  maltes
+
+	* packages/acs-core-docs/www/files/postgresql.txt: Made sure to use
+	  the correct logfile on restart of the postgresql server
+
+2006-12-26 14:48  daveb
+
+	* packages/notifications/tcl/notification-email-procs.tcl: For an
+	  unexplained reason complex_send accepts a list_of_lists instead
+	  of an ns_set for extra_headers. This completely breaks
+	  notifications by sending people the wrong email body. Temporary
+	  fix until we can systematically track down the misuse of
+	  extra_headers argument
+
+2006-12-24 03:09  maltes
+
+	* packages/acs-mail-lite/: acs-mail-lite.info,
+	  tcl/acs-mail-lite-callback-procs.tcl,
+	  tcl/acs-mail-lite-procs.tcl, tcl/complex-send-procs.tcl: Support
+	  for from_addr in addition sender_id in the complex_send callback.
+	  Correctly handle incoming file attachments. Get rid of hard coded
+	  subject_encoding
+
+2006-12-22 04:28  daveb
+
+	* packages/acs-mail-lite/tcl/complex-send-procs-oracle.xql: Remove
+	  extra :
+
+2006-12-21 23:57  maltes
+
+	* packages/acs-mail-lite/: acs-mail-lite.info,
+	  sql/oracle/acs-mail-lite-create.sql,
+	  sql/oracle/acs-mail-lite-drop.sql,
+	  sql/postgresql/acs-mail-lite-create.sql,
+	  sql/postgresql/acs-mail-lite-drop.sql,
+	  tcl/acs-mail-lite-callback-procs.tcl,
+	  tcl/acs-mail-lite-callback-procs.xql,
+	  tcl/acs-mail-lite-procs.tcl, tcl/acs-mail-lite-procs.xql,
+	  tcl/complex-send-procs-oracle.xql,
+	  tcl/complex-send-procs-postgresql.xql: Cleaning up. Removed the
+	  code for prefix handling as it does not work. Changed Oracle
+	  scripts and make them look nicer.
+
+2006-12-21 07:14  daveb
+
 	*
-	  packages/acs-core-docs/www/xml/engineering-standards/docbook-primer.xml:
-	  fixing typos
+	  packages/acs-templating/catalog/acs-templating.en_US.ISO-8859-1.xml:
+	  Add keys for file and image uload widgets
 
-2004-11-18 10:53  torbenb
+2006-12-21 07:12  daveb
 
+	* packages/acs-templating/www/scripts/xinha/: attach-file.adp,
+	  attach-file.tcl, attach-image.adp, attach-image.tcl: Fix insert
+	  of file links.  Add filename for insert image links
+
+2006-12-19 02:51  maltes
+
+	* packages/acs-mail-lite/tcl/acs-mail-lite-procs.tcl: Put the not
+	  working code into it's own area.
+
+2006-12-19 01:44  maltes
+
+	* packages/acs-mail-lite/tcl/acs-mail-lite-procs.tcl: removed and
+	  put into callbacks, not to be standing guilty of changing
+	  functionality without a tip.
+
+2006-12-19 01:34  gustafn
+
+	* packages/acs-api-browser/tcl/acs-api-documentation-procs.tcl: add
+	  serialization of objects/classes through the link generated by
+	  /api-doc/proc-browse
+
+2006-12-19 01:05  maltes
+
+	* packages/acs-subsite/tcl/group-procs.tcl: Made sure the dependent
+	  relations are removed as well. It might make sense I think to add
+	  a delete cascade to acs_rels, but I am not entirely sure this is
+	  such a wise thing, so postponing it
+
+2006-12-18 03:23  gustafn
+
+	* packages/acs-bootstrap-installer/bootstrap.tcl: make sure,
+	  xotcl-core -init files are loaded before other -init files
+
+2006-12-17 12:11  maltes
+
+	* packages/acs-mail-lite/: acs-mail-lite.info,
+	  sql/oracle/acs-mail-lite-create.sql,
+	  sql/postgresql/acs-mail-lite-create.sql,
+	  tcl/acs-mail-lite-procs.tcl, tcl/complex-send-procs-oracle.xql,
+	  tcl/complex-send-procs-postgresql.xql,
+	  tcl/complex-send-procs.tcl: Added support for reply_to address
+
+2006-12-17 09:04  maltes
+
+	* packages/acs-mail-lite/: acs-mail-lite.info,
+	  sql/oracle/acs-mail-lite-create.sql,
+	  sql/oracle/acs-mail-lite-drop.sql,
+	  sql/postgresql/acs-mail-lite-create.sql,
+	  sql/postgresql/acs-mail-lite-drop.sql,
+	  tcl/acs-mail-lite-procs-oracle.xql,
+	  tcl/acs-mail-lite-procs-postgresql.xql: Added oracle scripts,
+	  continued with the move from user_id to party_id
+
+2006-12-16 12:30  maltes
+
+	* packages/acs-mail-lite/tcl/acs-mail-lite-procs.tcl: The worlds
+	  simplest mailing list
+
+2006-12-16 11:32  maltes
+
+	* packages/notifications/tcl/notification-callback-procs.tcl:
+	  Ignore all messages not send to notifications
+
+2006-12-15 14:45  emmar
+
+	* packages/notifications/: catalog/notifications.cs_CZ.utf-8.xml,
+	  catalog/notifications.en_US.ISO-8859-1.xml,
+	  catalog/notifications.es_ES.ISO-8859-1.xml,
+	  catalog/notifications.nl_ZA.ISO-8859-1.xml, www/manage.tcl:
+	  Merging dotlrn-all and dotlrn-extras from oacs-5-2
+
+2006-12-15 04:36  emmar
+
+	* packages/acs-content-repository/sql/: common/mime-type-data.sql,
+	  oracle/upgrade/upgrade-5.3.0d3-5.3.0d4.sql,
+	  postgresql/upgrade/upgrade-5.3.0d7-5.3.0d8.sql: Add Open
+	  Documents MIME types
+
+2006-12-14 17:54  donb
+
+	* packages/acs-tcl/tcl/application-data-link-procs.tcl: Added a
+	  necessary comment to a public proc
+
+2006-12-14 17:37  donb
+
+	* packages/acs-mail-lite/tcl/complex-send-procs-oracle.xql: This
+	  oracle sql file had a &quot;postgresql&quot; rdbms tag
+
+2006-12-14 16:09  donb
+
+	* packages/acs-subsite/acs-subsite.info: And the last oacs-5-3 -&gt;
+	  HEAD merge commit (vi was being weird on the cvs.openacs.org
+	  server so I fixed this one locally)
+
+2006-12-14 16:00  donb
+
+	* packages/acs-admin/acs-admin.info,
+	  packages/acs-admin/www/users/merge-final.tcl,
+	  packages/acs-admin/www/users/merge.tcl,
+	  packages/acs-api-browser/acs-api-browser.info,
+	  packages/acs-authentication/acs-authentication.info,
+	  packages/acs-authentication/catalog/acs-authentication.cs_CZ.utf-8.xml,
+	  packages/acs-authentication/catalog/acs-authentication.gl_ES.ISO-8859-1.xml,
+	  packages/acs-authentication/catalog/acs-authentication.nl_ZA.ISO-8859-1.xml,
+	  packages/acs-automated-testing/acs-automated-testing.info,
+	  packages/acs-bootstrap-installer/acs-bootstrap-installer.info,
+	  packages/acs-content-repository/acs-content-repository.info,
+	  packages/acs-content-repository/sql/oracle/upgrade/upgrade-5.1.5d2-5.1.5d3.sql,
+	  packages/acs-content-repository/sql/postgresql/upgrade/upgrade-5.2.0d18-5.2.0d19.sql,
+	  packages/acs-content-repository/tcl/content-revision-procs.tcl,
+	  packages/acs-core-docs/acs-core-docs.info,
+	  packages/acs-core-docs/www/xml/variables.ent,
+	  packages/acs-core-docs/www/xml/for-everyone/release-notes.xml,
+	  packages/acs-kernel/acs-kernel.info,
+	  packages/acs-kernel/catalog/acs-kernel.cs_CZ.utf-8.xml,
+	  packages/acs-kernel/catalog/acs-kernel.de_DE.ISO-8859-1.xml,
+	  packages/acs-kernel/catalog/acs-kernel.es_ES.ISO-8859-1.xml,
+	  packages/acs-kernel/catalog/acs-kernel.gl_ES.ISO-8859-1.xml,
+	  packages/acs-kernel/catalog/acs-kernel.nl_ZA.ISO-8859-1.xml,
+	  packages/acs-kernel/catalog/acs-kernel.pt_BR.ISO-8859-1.xml,
+	  packages/acs-kernel/sql/oracle/upgrade/upgrade-5.2.0d11-5.2.0d12.sql,
+	  packages/acs-kernel/sql/postgresql/upgrade/upgrade-5.2.0d1-5.2.0d2.sql,
+	  packages/acs-lang/acs-lang.info,
+	  packages/acs-lang/catalog/acs-lang.cs_CZ.utf-8.xml,
+	  packages/acs-lang/catalog/acs-lang.en_AU.ISO-8859-1.xml,
+	  packages/acs-lang/catalog/acs-lang.en_GB.ISO-8859-1.xml,
+	  packages/acs-lang/catalog/acs-lang.en_US.ISO-8859-1.xml,
+	  packages/acs-lang/catalog/acs-lang.gl_ES.ISO-8859-1.xml,
+	  packages/acs-lang/catalog/acs-lang.nl_NL.ISO-8859-1.xml,
+	  packages/acs-lang/catalog/acs-lang.nl_ZA.ISO-8859-1.xml,
+	  packages/acs-lang/catalog/acs-lang.nn_NO.ISO-8859-1.xml,
+	  packages/acs-lang/catalog/acs-lang.pl_PL.utf-8.xml,
+	  packages/acs-lang/catalog/acs-lang.pt_BR.ISO-8859-1.xml,
+	  packages/acs-lang/catalog/acs-lang.ro_RO.utf-8.xml,
+	  packages/acs-lang/tcl/lang-widget-procs.tcl,
+	  packages/acs-lang/tcl/localization-procs.tcl,
+	  packages/acs-lang/www/admin/edit-localized-message.tcl,
+	  packages/acs-messaging/acs-messaging.info,
+	  packages/acs-reference/acs-reference.info,
+	  packages/acs-service-contract/acs-service-contract.info,
+	  packages/acs-subsite/acs-subsite.info,
+	  packages/acs-subsite/catalog/acs-subsite.cs_CZ.utf-8.xml,
+	  packages/acs-subsite/catalog/acs-subsite.en_GB.ISO-8859-1.xml,
+	  packages/acs-subsite/catalog/acs-subsite.es_ES.ISO-8859-1.xml,
+	  packages/acs-subsite/catalog/acs-subsite.es_GT.ISO-8859-1.xml,
+	  packages/acs-subsite/catalog/acs-subsite.gl_ES.ISO-8859-1.xml,
+	  packages/acs-subsite/catalog/acs-subsite.nl_NL.ISO-8859-1.xml,
+	  packages/acs-subsite/catalog/acs-subsite.nl_ZA.ISO-8859-1.xml,
+	  packages/acs-subsite/catalog/acs-subsite.pl_PL.utf-8.xml,
+	  packages/acs-subsite/catalog/acs-subsite.pt_BR.ISO-8859-1.xml,
+	  packages/acs-subsite/lib/user-new.tcl,
+	  packages/acs-subsite/tcl/apm-callback-procs.tcl,
+	  packages/acs-subsite/tcl/test/acs-subsite-procs.tcl,
+	  packages/acs-tcl/acs-tcl.info,
+	  packages/acs-tcl/catalog/acs-tcl.cs_CZ.utf-8.xml,
+	  packages/acs-tcl/catalog/acs-tcl.gl_ES.ISO-8859-1.xml,
+	  packages/acs-tcl/catalog/acs-tcl.nl_ZA.ISO-8859-1.xml,
+	  packages/acs-tcl/catalog/acs-tcl.pl_PL.utf-8.xml,
+	  packages/acs-tcl/catalog/acs-tcl.pt_BR.ISO-8859-1.xml,
+	  packages/acs-tcl/tcl/00-database-procs.tcl,
+	  packages/acs-tcl/tcl/defs-procs-oracle.xql,
+	  packages/acs-tcl/tcl/defs-procs-postgresql.xql,
+	  packages/acs-tcl/tcl/security-procs.tcl,
+	  packages/acs-tcl/tcl/text-html-procs.tcl,
+	  packages/acs-tcl/tcl/utilities-procs.tcl,
+	  packages/acs-tcl/tcl/test/file-test-procs.tcl,
+	  packages/acs-templating/acs-templating.info,
+	  packages/acs-templating/catalog/acs-templating.cs_CZ.utf-8.xml,
+	  packages/acs-templating/catalog/acs-templating.de_DE.ISO-8859-1.xml,
+	  packages/acs-templating/catalog/acs-templating.gl_ES.ISO-8859-1.xml,
+	  packages/acs-templating/catalog/acs-templating.nl_ZA.ISO-8859-1.xml,
+	  packages/acs-templating/catalog/acs-templating.pt_BR.ISO-8859-1.xml,
+	  packages/acs-templating/resources/forms/accessible-forms.adp,
+	  packages/acs-templating/tcl/list-procs.tcl,
+	  packages/acs-templating/www/resources/xinha-nightly/plugins/OacsFs/lang/de.js,
+	  packages/acs-templating/www/resources/xinha-nightly/plugins/OacsFs/lang/en.js,
+	  packages/acs-translations/acs-translations.info,
+	  packages/ref-timezones/ref-timezones.info,
+	  packages/search/search.info,
+	  packages/search/catalog/search.cs_CZ.utf-8.xml,
+	  packages/search/catalog/search.de_DE.ISO-8859-1.xml,
+	  packages/search/catalog/search.es_ES.ISO-8859-1.xml,
+	  packages/search/catalog/search.nl_NL.ISO-8859-1.xml,
+	  packages/search/catalog/search.nl_ZA.ISO-8859-1.xml,
+	  packages/search/catalog/search.pl_PL.utf-8.xml,
+	  packages/search/catalog/search.pt_BR.ISO-8859-1.xml,
+	  packages/search/www/search.tcl, www/blank-master.adp: First round
+	  of oacs-5-3 merge to HEAD commits
+
+2006-12-12 10:24  daveb
+
+	* packages/intermedia-driver/tcl/intermedia-procs.tcl: Accept
+	  patch#812 from Christian Brechbuehler for bug#3045
+
+2006-12-12 10:18  daveb
+
+	* packages/intermedia-driver/tcl/intermedia-procs.tcl: Fix
+	  bug#3046, remove unused code, intermedia-driver only works with
+	  the new callback based search.
+
+2006-12-11 09:49  maltes
+
+	* packages/acs-subsite/: lib/user-new.tcl, acs-subsite.info,
+	  catalog/acs-subsite.en_US.ISO-8859-1.xml: Added a friendly user
+	  message if the e-mail already exists upon signup
+
+2006-12-09 07:23  gustafn
+
 	*
-	  packages/acs-core-docs/www/xml/engineering-standards/docbook-primer.xml:
-	  adding end-user requirements section
+	  packages/acs-kernel/sql/postgresql/upgrade/upgrade-5.3.0d2-5.3.0d3.sql:
+	  adding update statement for renamed package instances, to fix
+	  names in acs_objects.title
 
-2004-11-18 08:17  gerardom
+2006-12-08 06:46  gustafn
 
-	* packages/acs-tcl/tcl/security-procs.tcl: fixing bugs in procs to
-	  redirect to insecure url
+	* packages/acs-tcl/tcl/apm-procs.tcl: fixing bug in
+	  apm_package_rename, which did not change title in acs_obejcts
+	  when a package was renamed. As a consequence, a rename in the
+	  sitemap did not change e.g. the name shown from the categories
 
-2004-11-18 01:00  torbenb
+2006-12-05 10:56  gustafn
 
+	* packages/acs-subsite/lib/login.tcl: provide a simple fix for the
+	  redirect problem of the register page
+
+2006-12-04 20:23  maltes
+
 	*
-	  packages/acs-core-docs/www/xml/engineering-standards/docbook-primer.xml:
-	  corrected error, converted lt,gt signs to entities within
-	  programlisting tag
+	  packages/acs-mail-lite/catalog/acs-mail-lite.en_US.ISO-8859-1.xml:
+	  Added BCC
 
-2004-11-17 12:32  torbenb
+2006-12-03 05:23  maltes
 
+	* packages/acs-mail-lite/tcl/: acs-mail-lite-callback-procs.tcl,
+	  acs-mail-lite-callback-procs.xql, acs-mail-lite-procs.tcl,
+	  acs-mail-lite-procs.xql: Fixed bouncing and record bounces when
+	  SMTP server does not like the email address
+
+2006-12-03 05:21  maltes
+
+	* packages/acs-mail-lite/tcl/complex-send-procs.tcl: Fixed problem
+	  with very long subjects
+
+2006-12-02 04:49  maltes
+
+	* packages/acs-mail-lite/tcl/: acs-mail-lite-procs-postgresql.xql,
+	  complex-send-procs-oracle.xql, complex-send-procs-postgresql.xql,
+	  complex-send-procs.tcl, complex-send-procs.xql: More cleaning up
+	  and oracle scripts
+
+2006-12-02 01:17  maltes
+
+	* packages/acs-mail-lite/tcl/: acs-mail-lite-procs.tcl,
+	  complex-send-procs.tcl: Moved complex_send to its own file. Fixed
+	  character encoding after finding by accident that a procedure
+	  mime::word_encode actually exists...
+
+2006-12-01 08:54  maltes
+
+	* packages/acs-mail-lite/sql/postgresql/acs-mail-lite-create.sql:
+	  Added creation of the acs_mail_lite_complex_queue table
+
+2006-11-23 09:45  maltes
+
+	* packages/acs-subsite/tcl/: group-procs-oracle.xql,
+	  group-procs-postgresql.xql, group-procs.tcl: Added caching of
+	  group membership including correct flushing
+
+2006-11-20 01:24  maltes
+
+	* packages/acs-content-repository/: acs-content-repository.info,
+	  sql/postgresql/upgrade/upgrade-5.3.0d4-5.3.0d5.sql,
+	  sql/postgresql/upgrade/upgrade-5.3.0d6-5.3.0d7.sql: Change to the
+	  locking of acs-objects
+
+2006-11-18 05:18  daveb
+
 	*
-	  packages/acs-core-docs/www/xml/engineering-standards/docbook-primer.xml:
-	  adding some docs about documentation development into existing
-	  meta docs
+	  packages/acs-templating/www/resources/xinha-nightly/plugins/OacsAttach/oacs-attach.js:
+	  Remove stray comma casuing IE to complain
 
-2004-11-16 09:09  jader
+2006-11-17 08:16  maltes
 
-	* packages/acs-core-docs/www/xml/:
-	  developers-guide/permissions.xml,
-	  developers-guide/submissions.xml, engineering-standards/cvs.xml,
-	  install-guide/openacs.xml, install-guide/other-software.xml,
-	  install-guide/upgrade.xml: Updating the CVS references from
-	  openacs.org to cvs.openacs.org
+	* packages/acs-mail-lite/:
+	  catalog/acs-mail-lite.de_DE.ISO-8859-1.xml,
+	  catalog/acs-mail-lite.en_US.ISO-8859-1.xml,
+	  lib/view-complex-send-mail-queue.adp,
+	  lib/view-complex-send-mail-queue.tcl,
+	  lib/view-complex-send-mail-queue.xql: Added viewer for queue
 
-2004-11-15 10:29  jader
+2006-11-17 07:14  maltes
 
-	* packages/acs-api-browser/lib/search.adp: Add link to core and
-	  package documentation.
+	* packages/acs-mail-lite/: acs-mail-lite.info,
+	  tcl/acs-mail-lite-init.tcl,
+	  tcl/acs-mail-lite-procs-postgresql.xql,
+	  tcl/acs-mail-lite-procs.tcl: Added complex_send queue and sweeper
 
-2004-11-15 05:25  torbenb
+2006-11-16 04:48  maltes
 
-	* packages/acs-core-docs/www/xml/install-guide/other-software.xml:
-	  added FreeBSD variant notes for daemontools and nsopenssl
+	* packages/acs-mail-lite/acs-mail-lite.info: Missing upgrade
 
-2004-11-15 04:55  torbenb
+2006-11-16 04:43  daveb
 
-	* packages/acs-core-docs/www/xml/install-guide/openacs.xml: added
-	  FreeBSD variant notes.  changed a typo chgrp in action tag to
-	  match chown in userinput section
+	* packages/search/tcl/search-procs.tcl: Uncomment search::action
+	  callback committed in error.
 
-2004-11-15 04:21  torbenb
+2006-11-16 03:58  maltes
 
-	* packages/acs-core-docs/www/xml/install-guide/: os.xml,
-	  software.xml: Added note to use fetch instead of wget when
-	  installing on freebsd
+	* packages/acs-kernel/: catalog/acs-kernel.en_US.ISO-8859-1.xml,
+	  sql/postgresql/acs-relationships-create.sql,
+	  sql/postgresql/upgrade/upgrade-5.3.0d2-5.3.0d3.sql: Fix for
+	  deadlock condition (or so Gustav and I hope)
 
-2004-11-15 04:19  torbenb
+2006-11-15 09:11  maltes
 
-	* packages/acs-core-docs/www/xml/install-guide/aolserver4.xml:
-	  Added FreeBSD variant, and a brief section on howto check if an
-	  existing tcl meets requirements
+	* packages/acs-content-repository/tcl/: content-folder-procs.tcl,
+	  content-folder-procs.xql: Changed content::folder::new to be a
+	  pure TCL proc relying on content::item::new instead of running
+	  into deadlocks (and being slower) when doing the plsql
 
-2004-11-15 03:06  torbenb
+2006-11-14 22:54  maltes
 
-	* packages/acs-core-docs/www/xml/install-guide/postgres.xml:
-	  correcting my earlier use of computeroutput tags to userinput
-	  tags in tuning section
+	* packages/acs-content-repository/tcl/content-type-procs.xql:
+	  missed the .xql file
 
-2004-11-15 01:50  torbenb
+2006-11-14 22:17  maltes
 
-	* packages/acs-core-docs/www/xml/install-guide/postgres.xml:
-	  Freebsd variant additions
+	* packages/acs-content-repository/tcl/content-type-procs.tcl: Added
+	  content_type_p procedure to detect if a mime_type is of a
+	  content_type
 
-2004-11-15 00:00  torbenb
+2006-11-13 13:31  donb
 
-	* packages/acs-core-docs/www/xml/install-guide/os.xml: clarifying
-	  statements
+	* packages/acs-bootstrap-installer/: db-init-checks-oracle.tcl,
+	  tcl/40-db-query-dispatcher-procs.tcl: Fixed bug 2961 by applying
+	  Christian Brechb�hler's patch
 
-2004-11-14 22:04  torbenb
+2006-11-12 20:06  daveb
 
-	* packages/acs-core-docs/www/xml/install-guide/overview.xml: added
-	  FreeBSD variant for copy paste convenience
+	* packages/tsearch2-driver/tcl/: tsearch2-driver-procs.tcl,
+	  test/tsearch2-driver-procs.tcl: Merge fix for not with no search
+	  terms from oacs-5-2
 
-2004-11-14 13:48  torbenb
+2006-11-12 17:10  daveb
 
-	* packages/acs-core-docs/www/xml/install-guide/software.xml:
-	  clarifications to page info
+	* packages/tsearch2-driver/tcl/: tsearch2-driver-procs.tcl,
+	  test/tsearch2-driver-procs.tcl: Fix bug#3039 and but#3040.
 
-2004-11-14 12:55  torbenb
+2006-11-12 16:55  daveb
 
-	* packages/acs-core-docs/www/xml/install-guide/overview.xml:
-	  language clarifications
+	* packages/search/www/search.tcl: Fix bug#3040 split string before
+	  passing to llength.
 
-2004-11-11 14:40  jader
+2006-11-11 12:16  maltes
 
-	* packages/acs-templating/tcl/date-procs.tcl: Improve robustness of
-	  template::util::date::set_property proc for dealing with hours
-	  that begin with a zero.
+	* packages/acs-templating/tcl/list-procs.tcl: Added support for
+	  includes in lists, originally I guess written by SG. Seems not to
+	  be harmful to other lists
 
-2004-11-11 14:06  jader
+2006-11-10 13:40  donb
 
-	* packages/acs-subsite/: lib/login.adp, lib/login.tcl,
-	  www/register/recover-password.tcl: The registration/login pages
-	  were not honoring the EmailForgottenPasswordP parameter. This
-	  enforces that parameter, allowing admins to disable emailing out
-	  passwords.
+	* packages/acs-subsite/tcl/relation-procs-oracle.xql: Fix bug #1881
+	  (patch by Christian Brechbuehler)
 
-2004-11-08 11:58  joel
+2006-11-05 04:38  maltes
 
-	* packages/acs-core-docs/www/: acs-package-dev.html,
-	  acs-plat-dev.html, aolserver.html, aolserver4.html,
-	  apm-design.html, apm-requirements.html,
-	  automated-testing-best-practices.html, backup-recovery.html,
-	  bootstrap-acs.html, contributing-code.html, credits.html,
-	  cvs-guidelines.html, cvs-tips.html, db-api-detailed.html,
-	  db-api.html, doc-standards.html, docbook-primer.html,
-	  eng-standards-constraint-naming.html,
-	  eng-standards-filenaming.html, eng-standards-plsql.html,
-	  eng-standards-versioning.html, eng-standards.html,
-	  ext-auth-requirements.html, filename.html, form-builder.html,
-	  groups-design.html, groups-requirements.html, high-avail.html,
-	  how-do-I.html, i18n-convert.html, i18n-design.html,
-	  i18n-introduction.html, i18n-overview.html,
-	  i18n-requirements.html, i18n-translators.html, i18n.html,
-	  index.html, install-cvs.html, install-daemontools.html,
-	  install-full-text-search.html, install-next-nightly-vacuum.html,
-	  install-openacs-keepalive.html, install-qmail.html,
-	  install-redhat.html, install-steps.html, ix01.html,
-	  kernel-doc.html, kernel-overview.html, mac-installation.html,
-	  maint-performance.html, maintenance-deploy.html,
-	  maintenance-web.html, nxml-mode.html, object-identity.html,
-	  object-system-design.html, object-system-requirements.html,
-	  objects.html, openacs-cvs-concepts.html, openacs.html,
-	  oracle.html, packages.html, parties.html,
-	  permissions-design.html, permissions-requirements.html,
+	* packages/search/: catalog/search.de_DE.ISO-8859-1.xml,
+	  tcl/search-init.tcl: Made sure the intermedia_index is not run if
+	  postgres is configured
+
+2006-11-03 15:24  donb
+
+	* packages/: acs-kernel/acs-kernel.info,
+	  acs-tcl/tcl/defs-procs.tcl: Fixed bug #2894
+
+2006-11-03 12:24  donb
+
+	* packages/acs-lang/: tcl/lang-widget-procs.tcl,
+	  www/change-locale-include.tcl: Fixed bug #2931 (brought to HEAD
+	  from oacs-5-2)
+
+2006-11-02 00:51  maltes
+
+	* packages/acs-tcl/tcl/application-data-link-procs.tcl: Made sure
+	  the links get created correctly and that the flushing works
+
+2006-11-01 22:37  marka
+
+	* packages/acs-subsite/www/shared/: portrait-bits.tcl,
+	  portrait-thumbnail-bits.tcl: portrait-bits now accepts an
+	  optional size parameter for eg. returning avatar sized images
+
+2006-11-01 22:34  marka
+
+	* packages/acs-content-repository/tcl/image-procs.tcl: added new
+	  size for portrait avatars
+
+2006-11-01 22:30  marka
+
+	* packages/acs-content-repository/acs-content-repository.info:
+	  Adding the parameter needed for Dave's excellent image:: procs
+
+2006-11-01 12:08  maltes
+
+	* packages/acs-content-repository/tcl/content-item-procs.tcl:
+	  Indention fixes
+
+2006-11-01 11:47  maltes
+
+	* packages/acs-lang/tcl/lang-message-procs.tcl: Make sure
+	  acs-translations do not privide an error message if the language
+	  key is missing
+
+2006-11-01 11:28  maltes
+
+	* packages/acs-tcl/acs-tcl.info: Updated version number so other
+	  packages can rely on the new functionality
+
+2006-11-01 11:23  maltes
+
+	* packages/acs-tcl/tcl/: object-procs.tcl, object-procs.xql:
+	  Caching
+
+2006-11-01 11:22  maltes
+
+	* packages/acs-tcl/tcl/: application-data-link-procs.tcl,
+	  application-data-link-procs.xql: Caching and tuning
+
+2006-11-01 11:18  maltes
+
+	* packages/acs-tcl/tcl/text-html-procs.tcl: ranslate characters
+	  into HTML codes
+
+2006-11-01 11:12  maltes
+
+	* packages/acs-tcl/tcl/: form-processing-procs.tcl,
+	  tcl-documentation-procs.tcl: Double Click protection
+
+2006-10-30 04:16  maltes
+
+	* etc/config.tcl: Added ns_limits clause for aolserver 4.5
+
+2006-10-29 17:13  donb
+
+	* packages/acs-bootstrap-installer/db-init-checks-postgresql.tcl:
+	  We now require PG 8.0, not 7.3 :)
+
+2006-10-29 14:48  vinodk
+
+	* packages/acs-tcl/lib/progress-bar.adp: closing div
+
+2006-10-29 14:02  donb
+
+	* packages/acs-kernel/sql/oracle/acs-install.sql: Main site stuff
+	  was built in hard-coded english rather than using message keys
+	  for the Oracle version.  Big &quot;oops&quot; uncovered by automated
+	  testing.
+
+2006-10-29 11:07  donb
+
+	*
+	  packages/acs-automated-testing/tcl/test/acs-automated-testing-procs.tcl:
+	  If a test logs a user in it should log that user out.
+	  Particularly if it then goes on to delete that user.	Failure to
+	  do so screws up tests that try to access the website, logically
+	  enough.
+
+2006-10-29 06:05  maltes
+
+	* packages/acs-templating/tcl/widget-procs.tcl: Localizing the
+	  group name in the party_search
+
+2006-10-28 13:56  donb
+
+	*
+	  packages/acs-authentication/tcl/test/acs-authentication-procs.tcl:
+	  Someone changed the local auth implementation to handle the
+	  &quot;RetrievePassword&quot; operation (by e-mailing a note to the user
+	  which links to a reset password page).  This is cool.  What's not
+	  cool is to change the behavior without running tests on the
+	  package and correcting the one that looked for the local auth
+	  implementation to return &quot;not_supported&quot; ...
+
+2006-10-28 13:22  donb
+
+	* packages/acs-tcl/tcl/test/multirow-test.tcl: Phew talk about
+	  obscure.  This test case NEVER worked (why do people commit tests
+	  that don't work in the first place????) because it used
+	  ad_library rather than ad_page_contract to document the template.
+	  ad_library fails in ad_make_relative_path in this case though I
+	  didn't track down why in detail.
+
+2006-10-28 12:34  maltes
+
+	* packages/acs-tcl/tcl/apm-procs.tcl: Added
+	  apm_package_ids_from_key to get a list of all package instances
+
+2006-10-27 13:34  donb
+
+	* packages/acs-tcl/tcl/test/ad-proc-test-procs.tcl: Fire callback
+	  failed because of a callback implementation defined in the test
+	  callback create callback test.  Each case would pass separately,
+	  but if the create test was followed by the fire test, the fire
+	  test would faile.
+
+2006-10-27 12:38  donb
+
+	* packages/search/sql/postgresql/syndication-create.sql: Fixed
+	  constraint naming error caught by automated testing.
+
+2006-10-26 10:20  maltes
+
+	* etc/keepalive/: keepalive-cron.sh, keepalive.sh: Added a timeout
+	  for the request in case the webserver hangs due to database
+	  connections
+
+2006-10-24 06:25  vinodk
+
+	* packages/acs-tcl/tcl/test/object-test-case-procs.tcl: My bad.
+	  table_name can be null on OpenACS 5.3. reverting my commit
+
+2006-10-24 06:10  vinodk
+
+	* packages/acs-tcl/tcl/test/object-test-case-procs.tcl: Fix
+	  acs_object_procs_test on PG. Was complaining about null value for
+	  table_name
+
+2006-10-23 07:15  donb
+
+	* packages/acs-subsite/www/shared/confirm.adp: Missing noquotes...
+
+2006-10-21 00:28  maltes
+
+	* packages/search/www/: search.adp, search.tcl: Fixing some more
+	  bugs and cleaned up the search result page
+
+2006-10-20 14:04  daveb
+
+	* packages/search/: tcl/search-procs.tcl, www/search.tcl: Remove or
+	  comment out dotlrn specific code snuck into search. This will be
+	  a callback of some sort eventually.
+
+2006-10-20 10:47  daveb
+
+	* packages/acs-templating/www/scripts/xinha/attach-file.tcl: Check
+	  permissions on package_id if object doesn't exist yet.
+
+2006-10-19 05:54  eduardop
+
+	* packages/: acs-authentication/tcl/local-procs.tcl,
+	  acs-subsite/catalog/acs-subsite.en_US.ISO-8859-1.xml,
+	  acs-subsite/www/user/password-reset.adp,
+	  acs-subsite/www/user/password-reset.tcl: remove the ability to
+	  reset the password by any user and add recover the password by
+	  using a token
+	  http://openacs.org/bugtracker/openacs/bug?bug_number=2920
+	  http://openacs.org/forums/message-view?message_id=447202
+
+2006-10-19 00:18  maltes
+
+	* packages/acs-mail-lite/: acs-mail-lite.info,
+	  tcl/acs-mail-lite-procs.tcl: Support for external SMTP Servers.
+	  Initial preparations to have complex_send store emails and fire
+	  them off later with complex_send_immediately
+
+2006-10-17 16:21  daveb
+
+	* packages/acs-templating/www/: scripts/xinha/attach-file.adp,
+	  resources/xinha-nightly/plugins/OacsAttach/oacs-attach.js: Update
+	  file/image attachment widgets.
+
+2006-10-16 06:43  daveb
+
+	*
+	  packages/acs-templating/catalog/acs-templating.en_US.ISO-8859-1.xml:
+	  Add new message keys for image/file attachments.
+
+2006-10-15 00:20  maltes
+
+	* packages/: notifications/tcl/notification-email-procs.tcl,
+	  acs-mail-lite/tcl/acs-mail-lite-procs.tcl: Made sure that forum
+	  notifications go through by adding quotes around the domain so
+	  sendmessage cannot complain anymore. Just to be on the safe side
+	  did this for Names of users as well in complex_send. Last but not
+	  least changed complex send to only overwrite the from_string if
+	  we actually find a party_id
+
+2006-10-14 11:22  maltes
+
+	* packages/notifications/: notifications.info,
+	  tcl/notification-email-procs.tcl: Support for complex_send in
+	  notifications
+
+2006-10-14 08:59  maltes
+
+	* packages/acs-mail-lite/tcl/acs-mail-lite-procs.tcl: Mime encoded
+	  subject and added option to use remote SMTP Servers with login
+
+2006-10-12 00:53  gustafn
+
+	* packages/acs-tcl/tcl/form-processing-procs.tcl: fix for the bug
+	  with tcl 8.5 mentioned in
+	  http://openacs.org/forums/message-view?message_id=487196
+
+2006-10-10 07:27  daveb
+
+	* packages/acs-templating/www/scripts/xinha/: attach-image.adp,
+	  attach-image.tcl: WOrk when there are no recent images to show
+
+2006-10-10 06:50  daveb
+
+	* packages/acs-templating/www/resources/mimetypes/:
+	  gnome-library.png, gnome-mime-application-magicpoint.png,
+	  gnome-mime-application-msword.png,
+	  gnome-mime-application-ogg.png, gnome-mime-application-par.png,
+	  gnome-mime-application-pdf.png,
+	  gnome-mime-application-pgp-encrypted.png,
+	  gnome-mime-application-pgp-keys.png,
+	  gnome-mime-application-pgp.png,
+	  gnome-mime-application-postscript.png,
+	  gnome-mime-application-qif.png,
+	  gnome-mime-application-rhythmbox-effect.png,
+	  gnome-mime-application-rhythmbox-playlist.png,
+	  gnome-mime-application-rtf.png, gnome-mime-application-smil.png,
+	  gnome-mime-application-vnd.lotus-1-2-3.png,
+	  gnome-mime-application-vnd.ms-excel.png,
+	  gnome-mime-application-vnd.ms-powerpoint.png,
+	  gnome-mime-application-vnd.ms-word.png,
+	  gnome-mime-application-vnd.stardivision.calc.png,
+	  gnome-mime-application-vnd.stardivision.impress.png,
+	  gnome-mime-application-vnd.stardivision.writer.png,
+	  gnome-mime-application-vnd.sun.xml.calc.png,
+	  gnome-mime-application-vnd.sun.xml.draw.png,
+	  gnome-mime-application-vnd.sun.xml.impress.png,
+	  gnome-mime-application-vnd.sun.xml.writer.png,
+	  gnome-mime-application-vnd.sun.xml.writer.template.png,
+	  gnome-mime-application-wordperfect.png,
+	  gnome-mime-application-x-abiword.png,
+	  gnome-mime-application-x-applix-spreadsheet.png,
+	  gnome-mime-application-x-applix-word.png,
+	  gnome-mime-application-x-archive.png,
+	  gnome-mime-application-x-arj.png,
+	  gnome-mime-application-x-bittorrent.png,
+	  gnome-mime-application-x-bla.png,
+	  gnome-mime-application-x-blender.png,
+	  gnome-mime-application-x-blf.png,
+	  gnome-mime-application-x-blv.png,
+	  gnome-mime-application-x-bzip-compressed-tar.png,
+	  gnome-mime-application-x-bzip.png,
+	  gnome-mime-application-x-cd-image.png,
+	  gnome-mime-application-x-class-file.png,
+	  gnome-mime-application-x-compress.png,
+	  gnome-mime-application-x-compressed-tar.png,
+	  gnome-mime-application-x-core.png,
+	  gnome-mime-application-x-cpio-compressed.png,
+	  gnome-mime-application-x-cpio.png,
+	  gnome-mime-application-x-dc-rom.png,
+	  gnome-mime-application-x-deb.png,
+	  gnome-mime-application-x-desktop.png,
+	  gnome-mime-application-x-dia-diagram.png,
+	  gnome-mime-application-x-dv.png,
+	  gnome-mime-application-x-dvi.png,
+	  gnome-mime-application-x-e-theme.png,
+	  gnome-mime-application-x-executable.png,
+	  gnome-mime-application-x-extension-nfo.png,
+	  gnome-mime-application-x-extension-par2.png,
+	  gnome-mime-application-x-font-afm.png,
+	  gnome-mime-application-x-font-bdf.png,
+	  gnome-mime-application-x-font-linux-psf.png,
+	  gnome-mime-application-x-font-pcf.png,
+	  gnome-mime-application-x-font-sunos-news.png,
+	  gnome-mime-application-x-font-ttf.png,
+	  gnome-mime-application-x-gameboy-rom.png,
+	  gnome-mime-application-x-genesis-rom.png,
+	  gnome-mime-application-x-glade.png,
+	  gnome-mime-application-x-gnome-saved-search.png,
+	  gnome-mime-application-x-gnucash.png,
+	  gnome-mime-application-x-gnumeric.png,
+	  gnome-mime-application-x-gtktalog.png,
+	  gnome-mime-application-x-gzip.png,
+	  gnome-mime-application-x-ipod-firmware.png,
+	  gnome-mime-application-x-jar.png,
+	  gnome-mime-application-x-killustrator.png,
+	  gnome-mime-application-x-kpresenter.png,
+	  gnome-mime-application-x-kspread.png,
+	  gnome-mime-application-x-kword.png,
+	  gnome-mime-application-x-lha.png,
+	  gnome-mime-application-x-lhz.png,
+	  gnome-mime-application-x-mrproject.png,
+	  gnome-mime-application-x-msx-rom.png,
+	  gnome-mime-application-x-n64-rom.png,
+	  gnome-mime-application-x-nes-rom.png,
+	  gnome-mime-application-x-object.png,
+	  gnome-mime-application-x-perl.png,
+	  gnome-mime-application-x-php.png,
+	  gnome-mime-application-x-python-bytecode.png,
+	  gnome-mime-application-x-python.png,
+	  gnome-mime-application-x-qw.png,
+	  gnome-mime-application-x-rar.png,
+	  gnome-mime-application-x-reject.png,
+	  gnome-mime-application-x-rpm.png,
+	  gnome-mime-application-x-ruby.png,
+	  gnome-mime-application-x-sharedlib.png,
+	  gnome-mime-application-x-shellscript.png,
+	  gnome-mime-application-x-shockwave-flash.png,
+	  gnome-mime-application-x-sms-rom.png,
+	  gnome-mime-application-x-sql.png,
+	  gnome-mime-application-x-stuffit.png,
+	  gnome-mime-application-x-tar.png,
+	  gnome-mime-application-x-tex.png,
+	  gnome-mime-application-x-trash.png,
+	  gnome-mime-application-x-x509-ca-cert.png,
+	  gnome-mime-application-zip.png, gnome-mime-application.png,
+	  gnome-mime-audio-ac3.png, gnome-mime-audio-basic.png,
+	  gnome-mime-audio-midi.png, gnome-mime-audio-x-aiff.png,
+	  gnome-mime-audio-x-it.png, gnome-mime-audio-x-midi.png,
+	  gnome-mime-audio-x-mod.png, gnome-mime-audio-x-mp3.png,
+	  gnome-mime-audio-x-s3m.png, gnome-mime-audio-x-stm.png,
+	  gnome-mime-audio-x-ulaw.png, gnome-mime-audio-x-voc.png,
+	  gnome-mime-audio-x-wav.png, gnome-mime-audio-x-xi.png,
+	  gnome-mime-audio-x-xm.png, gnome-mime-audio.png,
+	  gnome-mime-image.png, gnome-mime-text-css.png,
+	  gnome-mime-text-html.png, gnome-mime-text-plain.png,
+	  gnome-mime-text-x-authors.png, gnome-mime-text-x-c++src.png,
+	  gnome-mime-text-x-c-header.png, gnome-mime-text-x-c.png,
+	  gnome-mime-text-x-chdr.png, gnome-mime-text-x-copying.png,
+	  gnome-mime-text-x-credits.png, gnome-mime-text-x-csh.png,
+	  gnome-mime-text-x-csharp.png, gnome-mime-text-x-csrc.png,
+	  gnome-mime-text-x-haskell.png, gnome-mime-text-x-install.png,
+	  gnome-mime-text-x-java.png,
+	  gnome-mime-text-x-literate-haskell.png,
+	  gnome-mime-text-x-lyx.png, gnome-mime-text-x-makefile.png,
+	  gnome-mime-text-x-objcsrc.png, gnome-mime-text-x-patch.png,
+	  gnome-mime-text-x-readme.png, gnome-mime-text-x-scheme.png,
+	  gnome-mime-text-x-sql.png, gnome-mime-text-x-tex.png,
+	  gnome-mime-text-x-troff-man.png, gnome-mime-text-x-txt.png,
+	  gnome-mime-text-x-vcalendar.png, gnome-mime-text-x-vcard.png,
+	  gnome-mime-text-x-zsh.png, gnome-mime-text-xml.png,
+	  gnome-mime-text.png, gnome-mime-video.png,
+	  gnome-mime-x-directory-nfs-server.png,
+	  gnome-mime-x-directory-smb-server.png,
+	  gnome-mime-x-directory-smb-share.png,
+	  gnome-mime-x-directory-smb-workgroup.png,
+	  gnome-mime-x-font-afm.png, gnome-package.png,
+	  openofficeorg-20-database.png,
+	  openofficeorg-20-drawing-template.png,
+	  openofficeorg-20-drawing.png, openofficeorg-20-formula.png,
+	  openofficeorg-20-master-document.png,
+	  openofficeorg-20-oasis-database.png,
+	  openofficeorg-20-oasis-drawing-template.png,
+	  openofficeorg-20-oasis-drawing.png,
+	  openofficeorg-20-oasis-formula.png,
+	  openofficeorg-20-oasis-master-document.png,
+	  openofficeorg-20-oasis-presentation-template.png,
+	  openofficeorg-20-oasis-presentation.png,
+	  openofficeorg-20-oasis-spreadsheet-template.png,
+	  openofficeorg-20-oasis-spreadsheet.png,
+	  openofficeorg-20-oasis-text-template.png,
+	  openofficeorg-20-oasis-text.png,
+	  openofficeorg-20-oasis-web-template.png,
+	  openofficeorg-20-presentation-template.png,
+	  openofficeorg-20-presentation.png,
+	  openofficeorg-20-spreadsheet-template.png,
+	  openofficeorg-20-spreadsheet.png,
+	  openofficeorg-20-text-template.png, openofficeorg-20-text.png:
+	  Finally adding Gnome mime type icons
+
+2006-10-09 12:32  daveb
+
+	* packages/acs-subsite/www/: file.vuh, image.vuh: Check for data
+	  link before serving private image/files
+
+2006-10-09 12:29  daveb
+
+	* packages/acs-templating/www/scripts/xinha/: attach-file.adp,
+	  attach-file.tcl, attach-image.adp, attach-image.tcl: Handle
+	  private images more intelligently
+
+2006-10-06 07:45  daveb
+
+	* packages/acs-tcl/tcl/test/html-email-procs.tcl: Adding basic
+	  test.
+
+2006-10-06 06:39  daveb
+
+	* packages/acs-tcl/tcl/html-email-procs.tcl: Fix build_mime_message
+	  to package require mime since we don't include the mime
+	  procedures in opeancs anymore, tcllib is required to be installed
+	  and available to openacs.
+
+2006-10-06 06:21  maltes
+
+	* packages/acs-subsite/acs-subsite.info: Added registration
+	  redirect URL
+
+2006-10-06 06:20  maltes
+
+	* packages/acs-subsite/www/register/user-new.tcl: Added redirection
+	  to registration URL
+
+2006-10-05 19:07  daveb
+
+	* packages/acs-templating/www/scripts/xinha/: attach-file.tcl,
+	  attach-image.tcl: Strip item_id from name for display
+
+2006-10-05 19:02  daveb
+
+	* packages/acs-templating/www/scripts/xinha/attach-file.tcl: Make
+	  comment correct.
+
+2006-10-05 17:52  daveb
+
+	* packages/acs-templating/www/scripts/xinha/attach-image.tcl: Only
+	  show images that have thumbnails in the recent images picker
+
+2006-10-05 10:04  emmar
+
+	* packages/acs-content-repository/sql/oracle/: content-type.sql,
+	  packages-create.sql, upgrade/upgrade-5.3.0d2-5.3.0d3.sql: Fix
+	  #3008: remove duplicated drop_type procedure, added missing param
+	  in proc specification and correct upgrade script
+
+2006-10-05 08:34  daveb
+
+	* packages/acs-content-repository/tcl/image-procs.tcl: Cleanup tmp
+	  files after genating thumbnails
+
+2006-10-03 09:37  victorg
+
+	* packages/acs-content-repository/: acs-content-repository.info,
+	  sql/postgresql/upgrade/upgrade-5.3.0d3-5.3.0d4.sql: Adding script
+	  upgrade for fixing typo in function content_extlink__copy.  This
+	  has been fixed in the create script ( content-extlink.sql).
+
+2006-10-01 07:50  maltes
+
+	* etc/config.tcl: Updated libthread version. Make sure it works
+	  with OS X as well as per
+	  http://openacs.org/forums/message-view?message_id=486306
+
+2006-10-01 04:50  maltes
+
+	* packages/acs-content-repository/tcl/revision-procs.tcl: Added
+	  background delivery of files
+
+2006-09-30 09:14  emmar
+
+	* packages/acs-subsite/sql/oracle/application-groups-create.sql:
+	  Truncate too long identifier of constraint
+
+2006-09-30 09:12  emmar
+
+	* packages/acs-kernel/sql/oracle/rel-constraints-create.sql:
+	  Truncate too long identifier of constraints
+
+2006-09-27 03:43  eduardop
+
+	* packages/acs-authentication/tcl/password-procs.tcl: fix minor
+	  documentation errors
+
+2006-09-26 08:22  byronl
+
+	* packages/acs-templating/sql/oracle/demo-create.sql: Correction of
+	  name constraint
+
+2006-09-26 08:17  byronl
+
+	* packages/:
+	  acs-service-contract/sql/oracle/acs-sc-tables-create.sql,
+	  acs-subsite/sql/oracle/application-groups-create.sql,
+	  acs-subsite/sql/oracle/email-image.sql,
+	  acs-subsite/sql/oracle/portraits.sql: Correction of name
+	  constraint
+
+2006-09-26 08:15  byronl
+
+	* packages/acs-reference/sql/oracle/acs-reference-create.sql:
+	  Correction of name constraint VS:
+	  ----------------------------------------------------------------------
+
+2006-09-26 08:13  byronl
+
+	* packages/acs-messaging/sql/oracle/acs-messaging-create.sql:
+	  Correction of name constraint
+
+2006-09-26 07:58  byronl
+
+	* packages/acs-lang/sql/oracle/: ad-locales.sql,
+	  message-catalog.sql: Correction of name constraint
+
+2006-09-26 07:55  byronl
+
+	* packages/acs-content-repository/sql/oracle/: content-create.sql,
+	  content-image.sql, content-xml.sql: Correction of name constraint
+
+2006-09-26 07:48  byronl
+
+	* packages/: acs-kernel/sql/oracle/acs-create.sql,
+	  acs-kernel/sql/oracle/acs-permissions-create.sql,
+	  acs-kernel/sql/oracle/acs-relationships-create.sql,
+	  acs-kernel/sql/oracle/apm-create.sql,
+	  acs-kernel/sql/oracle/authentication-create.sql,
+	  acs-kernel/sql/oracle/community-core-create.sql,
+	  acs-kernel/sql/oracle/journal-create.sql,
+	  acs-kernel/sql/oracle/rel-constraints-create.sql,
+	  acs-kernel/sql/oracle/security-create.sql,
+	  acs-kernel/sql/oracle/upgrade/upgrade-5.2.0b9-5.2.0b10.sql,
+	  acs-authentication/sql/oracle/batch-job-tables-create.sql:
+	  Correction of name constraint
+
+2006-09-26 04:52  maltes
+
+	* packages/acs-templating/resources/lists/select-menu.adp: Reverted
+	  select-menu.adp as it works now
+
+2006-09-26 03:48  daveb
+
+	* packages/acs-templating/tcl/list-procs.tcl: Add type attribute
+	  back to list filters, removed by a previous commit, in error.
+	  Thanks to Malte for noticing.
+
+2006-09-26 02:12  maltes
+
+	* packages/acs-templating/resources/lists/select-menu.adp: Changes
+	  to list filters break passing through of filters.type. UNtil this
+	  is fixed, select-menu.adp does not work the way it used to
+
+2006-09-25 14:20  byronl
+
+	* packages/acs-templating/sql/postgresql/demo-create.sql:
+	  Correction of name constraint
+
+2006-09-25 14:16  byronl
+
+	* packages/acs-subsite/sql/postgresql/:
+	  application-groups-create.sql, email-image.sql, portraits.sql,
+	  upgrade/upgrade-4.1.1-4.2.sql: Correction of name constraint
+
+2006-09-25 14:09  byronl
+
+	*
+	  packages/acs-service-contract/sql/postgresql/acs-sc-tables-create.sql:
+	  Correction of name constraint
+
+2006-09-25 13:57  byronl
+
+	* packages/acs-reference/sql/postgresql/acs-reference-create.sql:
+	  Correction of name constraint
+
+2006-09-25 13:54  byronl
+
+	* packages/acs-messaging/sql/postgresql/acs-messaging-create.sql:
+	  Correction of name constraint
+
+2006-09-25 13:41  byronl
+
+	* packages/acs-lang/sql/postgresql/: ad-locales.sql,
+	  message-catalog.sql: Correction of name constraint
+
+2006-09-25 13:32  byronl
+
+	* packages/acs-core-docs/www/: parties.html,
+	  permissions-tediously-explained.html,
+	  xml/developers-guide/parties.xml,
+	  xml/developers-guide/permissions-tediously-explained-es.xml,
+	  xml/developers-guide/permissions-tediously-explained.xml:
+	  Correction of name constraint
+
+2006-09-25 13:25  byronl
+
+	* packages/acs-content-repository/sql/postgresql/:
+	  content-create.sql, content-image.sql, content-type.sql,
+	  content-xml.sql: Correction of name constraint
+
+2006-09-25 13:15  byronl
+
+	*
+	  packages/acs-authentication/sql/postgresql/batch-job-tables-create.sql:
+	  Correction of name constraint
+
+2006-09-25 10:59  byronl
+
+	* packages/acs-kernel/sql/postgresql/: acs-create.sql,
+	  acs-logs-create.sql, acs-metadata-create.sql,
+	  acs-objects-create.sql, acs-permissions-create.sql,
+	  acs-relationships-create.sql, apm-create.sql,
+	  authentication-create.sql, community-core-create.sql,
+	  groups-create.sql, journal-create.sql,
+	  rel-constraints-create.sql, security-create.sql,
+	  upgrade/upgrade-5.2.0b9-5.2.0b10.sql: Correction of name
+	  constraint
+
+2006-09-25 10:21  byronl
+
+	* packages/acs-kernel/sql/postgresql/rel-segments-create.sql:
+	  Correction of name constraint
+
+2006-09-25 06:39  maltes
+
+	* packages/acs-tcl/tcl/application-data-link-procs.tcl: Fixing a
+	  coupld of bugs in the edited data_link::new procedure
+
+2006-09-25 06:13  maltes
+
+	* packages/acs-mail-lite/tcl/acs-mail-lite-procs.tcl: Mime Encode
+	  the subject
+
+2006-09-24 04:45  maltes
+
+	* packages/acs-kernel/sql/postgresql/: acs-metadata-create.sql,
+	  upgrade/upgrade-5.3.0d1-5.3.0d2.sql: Made sure
+	  drop_type__cascade_p parameter has a meaning which is to drop all
+	  the objects of a certain type when dropping the object_tpye. Note
+	  that this does not work for content_types. Use the according
+	  procedure there. Not written in Oracle as there might be a reason
+	  for not using the __cascade_p parameter and then I don't want to
+	  have done the work of porting to Oracle for nothing
+
+2006-09-24 04:37  maltes
+
+	* packages/acs-content-repository/: acs-content-repository.info,
+	  sql/oracle/content-type.sql,
+	  sql/oracle/upgrade/upgrade-5.3.0d2-5.3.0d3.sql,
+	  sql/postgresql/content-type.sql,
+	  sql/postgresql/upgrade/upgrade-5.3.0d2-5.3.0d3.sql,
+	  tcl/content-type-procs.tcl: Added the option to drop the items,
+	  revisions and objects along with the dropping of a content type
+
+2006-09-24 02:26  maltes
+
+	* packages/acs-kernel/sql/postgresql/: apm-create.sql,
+	  upgrade/upgrade-5.3.0d1-5.3.0d2.sql: Made sure folders are
+	  dropped as well when dropping a package
+
+2006-09-24 01:18  maltes
+
+	* packages/acs-messaging/acs-messaging.info: Made sure we get an
+	  acs-kernel version which does not require
+	  acs_object_types.table_name to be unique
+
+2006-09-24 01:16  maltes
+
+	* packages/acs-kernel/: acs-kernel.info,
+	  sql/oracle/upgrade/upgrade-5.3.0d1-5.3.0d2.sql,
+	  sql/postgresql/upgrade/upgrade-5.3.0d1-5.3.0d2.sql: Bringing
+	  acs_object_types in an upgrade in sync with the same table when
+	  doing a installation
+
+2006-09-22 14:39  juanpa
+
+	* packages/acs-tcl/tcl/test/: multirow-test.adp, multirow-test.tcl:
+	  Files for ad_context_bar_multirow Test Case
+
+2006-09-22 14:36  juanpa
+
+	* packages/acs-tcl/tcl/test/navigation-procs.tcl: Test cases for
+	  the context_bar procs
+
+2006-09-21 15:01  rocaelh
+
+	* packages/acs-core-docs/www/postgres.html: additionals for PG
+	  8.1.x
+
+2006-09-13 10:57  victorg
+
+	* packages/acs-content-repository/tcl/test/test-image-1.jpg: Adding
+	  test-image-1.jpg so test case image_new does not fail
+
+2006-09-12 11:13  maltes
+
+	* packages/notifications/tcl/: notification-request-procs.tcl,
+	  notification-request-procs.xql: Added a new procedure to return
+	  all request_ids, so you could loop over the list and delete them
+	  (if you want to)
+
+2006-09-12 10:51  maltes
+
+	* packages/notifications/: notifications.info,
+	  tcl/notification-request-procs.tcl,
+	  tcl/notification-request-procs.xql: Added procedure for
+	  retrieving the list of subscribers
+
+2006-09-12 10:25  maltes
+
+	* packages/acs-subsite/tcl/group-procs.xql: get_members should get
+	  the member_id only once, even if the party is a member in
+	  multiple relationsships to the group
+
+2006-09-11 07:54  maltes
+
+	* packages/acs-subsite/www/admin/site-map/: mount-oracle.xql,
+	  mount-postgresql.xql: Made the name displayed in the mounting
+	  consitent with the instance name shown on the site map, as the
+	  object_name is not necessarily the instance name of the package
+
+2006-09-06 11:11  daveb
+
+	* packages/notifications/tcl/: notification-procs.tcl,
+	  sweep-procs-oracle.xql, sweep-procs-postgresql.xql: Allow setting
+	  notification date from notification::new and support checking
+	  notification date when sending out notiifcations.
+
+2006-09-06 07:46  daveb
+
+	* packages/acs-content-repository/sql/postgresql/:
+	  upgrade/upgrade-5.3.0d1-5.3.0d2.sql, content-search.sql: Update
+	  search triggers to honor publish_date.
+
+2006-09-06 07:37  daveb
+
+	*
+	  packages/acs-content-repository/tcl/test/content-search-procs.tcl:
+	  All the triggers are testing in the one test case, so
+	  consolidate.
+
+2006-09-06 07:18  daveb
+
+	*
+	  packages/acs-content-repository/tcl/test/content-search-procs.tcl:
+	  Adding tests for content search triggers
+
+2006-09-03 10:23  daveb
+
+	* packages/acs-templating/www/scripts/xinha/: attach-file.adp,
+	  attach-file.tcl: Add recent file pickeer
+
+2006-09-03 10:09  donb
+
+	* packages/acs-tcl/tcl/: defs-procs-oracle.xql,
+	  defs-procs-postgresql.xql, defs-procs.tcl: Removed an unused,
+	  unloved, unwanted, and unneeded proc.
+
+2006-09-03 09:59  daveb
+
+	* packages/acs-templating/www/scripts/xinha/attach-image.adp:
+	  Restore value of f_url removed in cleanup of html
+
+2006-09-03 09:58  daveb
+
+	* packages/acs-templating/www/scripts/xinha/attach-file.tcl: Use
+	  file specific handler
+
+2006-09-01 13:33  daveb
+
+	* packages/acs-tcl/tcl/application-data-link-procs.xql: Add queries
+	  for new procs
+
+2006-09-01 13:01  daveb
+
+	* packages/acs-tcl/tcl/: application-data-link-procs.tcl,
+	  test/application-data-link-procs.tcl: Adding new procs to create
+	  single direction links, and get all links regardless of type,
+	  proc to check if a link exists, and tests for the new
+	  functionality.
+
+2006-09-01 11:02  daveb
+
+	* packages/acs-templating/www/scripts/xinha/: attach-image.adp,
+	  attach-image.tcl: Add recent images picker
+
+2006-08-31 13:44  emmar
+
+	* packages/acs-tcl/tcl/test/datamodel-test-procs.tcl: added code to
+	  check more than 1 level of inheritance
+
+2006-08-31 13:08  vivianh
+
+	* packages/acs-tcl/tcl/test/acs-tcl-apm-procs.tcl: Tcl helper
+	  procedures for the acs-automated-testing tests of
+
+2006-08-31 13:05  vivianh
+
+	* packages/acs-lang/tcl/test/acs-lang-message-procs.tcl: Test cases
+	  for lang-message-procs
+
+2006-08-31 12:08  emmar
+
+	* packages/acs-tcl/tcl/test/datamodel-test-procs.tcl: Add check for
+	  supertype when table_name is null
+
+2006-08-31 09:31  emmar
+
+	*
+	  packages/acs-service-contract/sql/oracle/acs-sc-object-types-create.sql:
+	  Downcase table_name and column_id of object types
+
+2006-08-31 08:50  daveb
+
+	* packages/acs-subsite/www/image.vuh: Add handler for uploaded
+	  images
+
+2006-08-31 08:41  daveb
+
+	* packages/acs-subsite/www/file.vuh: Adding file download handler
+	  (for now until I have a better solution)
+
+2006-08-31 07:30  daveb
+
+	* packages/acs-templating/www/scripts/xinha/attach-file.adp: Remove
+	  debugging alert statements in javascript.
+
+2006-08-31 07:26  victorg
+
+	* packages/acs-tcl/tcl/test/memoizing-procs.tcl: Fixing auxiliary
+	  proc name.
+
+2006-08-31 07:21  daveb
+
+	* packages/acs-templating/www/scripts/xinha/: attach-file.adp,
+	  attach-file.tcl: Add title label
+
+2006-08-31 07:19  daveb
+
+	* packages/acs-templating/catalog/:
+	  acs-templating.de_DE.ISO-8859-1.xml,
+	  acs-templating.en_US.ISO-8859-1.xml,
+	  acs-templating.es_ES.ISO-8859-1.xml: New messages for image/file
+	  popup
+
+2006-08-31 07:15  daveb
+
+	*
+	  packages/acs-templating/www/resources/xinha-nightly/plugins/OacsAttach/oacs-attach.js:
+	  Update to support regular file attachment popup
+
+2006-08-31 07:08  daveb
+
+	* packages/acs-content-repository/tcl/content-revision-procs.tcl:
+	  Remove site specific workaround for PG 7
+
+2006-08-31 03:17  emmar
+
+	* packages/acs-tcl/tcl/test/object-test-case-procs.tcl: Add SQL
+	  query for oracle
+
+2006-08-31 00:31  emmar
+
+	* packages/search/sql/oracle/: search-create.sql,
+	  search-ctxsys.sql, search-from-scratch.sql,
+	  search-index-create.sql, search-index-drop.sql,
+	  search-index-from-scratch.sql, search-packages-create.sql,
+	  search-sc-create.sql, search-tables-create.sql,
+	  syndication-create.sql, syndication-drop.sql: Remove 'exit' lines
+	  that caused datamodel to be incompletely installed. Comment out
+	  creation of triggers for forums, static-portal, acs-events, faq,
+	  survey and photobook (should go in their own package)
+
+2006-08-30 18:24  daveb
+
+	* packages/acs-templating/www/scripts/xinha/attach-file.adp: Remove
+	  refereces to &quot;images&quot; in the attach file dialog.
+
+2006-08-30 10:25  emmar
+
+	* packages/acs-kernel/sql/oracle/acs-metadata-create.sql: remove
+	  remaining comma added by mistake during my last commit
+
+2006-08-30 08:55  daveb
+
+	* packages/acs-templating/www/scripts/xinha/: attach-file.adp,
+	  attach-file.tcl, attach-image.adp, attach-image.tcl: Use a
+	  similar dialog for attaching links to files (and uploading the
+	  files).  The logic was too complex to support both in one file,
+	  this is alot easier to understand and debug.
+
+2006-08-30 07:42  emmar
+
+	* packages/acs-messaging/: acs-messaging.info,
+	  sql/oracle/acs-messaging-create.sql,
+	  sql/oracle/upgrade/upgrade-5.3.0d1-5.3.0d2.sql,
+	  sql/postgresql/acs-messaging-create.sql,
+	  sql/postgresql/upgrade/upgrade-5.3.0d1-5.3.0d2.sql: Fix #2981:
+	  table_name and id_column must be null for acs_message_revision
+	  object type
+
+2006-08-29 09:40  daveb
+
+	* packages/acs-content-repository/www/: image-info.adp,
+	  image-info.tcl: Add page to show image properties
+
+2006-08-29 09:39  daveb
+
+	* packages/acs-content-repository/tcl/: image-procs.tcl,
+	  image-procs.xql: Add proc to find the thumbnail for a particular
+	  image.
+
+2006-08-27 13:34  daveb
+
+	* packages/acs-content-repository/tcl/:
+	  content-revision-procs-postgresql.xql,
+	  content-revision-procs.tcl, image-procs.tcl: Initial image api to
+	  imagemagick to create optional thumbnails and medium file sizes.
+	  Need to add parameters and make executable path handling smarter
+
+2006-08-24 11:49  emmar
+
+	* packages/acs-tcl/tcl/test/datamodel-test-procs.tcl: Reduce
+	  duplicated code
+
+2006-08-24 07:12  emmar
+
+	* packages/acs-tcl/tcl/test/datamodel-test-procs.tcl: Added code to
+	  check constraint name for postgresql
+
+2006-08-24 04:37  emmar
+
+	* packages/acs-templating/resources/forms/accessible-forms.adp:
+	  Added missing noquote for label element
+
+2006-08-22 07:51  daveb
+
+	* packages/acs-templating/tcl/list-procs.tcl: Once and for all
+	  resolve the case where page_query_name is blank in
+	  template::list::create. If its blank or if its not blank, the
+	  query text is retrieved previously in the procedure so it does
+	  not matter what query name we pass in.
+
+2006-08-21 15:25  daveb
+
+	* packages/search/tcl/search-procs.tcl: Add content filtering for
+	  binary types. Pass object_id to content_get so we can grab the
+	  path to filesystem stored items
+
+2006-08-21 15:21  daveb
+
+	* packages/search/tcl/search-convert-procs.tcl: Add better mime
+	  type matching in conversion. Add utility for powerpoint
+	  conversion.
+
+2006-08-21 09:05  daveb
+
+	* packages/acs-templating/tcl/list-procs.tcl: Fix infinite redirect
+	  by clearing, the clear_one url var. Thanks to vinod kurup for
+	  catching it!
+
+2006-08-18 12:03  daveb
+
+	* packages/acs-templating/tcl/apm-callback-procs.tcl: Add install
+	  callback
+
+2006-08-18 12:02  daveb
+
+	* packages/acs-templating/tcl/richtext-procs.tcl: Pass aprent_id to
+	  oacs-attach popup
+
+2006-08-18 12:00  daveb
+
+	* packages/acs-templating/www/scripts/xinha/: Makefile,
+	  attach-file.adp, attach-file.tcl, blank.html, file-selector.adp,
+	  file-selector.tcl, insert-file-orig.adp, insert-ilink.adp,
+	  insert-ilink.tcl, insert-image.adp, insert-image.tcl,
+	  insert_image.html: Add reusable includes for xinha popups
+
+2006-08-18 11:38  daveb
+
+	*
+	  packages/acs-templating/www/resources/xinha-nightly/plugins/OacsAttach/oacs-attach.js:
+	  Use attach-file popup
+
+2006-08-18 11:37  daveb
+
+	*
+	  packages/acs-templating/www/resources/xinha-nightly/plugins/OacsAttach/:
+	  oacs-attach.css, oacs-attach.js, img/close.gif,
+	  img/insert-ilink.gif, img/insert-image.gif, img/qmark.gif,
+	  img/up.gif: Adding image/file attach plugin for xinha
+
+2006-08-18 11:17  emmar
+
+	* packages/acs-kernel/sql/oracle/: acs-create.sql,
+	  acs-logs-create.sql, acs-metadata-create.sql,
+	  acs-objects-create.sql, acs-permissions-create.sql,
+	  acs-relationships-create.sql, apm-create.sql,
+	  community-core-create.sql, groups-create.sql,
+	  rel-constraints-create.sql, rel-segments-create.sql: Applying
+	  constraint naming standard
+
+2006-08-18 09:39  emmar
+
+	* packages/acs-tcl/tcl/test/datamodel-test-procs.tcl: Improve
+	  constraint names test for oracle, checking name, type, constraint
+	  name length and giving a hint to standarize the constraint name
+
+2006-08-18 02:02  gustafn
+
+	*
+	  packages/acs-templating/www/resources/xinha-nightly/plugins/OacsFs/oacs-fs.js:
+	  added parameter script_dir to configuration section, defaults now
+	  to /xowiki; can be reset to the old behaviour via e.g.:
+	  xinha_config.script_dir = '.';
+
+2006-08-17 01:43  emmar
+
+	* packages/acs-tcl/tcl/test/apm-parameter-test-procs.tcl: parameter
+	  name should not contain space
+
+2006-08-16 04:19  emmar
+
+	* packages/acs-messaging/sql/oracle/acs-messaging-create.sql: Fix
+	  typo in table_name for acs_messages object type
+
+2006-08-14 12:55  byronl
+
+	* packages/acs-tcl/tcl/test/object-test-case-procs.tcl: test for
+	  acs_object:: procs VS:
+	  ----------------------------------------------------------------------
+
+2006-08-14 07:40  victorg
+
+	* packages/acs-tcl/tcl/test/: apm-parameter-test-procs.tcl,
+	  memoizing-procs.tcl: Test cases for registration/unregistration
+	  of parameters.  Test cases for memoizing procs.
+
+	  Test cases done by Adrian Catalan (ykro@galileo.edu)
+
+2006-08-13 17:39  ncarroll
+
+	* etc/daemontools/run: Reverted back to default run file, as I had
+	  previously committed my own run file.
+
+2006-08-12 13:47  cesarh
+
+	* packages/acs-tcl/tcl/test/test-set-cookie-procs.tcl: Test case
+	  for cookies.
+
+2006-08-11 16:19  juanpa
+
+	* packages/acs-tcl/tcl/test/navigation-procs.tcl: Test cases for
+	  the context_bar procs
+
+2006-08-11 16:18  juanpa
+
+	* packages/acs-tcl/tcl/test/whos-online-procs.tcl: Test cases for
+	  the whos_online procs
+
+2006-08-11 16:13  juanpa
+
+	* packages/acs-tcl/tcl/test/: navigation-procs.tcl,
+	  whos-online-procs.tcl: [no log message]
+
+2006-08-11 15:23  donb
+
+	* packages/acs-messaging/sql/: oracle/acs-messaging-create.sql,
+	  postgresql/acs-messaging-create.sql: Made tables etc lower-case
+	  to satisfy Jeff's coding standards automated tests.
+
+2006-08-11 14:58  donb
+
+	* packages/acs-kernel/sql/: oracle/apm-create.sql,
+	  oracle/rel-segments-create.sql, postgresql/apm-create.sql,
+	  postgresql/community-core-create.sql,
+	  postgresql/groups-create.sql, postgresql/rel-segments-create.sql:
+	  Fixed some silly little things...
+
+2006-08-11 03:10  maltes
+
+	* packages/acs-tcl/tcl/: object-procs.tcl, object-procs.xql,
+	  test/acs-tcl-test-procs.tcl: Added acs_object::package_id
+	  procedure to retrieve the package_id along with testcase
+
+2006-08-11 02:13  emmar
+
+	* packages/acs-tcl/tcl/community-core-procs-oracle.xql: Fix syntax
+	  to exec person.del()
+
+2006-08-11 02:11  emmar
+
+	* packages/acs-tcl/tcl/test/datamodel-test-procs.tcl: Does not
+	  include system table in the result of the test (oracle)
+
+2006-08-11 02:09  emmar
+
+	* packages/acs-tcl/tcl/test/ad-proc-test-procs.tcl: Fix a_callback
+	  definition. '-' was missing for switch arg1
+
+2006-08-10 14:22  byronl
+
+	* packages/acs-tcl/tcl/test/community-core-test-procs.tcl: test for
+	  community-core procs, proc: cc_lookup_email_user,
+	  cc_email_from_party,person::person_p, person::get, person::new,
+	  person::update, person::get_bio,
+	  person::update_bio,party::get_by_email, party::update VS:
+	  ----------------------------------------------------------------------
+
+2006-08-10 11:30  emmar
+
+	* packages/acs-tcl/tcl/test/openacs-kernel-procs.tcl: Add missing
+	  &quot;email&quot; field to CSV file (process_objects_csv)
+
+2006-08-10 11:26  emmar
+
+	* packages/acs-tcl/tcl/test/datamodel-test-procs.tcl:
+	  __named_constraints: added code for oracle
+	  __acs_object_type_check: fix queries to be run also on oracle
+	  __acs_attribute_check: added missing oracle datatype
+	  (date/timestamp is still pending).
+
+2006-08-10 11:19  emmar
+
+	* packages/acs-tcl/tcl/test/acs-tcl-test-procs.tcl: Replacing
+	  'limit 0' with 'person_id=1 and person_id=2' so it can be run on
+	  both pg and oracle
+
+2006-08-10 09:01  daveb
+
+	* packages/search/sql/oracle/search-tables-create.sql: Remove
+	  reference to dotlrn
+
+2006-08-10 08:58  daveb
+
+	* packages/search/tcl/search-procs.tcl: User callback::impl_exists
+
+2006-08-09 10:03  rocaelh
+
+	* packages/acs-tcl/tcl/test/acs-tcl-test-procs.tcl: fixing some
+	  stuff with parameters test, when you change those randomly
+	  strange things can happen! will be good to revert stuff
+
+2006-08-09 07:55  maltes
+
+	* packages/acs-tcl/tcl/test/test-membership-rel-procs.tcl: There
+	  shall be no A# for thy TCL interpreter
+
+2006-08-09 06:45  maltes
+
+	* packages/acs-mail-lite/tcl/acs-mail-lite-init.tcl: Fixed typo
+
+2006-08-08 14:27  donb
+
+	* packages/notifications/: notifications.info,
+	  catalog/notifications.ar_EG.utf-8.xml,
+	  catalog/notifications.ar_LB.utf-8.xml,
+	  catalog/notifications.ast_ES.ISO-8859-1.xml,
+	  catalog/notifications.ca_ES.ISO-8859-1.xml,
+	  catalog/notifications.da_DK.ISO-8859-1.xml,
+	  catalog/notifications.de_DE.ISO-8859-1.xml,
+	  catalog/notifications.en_AU.ISO-8859-1.xml,
+	  catalog/notifications.en_US.ISO-8859-1.xml,
+	  catalog/notifications.es_CO.ISO-8859-1.xml,
+	  catalog/notifications.es_ES.ISO-8859-1.xml,
+	  catalog/notifications.es_GT.ISO-8859-1.xml,
+	  catalog/notifications.eu_ES.ISO-8859-1.xml,
+	  catalog/notifications.fi_FI.utf-8.xml,
+	  catalog/notifications.fr_FR.ISO-8859-1.xml,
+	  catalog/notifications.gl_ES.ISO-8859-1.xml,
+	  catalog/notifications.hi_IN.utf-8.xml,
+	  catalog/notifications.hu_HU.utf-8.xml,
+	  catalog/notifications.it_IT.ISO-8859-1.xml,
+	  catalog/notifications.ko_KR.utf-8.xml,
+	  catalog/notifications.ms_MY.utf-8.xml,
+	  catalog/notifications.nl_NL.ISO-8859-1.xml,
+	  catalog/notifications.nn_NO.ISO-8859-1.xml,
+	  catalog/notifications.no_NO.ISO-8859-1.xml,
+	  catalog/notifications.pl_PL.utf-8.xml,
+	  catalog/notifications.pt_BR.ISO-8859-1.xml,
+	  catalog/notifications.pt_PT.ISO-8859-1.xml,
+	  catalog/notifications.ro_RO.utf-8.xml,
+	  catalog/notifications.ru_RU.utf-8.xml,
+	  catalog/notifications.sv_SE.ISO-8859-1.xml,
+	  catalog/notifications.zh_CN.utf-8.xml,
+	  sql/postgresql/notifications-core-create.sql,
+	  sql/postgresql/notifications-replies-create.sql,
+	  tcl/notification-callback-procs.tcl,
+	  tcl/notification-callback-procs.xql,
+	  tcl/notification-email-procs.tcl, tcl/reply-sweep-init.tcl: First
+	  shot at merging oacs-5-2 apps used in .LRN to HEAD.
+
+2006-08-08 11:12  gustafn
+
+	* packages/search/tcl/: search-procs.tcl, search-procs.xql: fixing
+	  broken search: unknown function callback::exists removed, missing
+	  query added.
+
+2006-08-06 13:57  torbenb
+
+	* packages/acs-subsite/www/resources/site-master.css,
+	  www/site-master.adp: upgrading contextbar css to match technique
+	  used by action-list class in same files, which renders more
+	  consistently
+
+2006-08-06 13:40  torbenb
+
+	* packages/acs-reference/www/doc/: design.html, index.html,
+	  requirements.html: upgrading html, closing li p tags, adding
+	  quotes to tag attributes
+
+2006-08-06 12:43  daveb
+
+	* packages/acs-content-repository/tcl/: content-item-procs.tcl,
+	  image-procs.tcl, test/content-image-test-procs.tcl: Adding image
+	  API
+
+2006-08-06 11:56  torbenb
+
+	* packages/acs-reference/www/doc/index.html: removed bad SDM link,
+	  redundant notes section
+
+2006-08-06 11:54  torbenb
+
+	* packages/acs-reference/www/doc/design.html: added documentation
+	  commentary, applied bs filter, renumbered sections
+
+2006-08-06 11:41  torbenb
+
+	* packages/acs-reference/www/doc/requirements.html: removed c-Ms,
+	  added p tags, added a comment to unimplemented requirements /
+	  feature request
+
+2006-08-06 11:30  torbenb
+
+	* packages/acs-reference/www/doc/design.html: removing c-Ms,
+	  wrapping text with p tags, added link to api-browser in api
+	  section
+
+2006-08-04 22:18  torbenb
+
+	* packages/acs-core-docs/www/: parties.html,
 	  permissions-tediously-explained.html, permissions.html,
-	  postgres.html, programming-with-aolserver.html,
-	  psgml-for-emacs.html, psgml-mode.html, release-notes-4-5.html,
-	  release-notes-4-6-2.html, release-notes-4-6-3.html,
-	  release-notes-4-6.html, release-notes.html,
-	  releasing-openacs-core.html, releasing-openacs.html,
-	  releasing-package.html, request-processor.html,
-	  requirements-template.html, rp-design.html, rp-requirements.html,
-	  security-design.html, security-notes.html,
-	  security-requirements.html, style-guide.html,
-	  subsites-design.html, subsites-requirements.html, subsites.html,
-	  tcl-doc.html, templates.html, tutorial-css-layout.html,
-	  tutorial-cvs.html, tutorial-database.html, tutorial-debug.html,
-	  tutorial-distribute.html, tutorial-newpackage.html,
-	  tutorial-pages.html, unix-installation.html,
-	  update-repository.html, update-translations.html,
-	  upgrade-4.5-to-4.6.html, upgrade-openacs-files.html,
-	  upgrade-overview.html, using-cvs-with-openacs.html,
-	  variables.html, win2k-installation.html,
-	  xml/releasing-openacs.xml, xml/engineering-standards/cvs.xml:
-	  fixes to cvs, releasing openacs
+	  xml/developers-guide/parties.xml,
+	  xml/developers-guide/permissions-tediously-explained.xml,
+	  xml/developers-guide/permissions.xml: first pass with the bs
+	  filter
 
-2004-11-04 16:19  jader
+2006-08-04 11:09  juanpa
 
-	* packages/acs-subsite/lib/login.adp: Add a paragraph break to make
-	  it easier to see how to register.
+	* packages/acs-tcl/tcl/test/: html-conversion-procs.tcl,
+	  openacs-kernel-procs.tcl, whos-online-procs.tcl: Test cases for
+	  some acs-tcl procs
 
-2004-11-04 15:33  jader
+2006-08-01 09:09  cesarh
 
-	* etc/analog.cfg: Fix path in analog configuration file.
+	* packages/acs-tcl/tcl/test/test-membership-rel-procs.tcl: Script
+	  for testing the procs inside of the file membership-rel-procs.tcl
 
-2004-11-03 08:37  joel
+2006-07-31 11:04  maltes
 
-	* packages/acs-core-docs/www/: contributing-code.html,
-	  cvs-resources.html, index.html, openacs-cvs-concepts.html,
-	  using-cvs-with-openacs.html, xml/engineering-standards/cvs.xml,
-	  xml/index.xml: changed layout of CVS section
+	* packages/acs-mail-lite/acs-mail-lite.info: Removed callbacks from
+	  teh info file as this is handled differently now
 
-2004-11-02 15:16  giancarlol
+2006-07-29 16:10  donb
 
-	* packages/: acs-kernel/catalog/acs-kernel.it_IT.ISO-8859-1.xml,
-	  acs-subsite/catalog/acs-subsite.it_IT.ISO-8859-1.xml: Replaced
-	  HTML entities for special characters (Latin-1 supplement) with
-	  ISO-8859-1 encoding.
+	* packages/acs-templating/tcl/: data-procs.tcl, date-procs.tcl,
+	  doc-procs.tcl, file-procs.tcl, list-procs.tcl, request-procs.tcl,
+	  spellcheck-procs.tcl, tab-procs.tcl, util-procs.tcl: All
+	  templating procs now have at least minimal documentation.
 
-2004-11-01 15:44  joel
+2006-07-28 19:01  donb
 
-	* packages/acs-core-docs/www/cvs-guidelines.html: added section on
-	  using cvs
+	* packages/acs-templating/tcl/: richtext-or-file-procs.tcl,
+	  richtext-procs.tcl, table-procs.tcl: Added more minimalist
+	  documentation to make our automated test stuff happy happy happy
 
-2004-11-01 15:39  joel
+2006-07-28 17:35  donb
 
+	* packages/acs-templating/tcl/currency-procs.tcl: knocked off a
+	  couple of more undocumented procedures.
+
+2006-07-28 17:28  donb
+
+	* packages/acs-subsite/tcl/subsite-callback-procs.tcl: Nick
+	  accidently broke the callback contract for paramter_changed by
+	  adding documentation.  The check code allows anything if there
+	  are only two elements in the ad_proc list (i.e. name doc) but if
+	  three elements are there (name doc empty_body) the body must be
+	  &quot;-&quot; or &quot;&quot; (not the empty list).
+
+2006-07-28 16:30  donb
+
+	* packages/acs-templating/tcl/widget-procs.tcl: Added minimal
+	  documentation for each proc in this file, so they'll pass our doc
+	  spec smoke test.
+
+2006-07-27 13:09  victorg
+
+	* packages/: acs-content-repository/sql/oracle/types-create.sql,
+	  acs-content-repository/sql/postgresql/types-create.sql,
+	  acs-kernel/sql/oracle/apm-create.sql,
+	  acs-kernel/sql/postgresql/apm-create.sql: Removing wrong acs
+	  attributes for object type apm_package.  Fixing object attribute
+	  datatypes so they are consistent with the database datatype.
+
+2006-07-26 18:39  ncarroll
+
+	* packages/acs-tcl/tcl/: application-data-link-procs.tcl,
+	  application-link-procs.tcl: Bug stomp: added documentation to acs
+	  core procs that had no docs.
+
+2006-07-26 18:15  ncarroll
+
+	* packages/acs-content-repository/tcl/doc-procs.tcl: Bug stomp:
+	  added documentation to acs core procs that had no docs.
+
+2006-07-26 18:08  ncarroll
+
+	* packages/acs-subsite/tcl/subsite-procs.tcl: Bug stomp: added
+	  documentation to acs core procs that had no docs.
+
+2006-07-26 17:48  ncarroll
+
+	* etc/config.tcl: Accidentally committed my config.tcl file to the
+	  repository.  Please don't shoot me.
+
+2006-07-26 17:42  ncarroll
+
+	* etc/config.tcl, etc/daemontools/run,
+	  packages/acs-subsite/tcl/attribute-procs.tcl: Bug stomp: added
+	  documentation to acs core procs that had no docs.
+
+2006-07-26 17:31  ncarroll
+
+	* packages/: acs-admin/tcl/merge-procs.tcl,
+	  acs-subsite/tcl/subsite-callback-procs.tcl,
+	  acs-tcl/tcl/test/ad-proc-test-procs.tcl: Bug stomp: added
+	  documentation to acs core procs that had no docs.
+
+2006-07-26 13:52  gustafn
+
+	* packages/acs-content-repository/: acs-content-repository.info,
+	  sql/postgresql/content-type.sql,
+	  sql/postgresql/upgrade/upgrade-5.3.0d1-5.3.0d2.sql,
+	  tcl/content-item-procs.tcl, tcl/content-revision-procs.tcl: Fix
+	  for the duplicate revision_id and deadlock on concurrent cr
+	  updates and inserts
+
+2006-07-26 13:04  daveb
+
+	* packages/acs-templating/tcl/list-procs.tcl: Always reset
+	  client_property when clearing one filter (thanks Vinod)
+
+2006-07-26 12:56  daveb
+
+	* packages/acs-templating/tcl/list-procs.tcl: Fix so order by
+	  (clicking on the column name) doesn't lose the the applied
+	  filters for a certain list.
+
+2006-07-26 06:59  maltes
+
+	* packages/acs-mail-lite/tcl/acs-mail-lite-procs.tcl: Added support
+	  for multipart/alternative
+
+2006-07-25 04:59  torbenb
+
+	* packages/tsearch2-driver/www/doc/index.html: updating links for
+	  installing postgresql\'s tsearch module
+
+2006-07-25 04:10  torbenb
+
+	* packages/tsearch2-driver/www/doc/index.html: moving
+	  tsearch2-driver instructions from elsewhere to the doc in the
+	  tsearch2-driver package to match context
+
+2006-07-25 00:00  torbenb
+
+	* packages/tsearch2-driver/www/doc/index.html: normalizing existing
+	  doc verbage
+
+2006-07-24 10:39  daveb
+
+	* packages/acs-templating/tcl/list-procs.tcl: Many improvements,
+	  especially keying filter list client property on url vars that
+	  are preserved in the list, using ns_sha1 to encode the client
+	  property name so it fits within 50 character limit, fixed clear
+	  urls so it saves the client property correctly.
+
+2006-07-24 07:36  daveb
+
+	* packages/acs-templating/tcl/list-procs.tcl: Key list filter form
+	  client property by unamed hidden filters/url vars
+
+2006-07-21 12:26  daveb
+
+	* packages/acs-templating/tcl/list-procs.tcl: Fix unquoted label
+	  for text filter form selection.
+
+2006-07-20 21:08  daveb
+
+	* packages/acs-templating/tcl/list-procs.tcl: Remove conflict
+	  committed in error.
+
+	  Properly escape square brackets in ad_form label defintion.
+
+2006-07-20 13:24  daveb
+
+	* packages/acs-templating/: resources/lists/form-filters.adp,
+	  resources/lists/listed-filters.adp, tcl/list-procs.tcl: Adding
+	  new listfilters-form tag to generate a dynamic form to specify
+	  filter criteria for listbuilder lists.
+
+	  Adding listed-filters listfilter style to show a nice summary of
+	  choosen filterswith a remove link for each one.
+
+2006-07-20 03:10  torbenb
+
+	* packages/acs-api-browser/www/: index-oracle.xql,
+	  index-postgresql.xql, index.tcl: modifying api-doc/index to
+	  accept a package-key, returns a package-view from a package-key
+	  if it is installed etc. for example
+	  /api-doc/index?about_package_key=acs-datetime would be the same
+	  as browsing to /api-doc/package-view?version_id=x where x is the
+	  local version_id.  This feature will help static docs link to
+	  evolving api automatically. oracle sql is untested, but should
+	  work.
+
+2006-07-19 20:30  rocaelh
+
+	* www/blank-master.tcl: adding check for on_load in case is not
+	  sent
+
+2006-07-19 03:07  darior
+
+	* packages/acs-subsite/tcl/email-image-procs.tcl: solve bug to show
+	  default paramater PrivateEmailLevelP in combobox
+
+2006-07-17 01:02  torbenb
+
+	* packages/acs-core-docs/www/xml/developers-guide/:
+	  tutorial-pages.xml, tutorial.xml: fixing part 2b of bug 1640,
+	  moving view-link, and getting rid of dashes in my-first-package
+	  because package-id is myfirstpackage
+
+2006-07-17 00:38  torbenb
+
+	* packages/acs-core-docs/www/xml/developers-guide/tutorial-db.xml:
+	  fix part 1 of bug 1640, add db name to psql commands
+
+2006-07-16 23:05  torbenb
+
+	*
+	  packages/acs-core-docs/www/xml/developers-guide/tutorial-pages.xml:
+	  fixes bug 2087, see 2b of bug 1640.
+
+2006-07-16 22:38  torbenb
+
 	* packages/acs-core-docs/www/: acs-admin.html,
 	  acs-package-dev.html, acs-plat-dev.html, analog-install.html,
 	  analog-setup.html, aolserver.html, aolserver4.html,
 	  apm-design.html, apm-requirements.html, automated-backup.html,
 	  automated-testing-best-practices.html, backup-recovery.html,
 	  backups-with-cvs.html, bootstrap-acs.html, complete-install.html,
-	  configuring-new-site.html, credits.html, cvs-tips.html,
+	  configuring-configuring-packages.html,
+	  configuring-configuring-permissions.html,
+	  configuring-install-packages.html,
+	  configuring-mounting-packages.html, configuring-new-site.html,
+	  credits.html, cvs-guidelines.html, cvs-tips.html,
 	  database-management.html, db-api-detailed.html, db-api.html,
 	  dev-guide.html, doc-standards.html, docbook-primer.html,
 	  eng-standards-constraint-naming.html,
@@ -457,7 +6748,8 @@
 	  i18n-overview.html, i18n-requirements.html,
 	  i18n-translators.html, i18n.html, index.html,
 	  individual-programs.html, install-cvs.html,
-	  install-daemontools.html, install-full-text-search.html,
+	  install-daemontools.html, install-full-text-search-openfts.html,
+	  install-full-text-search-tsearch2.html, install-ldap-radius.html,
 	  install-more-software.html, install-next-add-server.html,
 	  install-next-backups.html, install-next-nightly-vacuum.html,
 	  install-nsopenssl.html, install-nspam.html,
@@ -479,177 +6771,418 @@
 	  permissions-tediously-explained.html, permissions.html,
 	  postgres.html, profile-code.html,
 	  programming-with-aolserver.html, psgml-for-emacs.html,
-	  psgml-mode.html, release-notes-4-5.html,
-	  release-notes-4-6-2.html, release-notes-4-6-3.html,
-	  release-notes-4-6.html, release-notes.html,
-	  releasing-openacs-core.html, releasing-openacs.html,
-	  releasing-package.html, remote-postgres.html,
-	  request-processor.html, requirements-template.html,
-	  rp-design.html, rp-requirements.html, security-design.html,
-	  security-notes.html, security-requirements.html,
-	  snapshot-backup.html, style-guide.html, subsites-design.html,
+	  psgml-mode.html, release-notes.html, releasing-openacs-core.html,
+	  releasing-openacs.html, releasing-package.html,
+	  remote-postgres.html, request-processor.html,
+	  requirements-template.html, rp-design.html, rp-requirements.html,
+	  security-design.html, security-notes.html,
+	  security-requirements.html, snapshot-backup.html,
+	  style-guide.html, subsites-design.html,
 	  subsites-requirements.html, subsites.html, tcl-doc.html,
 	  templates.html, tutorial-admin-pages.html,
 	  tutorial-advanced.html, tutorial-caching.html,
 	  tutorial-categories.html, tutorial-comments.html,
 	  tutorial-css-layout.html, tutorial-cvs.html,
 	  tutorial-database.html, tutorial-debug.html,
-	  tutorial-distribute.html, tutorial-future-topics.html,
-	  tutorial-hierarchical.html, tutorial-html-email.html,
-	  tutorial-newpackage.html, tutorial-notifications.html,
-	  tutorial-pages.html, tutorial-schedule-procs.html,
-	  tutorial-specs.html, tutorial-vuh.html, tutorial.html,
+	  tutorial-distribute.html, tutorial-etp-templates.html,
+	  tutorial-future-topics.html, tutorial-hierarchical.html,
+	  tutorial-html-email.html, tutorial-newpackage.html,
+	  tutorial-notifications.html, tutorial-pages.html,
+	  tutorial-parameters.html, tutorial-schedule-procs.html,
+	  tutorial-second-database.html, tutorial-specs.html,
+	  tutorial-upgrade-scripts.html, tutorial-upgrades.html,
+	  tutorial-vuh.html, tutorial-wysiwyg-editor.html, tutorial.html,
 	  unix-installation.html, update-repository.html,
 	  update-translations.html, upgrade-4.5-to-4.6.html,
 	  upgrade-4.6.3-to-5.html, upgrade-5-0-dot.html,
 	  upgrade-openacs-files.html, upgrade-overview.html,
 	  upgrade-supporting.html, upgrade.html, uptime.html,
-	  variables.html, win2k-installation.html, xml/index.xml,
-	  xml/variables.ent, xml/engineering-standards/cvs.xml,
-	  xml/install-guide/other-software.xml: added section on using cvs
+	  variables.html, win2k-installation.html, xml/Makefile,
+	  xml/index.xml, xml/openacs.xsl, xml/releasing-openacs.xml,
+	  xml/variables.ent, xml/developers-guide/cvs.xml,
+	  xml/developers-guide/db-api.xml,
+	  xml/developers-guide/form-builder.xml,
+	  xml/developers-guide/i18n.xml,
+	  xml/developers-guide/object-identity.xml,
+	  xml/developers-guide/objects.xml,
+	  xml/developers-guide/packages.xml,
+	  xml/developers-guide/parties.xml,
+	  xml/developers-guide/permissions-tediously-explained-es.xml,
+	  xml/developers-guide/permissions-tediously-explained.xml,
+	  xml/developers-guide/permissions.xml,
+	  xml/developers-guide/programming-with-aolserver.xml,
+	  xml/developers-guide/rp.xml,
+	  xml/developers-guide/submissions.xml,
+	  xml/developers-guide/subsites.xml,
+	  xml/developers-guide/templates.xml,
+	  xml/developers-guide/tutorial-advanced.xml,
+	  xml/developers-guide/tutorial-db.xml,
+	  xml/developers-guide/tutorial-debug.xml,
+	  xml/developers-guide/tutorial-pages.xml,
+	  xml/developers-guide/tutorial.xml,
+	  xml/engineering-standards/auto-testing.xml,
+	  xml/engineering-standards/constraint-naming.xml,
+	  xml/engineering-standards/cvs.xml,
+	  xml/engineering-standards/design-template.xml,
+	  xml/engineering-standards/docbook-primer.xml,
+	  xml/engineering-standards/eng-standards-versioning.xml,
+	  xml/engineering-standards/filenaming.xml,
+	  xml/engineering-standards/nxml-mode.xml,
+	  xml/engineering-standards/plsql.xml,
+	  xml/engineering-standards/psgml-mode.xml,
+	  xml/engineering-standards/requirements-template.xml,
+	  xml/engineering-standards/style-guide.xml,
+	  xml/engineering-standards/variables.xml,
+	  xml/for-everyone/acs-faq.xml, xml/for-everyone/release-notes.xml,
+	  xml/install-guide/aolserver.xml,
+	  xml/install-guide/aolserver4.xml,
+	  xml/install-guide/compatibility.xml,
+	  xml/install-guide/configuring.xml, xml/install-guide/credits.xml,
+	  xml/install-guide/database-maintenance.xml,
+	  xml/install-guide/macinstall.xml,
+	  xml/install-guide/maintenance.xml, xml/install-guide/openacs.xml,
+	  xml/install-guide/oracle.xml, xml/install-guide/os.xml,
+	  xml/install-guide/other-software.xml,
+	  xml/install-guide/overview.xml, xml/install-guide/postgres.xml,
+	  xml/install-guide/quick.xml, xml/install-guide/recovery.xml,
+	  xml/install-guide/red-hat.xml, xml/install-guide/software.xml,
+	  xml/install-guide/upgrade.xml,
+	  xml/install-guide/win2kinstall.xml, xml/kernel/apm-design.xml,
+	  xml/kernel/apm-requirements.xml, xml/kernel/bootstrap-acs.xml,
+	  xml/kernel/db-api.xml, xml/kernel/ext-auth-design.xml,
+	  xml/kernel/ext-auth.xml, xml/kernel/groups-design.xml,
+	  xml/kernel/groups-requirements.xml,
+	  xml/kernel/i18n-requirements.xml,
+	  xml/kernel/object-system-design.xml,
+	  xml/kernel/object-system-req.xml,
+	  xml/kernel/permissions-design.xml,
+	  xml/kernel/permissions-requirements.xml,
+	  xml/kernel/rp-design.xml, xml/kernel/rp-requirements.xml,
+	  xml/kernel/security-design.xml, xml/kernel/security-notes.xml,
+	  xml/kernel/security-requirements.xml,
+	  xml/kernel/subsites-design.xml,
+	  xml/kernel/subsites-requirements.xml, xml/kernel/tcl-doc.xml:
+	  migrating doc version to 4.4 which processes codes more cleanly,
+	  fixing code that results in obvious compile errors, moved cvstag
+	  lines to within authorblurb tags for context and also puts the
+	  tag at the first/top of a chunked file set instead of at the
+	  bottom page of the last one.., updated docbook-primer.xml grammar
+	  and tag usage
 
-2004-10-30 13:07  jader
+2006-07-14 16:41  cesarh
 
-	* etc/config.tcl: The ssl contexts were missing from the config.tcl
-	  file, which will prevent anyone from using ssl on their sites.
+	* packages/acs-tcl/tcl/test/test-permissions-procs.tcl: Test Cases
+	  for Permission Procedures.
 
-2004-10-29 14:49  jader
+2006-07-14 11:22  victorg
 
-	* packages/acs-core-docs/www/files/nsd-postgres.txt: Added a
-	  comment in the file that the LD_LIBRARY_PATH may need
-	  /usr/local/aolserver/lib. Comment only, so no functionality
-	  changed.
+	* packages/acs-tcl/tcl/: defs-procs.tcl,
+	  deprecated-utilities-procs.tcl, security-procs.tcl,
+	  utilities-procs.tcl: Adding see clause for deprecated procs.
+	  Removing deprecated flag for util_ReturnMetaRefresh and adding
+	  documentation for that proc.	0 fails now for Test case
+	  documentation__check_deprecated_see (acs-tcl)
 
-2004-10-28 17:57  rocaelh
+2006-07-14 11:03  donb
 
-	* packages/acs-subsite/www/admin/site-map/index.tcl: fix of the
-	  direct mounting package, clean up of the new site-map
-	  w/list-builder must be done
+	* packages/acs-tcl/tcl/defs-procs.tcl: Removed
+	  ad_graphics_site_avail_p
 
-2004-10-28 11:40  josee
+2006-07-13 17:50  ncarroll
 
-	* packages/acs-subsite/www/admin/site-map/index.tcl: fixing bug
-	  #2139 (link causing problems)
+	* packages/acs-tcl/tcl/test/acs-tcl-test-procs.tcl: Added
+	  documentation to proc.
 
-2004-10-28 10:35  enriquec
+2006-07-13 17:43  ncarroll
 
-	* packages/acs-authentication/tcl/authentication-procs.tcl: fixing
-	  typo (ref.bug#2088): datta_error -&gt; data_error
+	* packages/acs-service-contract/tcl/implementation-procs.tcl: Added
+	  documentation to acs-sc procs.
 
-2004-10-28 08:39  nimam
+2006-07-13 17:34  ncarroll
 
-	* packages/acs-subsite/: www/permissions/grant.tcl,
-	  www/permissions/perm-include.adp,
-	  www/permissions/perm-include.tcl,
-	  catalog/acs-subsite.de_DE.ISO-8859-1.xml,
-	  catalog/acs-subsite.en_US.ISO-8859-1.xml: Added the grant
-	  permission action to acs-subsite/www/permissions/perm-include.
-	  The existing action returns a list of all users in OpenACS which
-	  can take ages to render. With grant permissions the admin can set
-	  permissions for a single user that he can search for. To use
-	  acs-subsite/www/permissions/grant from any other page I added the
-	  optional return_url parameter that redirects back to that page
-	  where grant was called
+	* packages/acs-automated-testing/tcl/aa-test-procs.tcl: Added
+	  documentation to aa procs.
 
-2004-10-22 06:44  nimam
+2006-07-13 17:25  ncarroll
 
-	* packages/acs-admin/www/auth/: authority-oracle.xql,
-	  authority-postgresql.xql: Batch jobs are now ordered by start
-	  time
+	* packages/: acs-templating/tcl/widget-procs.tcl,
+	  acs-automated-testing/tcl/tclwebtest-procs.tcl: Added
+	  documentation to procs.
 
-</pre></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="changelog"></a>Changelog for oacs-5-2</h3></div></div></div><pre class="programlisting">
-2006-05-01 15:18  victorg
+2006-07-13 16:59  ncarroll
 
-	* packages/search/: search.info,
-	  catalog/search.de_DE.ISO-8859-1.xml,
-	  catalog/search.en_US.ISO-8859-1.xml,
-	  catalog/search.es_ES.ISO-8859-1.xml,
-	  catalog/search.nl_NL.ISO-8859-1.xml: Updating translations from
-	  translate.openacs.org taking up version to 5.2.3b2
+	* packages/acs-automated-testing/tcl/tclwebtest-procs.tcl: Added
+	  documentation for twt procs: login, logout and log.
 
-2006-05-01 15:14  victorg
+2006-07-13 16:19  cesarh
 
-	* packages/: acs-tcl/catalog/acs-tcl.ar_EG.utf-8.xml,
-	  acs-tcl/catalog/acs-tcl.ar_LB.utf-8.xml,
-	  acs-tcl/catalog/acs-tcl.ast_ES.ISO-8859-1.xml,
-	  acs-tcl/catalog/acs-tcl.ca_ES.ISO-8859-1.xml,
-	  acs-tcl/catalog/acs-tcl.da_DK.ISO-8859-1.xml,
-	  acs-tcl/catalog/acs-tcl.de_DE.ISO-8859-1.xml,
-	  acs-tcl/catalog/acs-tcl.en_AU.ISO-8859-1.xml,
-	  acs-tcl/catalog/acs-tcl.en_US.ISO-8859-1.xml,
-	  acs-tcl/catalog/acs-tcl.es_CO.ISO-8859-1.xml,
-	  acs-tcl/catalog/acs-tcl.es_ES.ISO-8859-1.xml,
-	  acs-tcl/catalog/acs-tcl.es_GT.ISO-8859-1.xml,
-	  acs-tcl/catalog/acs-tcl.eu_ES.ISO-8859-1.xml,
-	  acs-tcl/catalog/acs-tcl.fa_IR.utf-8.xml,
-	  acs-tcl/catalog/acs-tcl.fi_FI.utf-8.xml,
-	  acs-tcl/catalog/acs-tcl.fr_FR.ISO-8859-1.xml,
-	  acs-tcl/catalog/acs-tcl.gl_ES.ISO-8859-1.xml,
-	  acs-tcl/catalog/acs-tcl.hi_IN.utf-8.xml,
-	  acs-tcl/catalog/acs-tcl.hu_HU.utf-8.xml,
-	  acs-tcl/catalog/acs-tcl.ind_ID.utf-8.xml,
-	  acs-tcl/catalog/acs-tcl.it_IT.ISO-8859-1.xml,
-	  acs-tcl/catalog/acs-tcl.ja_JP.utf-8.xml,
-	  acs-tcl/catalog/acs-tcl.ko_KR.utf-8.xml,
-	  acs-tcl/catalog/acs-tcl.ms_MY.utf-8.xml,
-	  acs-tcl/catalog/acs-tcl.nl_NL.ISO-8859-1.xml,
-	  acs-tcl/catalog/acs-tcl.nn_NO.ISO-8859-1.xml,
-	  acs-tcl/catalog/acs-tcl.no_NO.ISO-8859-1.xml,
-	  acs-tcl/catalog/acs-tcl.pl_PL.utf-8.xml,
-	  acs-tcl/catalog/acs-tcl.pt_BR.ISO-8859-1.xml,
-	  acs-tcl/catalog/acs-tcl.pt_PT.ISO-8859-1.xml,
-	  acs-tcl/catalog/acs-tcl.ro_RO.utf-8.xml,
-	  acs-tcl/catalog/acs-tcl.ru_RU.utf-8.xml,
-	  acs-tcl/catalog/acs-tcl.sh_HR.utf-8.xml,
-	  acs-tcl/catalog/acs-tcl.sv_SE.ISO-8859-1.xml,
-	  acs-tcl/catalog/acs-tcl.tr_TR.utf-8.xml,
-	  acs-tcl/catalog/acs-tcl.zh_CN.utf-8.xml,
-	  acs-tcl/catalog/acs-tcl.zh_TW.utf-8.xml,
-	  acs-templating/acs-templating.info,
-	  acs-templating/catalog/acs-templating.ar_LB.utf-8.xml,
-	  acs-templating/catalog/acs-templating.ca_ES.ISO-8859-1.xml,
-	  acs-templating/catalog/acs-templating.da_DK.ISO-8859-1.xml,
-	  acs-templating/catalog/acs-templating.de_DE.ISO-8859-1.xml,
-	  acs-templating/catalog/acs-templating.en_AU.ISO-8859-1.xml,
-	  acs-templating/catalog/acs-templating.en_US.ISO-8859-1.xml,
-	  acs-templating/catalog/acs-templating.es_CO.ISO-8859-1.xml,
-	  acs-templating/catalog/acs-templating.es_ES.ISO-8859-1.xml,
-	  acs-templating/catalog/acs-templating.es_GT.ISO-8859-1.xml,
-	  acs-templating/catalog/acs-templating.eu_ES.ISO-8859-1.xml,
-	  acs-templating/catalog/acs-templating.fi_FI.utf-8.xml,
-	  acs-templating/catalog/acs-templating.fr_FR.ISO-8859-1.xml,
-	  acs-templating/catalog/acs-templating.hi_IN.utf-8.xml,
-	  acs-templating/catalog/acs-templating.hu_HU.utf-8.xml,
-	  acs-templating/catalog/acs-templating.it_IT.ISO-8859-1.xml,
-	  acs-templating/catalog/acs-templating.ko_KR.utf-8.xml,
-	  acs-templating/catalog/acs-templating.ms_MY.utf-8.xml,
-	  acs-templating/catalog/acs-templating.nl_NL.ISO-8859-1.xml,
-	  acs-templating/catalog/acs-templating.nn_NO.ISO-8859-1.xml,
-	  acs-templating/catalog/acs-templating.no_NO.ISO-8859-1.xml,
-	  acs-templating/catalog/acs-templating.pa_IN.utf-8.xml,
-	  acs-templating/catalog/acs-templating.pt_BR.ISO-8859-1.xml,
-	  acs-templating/catalog/acs-templating.pt_PT.ISO-8859-1.xml,
-	  acs-templating/catalog/acs-templating.ro_RO.utf-8.xml,
-	  acs-templating/catalog/acs-templating.ru_RU.utf-8.xml,
-	  acs-templating/catalog/acs-templating.sh_HR.utf-8.xml,
-	  acs-templating/catalog/acs-templating.sv_SE.ISO-8859-1.xml,
-	  acs-templating/catalog/acs-templating.tr_TR.utf-8.xml,
-	  acs-templating/catalog/acs-templating.zh_CN.utf-8.xml,
-	  acs-templating/catalog/acs-templating.zh_TW.utf-8.xml: Updating
-	  translations from translate.openacs.org taking up version to
-	  5.2.3b2
+	* packages/acs-tcl/tcl/test/ad-proc-test-procs.tcl: Removing these
+	  callbacks and their implementations: a_callback, b_callback,
+	  c_callback, a_callback -impl an_impl1, a_callback -impl an_impl2,
+	  a_callback -impl fail_impl and EvilCallback from the test
+	  procedure ad_proc_fire_callback, since we have a strange behavior
+	  when run many times this test.
 
-2006-05-01 15:10  victorg
+2006-07-13 16:01  donb
 
-	* packages/: acs-lang/acs-lang.info,
+	* packages/acs-lang/tcl/lang-util-procs.tcl: Made the check for a
+	  message key in hashes (i.e. #package_key.message_key#) more
+	  robust by only recognizing it if both parts, separated by a &quot;.&quot;,
+	  exists.
+
+	  This reduces the odds of random text between hashes being
+	  mistaken for a key and throwing a &quot;missing key&quot; error.
+
+2006-07-13 13:43  victorg
+
+	* packages/:
+	  acs-content-repository/sql/postgresql/upgrade/upgrade-5.2.0d18-5.2.0d19.sql,
+	  acs-kernel/sql/oracle/upgrade/upgrade-5.2.0d11-5.2.0d12.sql,
+	  acs-kernel/sql/postgresql/upgrade/upgrade-5.2.0d11-5.2.0d12.sql:
+	  Removing upgrade scripts not well ordered for acs-kernel and
+	  acs-content-repository.  Adding corresponding upgrade scripts
+	  with correct versions.  Now the test case
+	  files__check_upgrade_ordering (acs-tcl) does not fail.
+
+2006-07-13 11:34  rocaelh
+
+	* packages/acs-tcl/tcl/test/acs-tcl-test-procs.tcl: adding teardown
+	  and documentation to parameter__check_procs
+
+2006-07-13 11:03  donb
+
+	* packages/acs-bootstrap-installer/tcl/00-proc-procs.tcl: OK did it
+	  right this time.  Damnation!
+
+2006-07-13 10:42  donb
+
+	* packages/acs-bootstrap-installer/tcl/00-proc-procs.tcl: Make
+	  ad_proc default to the function being public.  This decision was
+	  made by Don and Dave and a couple of others during the current
+	  bugbash.
+
+	  Why not TIP it?  There's no semantic meaning to the switch, and
+	  ad_proc doesn't require you to declare a procedure to be either
+	  -public or -private.	This was enforced in an automated test, but
+	  if we WERE to insist on it, ad_proc should cause failure to
+	  declare a proc public or private and error.  That would be too
+	  harsh (would break a lot of client code, too).  Assuming
+	  functions are public by default seems reasonable.  The only
+	  effect is to change the behavior of the API browser if you've
+	  chosen private or public viewing modes.
+
+2006-07-13 10:22  rocaelh
+
+	* packages/acs-tcl/tcl/test/acs-tcl-test-procs.tcl: adding
+	  parameter__check_procs smoke test case
+
+2006-07-13 08:09  rocaelh
+
+	* packages/acs-tcl/tcl/test/doc-check-procs.tcl: eliminating
+	  documentation__check_proc_interface_status, -public is not
+	  required
+
+2006-07-13 01:12  torbenb
+
+	* packages/acs-core-docs/www/xml/install-guide/overview.xml: fixing
+	  ulink, uses url= instead of href=
+
+2006-07-12 21:06  rocaelh
+
+	* www/site-master.tcl: adding on_load check
+
+2006-07-12 19:28  rocaelh
+
+	* www/blank-master.tcl, www/site-master.adp, www/site-master.tcl,
+	  packages/acs-subsite/tcl/callback-procs.tcl: adding callbacks
+	  get_extra_headers &amp; header_onload
+
+2006-07-06 13:09  gustafn
+
+	* packages/acs-templating/: tcl/richtext-procs.tcl,
+	  www/resources/mktree.js: make openacs usable with opera. 2 fixes:
+	  avoid multiple &quot;+&quot; signs in mktree, turn off rich text editing
+	  with opera (like safari)
+
+2006-07-06 04:37  gustafn
+
+	* packages/acs-tcl/tcl/utilities-procs.tcl: make openacs work with
+	  aolserver 4.5. address changed behavior of ns_startcontent, works
+	  now with binary datatypes as well
+
+2006-07-06 04:29  gustafn
+
+	* packages/acs-admin/tcl/apm-admin-procs.tcl: fix for templating
+	  bug (localization) for streaming output. #acs-kernel.Main_Site#
+	  was not translated in /acs-admin/apm/packages-install; not sure,
+	  whether a generic solution is needed... see:
+	  http://openacs.org/forums/message-view?message_id=387524
+
+2006-07-05 23:14  torbenb
+
+	* packages/acs-content-repository/www/doc/guide/keywords.html:
+	  updating links
+
+2006-07-05 07:11  maltes
+
+	* packages/acs-mail-lite/acs-mail-lite.info: Added fixed font
+
+2006-07-03 05:29  maltes
+
+	* packages/acs-lang/www/admin/: message-list.adp, message-list.tcl:
+	  Added fast locale switch taken from categories
+
+2006-07-01 03:57  gustafn
+
+	* packages/acs-tcl/tcl/utilities-procs.tcl: Fix to make oacs work
+	  with aolserver 4.5: pass default output encoding via content_type
+	  to ns_startcontent in case it is not specified
+
+2006-06-29 00:51  maltes
+
+	* packages/acs-mail-lite/lib/email.tcl: Forgot to use party_id
+	  instead of to
+
+2006-06-24 00:04  torbenb
+
+	* packages/acs-lang/: acs-lang.info, sql/oracle/ad-locales.sql,
+	  sql/oracle/upgrade/upgrade-5.3.0d1-5.3.0d2.sql,
+	  sql/postgresql/ad-locales.sql,
+	  sql/postgresql/upgrade/upgrade-5.3.0d1-5.3.0d2.sql: adding
+	  locales, currently used in the development of accounting packages
+	  (from sql-ledger locales)
+
+2006-06-20 23:34  gustafn
+
+	* packages/acs-lang/tcl/localization-procs.tcl: fixing bug #2905
+
+2006-06-20 15:45  gustafn
+
+	* packages/acs-templating/tcl/richtext-procs.tcl: disable rich text
+	  editing for safari in cvs head as well (fix for bug #2928)
+
+2006-06-18 23:34  maltes
+
+	* packages/acs-mail-lite/: acs-mail-lite.info,
+	  tcl/acs-mail-lite-procs.tcl: Added support for extraheaders.
+	  Cleaned up a bit
+
+2006-06-16 06:53  roelc
+
+	* packages/acs-subsite/lib/login.tcl: Set the email/username and
+	  password fields via css, some versions of IE mismatch their
+	  lengths even if set via the size attrib
+
+2006-06-08 17:14  victorg
+
+	* packages/acs-templating/tcl/test/parse-test-procs.tcl: Removing
+	  &quot;&gt;&gt;&gt;&gt;&gt;&gt;&quot; ( signs from the merge between oacs-5-2 and HEAD maybe
+	  ).
+
+2006-06-08 16:38  rocaelh
+
+	* packages/acs-kernel/sql/postgresql/utilities-create.sql: fix on
+	  this no-used function that was preventing acs-kernel to install
+	  in PG8.1.4
+
+2006-06-08 00:12  maltes
+
+	* packages/acs-mail-lite/tcl/: acs-mail-lite-init.tcl,
+	  acs-mail-lite-procs.tcl: Cleaning up ' acs-mail-lite is littered
+	  with partially
+	  &gt; completed and essentially non-functional code (hard-wired
+	  references to
+	  &gt; malte's home directory on one of his servers, for instance)'
+	  that Don has complaining about and he says it needs fixing.
+
+2006-06-07 15:13  rocaelh
+
+	* packages/acs-core-docs/www/aolserver4.html: chaning to
+	  @aolserver.cvs.source...
+
+2006-06-06 15:22  donb
+
+	* packages/acs-tcl/tcl/utilities-procs.tcl: 5.3 requires tcllib, so
+	  I removed base64 from this file.
+
+2006-06-04 17:02  donb
+
+	* packages/: acs-admin/acs-admin.info,
+	  acs-api-browser/acs-api-browser.info,
+	  acs-authentication/acs-authentication.info,
+	  acs-authentication/catalog/acs-authentication.ar_LB.utf-8.xml,
+	  acs-authentication/catalog/acs-authentication.ca_ES.ISO-8859-1.xml,
+	  acs-authentication/catalog/acs-authentication.da_DK.ISO-8859-1.xml,
+	  acs-authentication/catalog/acs-authentication.el_GR.utf-8.xml,
+	  acs-authentication/catalog/acs-authentication.en_US.ISO-8859-1.xml,
+	  acs-authentication/catalog/acs-authentication.es_CO.ISO-8859-1.xml,
+	  acs-authentication/catalog/acs-authentication.es_ES.ISO-8859-1.xml,
+	  acs-authentication/catalog/acs-authentication.es_GT.ISO-8859-1.xml,
+	  acs-authentication/catalog/acs-authentication.eu_ES.ISO-8859-1.xml,
+	  acs-authentication/catalog/acs-authentication.fa_IR.utf-8.xml,
+	  acs-authentication/catalog/acs-authentication.fr_FR.ISO-8859-1.xml,
+	  acs-authentication/catalog/acs-authentication.hi_IN.utf-8.xml,
+	  acs-authentication/catalog/acs-authentication.hu_HU.utf-8.xml,
+	  acs-authentication/catalog/acs-authentication.ind_ID.utf-8.xml,
+	  acs-authentication/catalog/acs-authentication.it_IT.ISO-8859-1.xml,
+	  acs-authentication/catalog/acs-authentication.ms_MY.utf-8.xml,
+	  acs-authentication/catalog/acs-authentication.nl_NL.ISO-8859-1.xml,
+	  acs-authentication/catalog/acs-authentication.nn_NO.ISO-8859-1.xml,
+	  acs-authentication/catalog/acs-authentication.no_NO.ISO-8859-1.xml,
+	  acs-authentication/catalog/acs-authentication.pa_IN.utf-8.xml,
+	  acs-authentication/catalog/acs-authentication.pl_PL.utf-8.xml,
+	  acs-authentication/catalog/acs-authentication.pt_BR.ISO-8859-1.xml,
+	  acs-authentication/catalog/acs-authentication.ro_RO.utf-8.xml,
+	  acs-authentication/catalog/acs-authentication.ru_RU.utf-8.xml,
+	  acs-authentication/catalog/acs-authentication.th_TH.utf-8.xml,
+	  acs-authentication/catalog/acs-authentication.tr_TR.utf-8.xml,
+	  acs-authentication/catalog/acs-authentication.zh_CN.utf-8.xml,
+	  acs-authentication/catalog/acs-authentication.zh_TW.utf-8.xml,
+	  acs-automated-testing/acs-automated-testing.info,
+	  acs-bootstrap-installer/acs-bootstrap-installer.info,
+	  acs-bootstrap-installer/installer.tcl,
+	  acs-content-repository/acs-content-repository.info,
+	  acs-content-repository/tcl/content-revision-procs.tcl,
+	  acs-core-docs/acs-core-docs.info, acs-kernel/acs-kernel.info,
+	  acs-kernel/catalog/acs-kernel.ar_EG.utf-8.xml,
+	  acs-kernel/catalog/acs-kernel.ar_LB.utf-8.xml,
+	  acs-kernel/catalog/acs-kernel.ast_ES.ISO-8859-1.xml,
+	  acs-kernel/catalog/acs-kernel.ca_ES.ISO-8859-1.xml,
+	  acs-kernel/catalog/acs-kernel.da_DK.ISO-8859-1.xml,
+	  acs-kernel/catalog/acs-kernel.en_US.ISO-8859-1.xml,
+	  acs-kernel/catalog/acs-kernel.es_CO.ISO-8859-1.xml,
+	  acs-kernel/catalog/acs-kernel.es_ES.ISO-8859-1.xml,
+	  acs-kernel/catalog/acs-kernel.es_GT.ISO-8859-1.xml,
+	  acs-kernel/catalog/acs-kernel.eu_ES.ISO-8859-1.xml,
+	  acs-kernel/catalog/acs-kernel.fi_FI.utf-8.xml,
+	  acs-kernel/catalog/acs-kernel.fr_FR.ISO-8859-1.xml,
+	  acs-kernel/catalog/acs-kernel.gl_ES.ISO-8859-1.xml,
+	  acs-kernel/catalog/acs-kernel.hi_IN.utf-8.xml,
+	  acs-kernel/catalog/acs-kernel.hu_HU.utf-8.xml,
+	  acs-kernel/catalog/acs-kernel.it_IT.ISO-8859-1.xml,
+	  acs-kernel/catalog/acs-kernel.ja_JP.utf-8.xml,
+	  acs-kernel/catalog/acs-kernel.ko_KR.utf-8.xml,
+	  acs-kernel/catalog/acs-kernel.ms_MY.utf-8.xml,
+	  acs-kernel/catalog/acs-kernel.nl_NL.ISO-8859-1.xml,
+	  acs-kernel/catalog/acs-kernel.nn_NO.ISO-8859-1.xml,
+	  acs-kernel/catalog/acs-kernel.no_NO.ISO-8859-1.xml,
+	  acs-kernel/catalog/acs-kernel.pa_IN.utf-8.xml,
+	  acs-kernel/catalog/acs-kernel.pl_PL.utf-8.xml,
+	  acs-kernel/catalog/acs-kernel.pt_BR.ISO-8859-1.xml,
+	  acs-kernel/catalog/acs-kernel.pt_PT.ISO-8859-1.xml,
+	  acs-kernel/catalog/acs-kernel.ro_RO.utf-8.xml,
+	  acs-kernel/catalog/acs-kernel.ru_RU.utf-8.xml,
+	  acs-kernel/catalog/acs-kernel.sv_SE.ISO-8859-1.xml,
+	  acs-kernel/catalog/acs-kernel.tr_TR.utf-8.xml,
+	  acs-kernel/catalog/acs-kernel.zh_CN.utf-8.xml,
+	  acs-kernel/catalog/acs-kernel.zh_TW.utf-8.xml,
+	  acs-lang/acs-lang.info,
 	  acs-lang/catalog/acs-lang.ar_EG.utf-8.xml,
 	  acs-lang/catalog/acs-lang.ar_LB.utf-8.xml,
 	  acs-lang/catalog/acs-lang.ast_ES.ISO-8859-1.xml,
 	  acs-lang/catalog/acs-lang.ca_ES.ISO-8859-1.xml,
 	  acs-lang/catalog/acs-lang.da_DK.ISO-8859-1.xml,
-	  acs-lang/catalog/acs-lang.de_DE.ISO-8859-1.xml,
 	  acs-lang/catalog/acs-lang.el_GR.utf-8.xml,
-	  acs-lang/catalog/acs-lang.en_AU.ISO-8859-1.xml,
 	  acs-lang/catalog/acs-lang.en_GB.ISO-8859-1.xml,
 	  acs-lang/catalog/acs-lang.en_US.ISO-8859-1.xml,
 	  acs-lang/catalog/acs-lang.es_CO.ISO-8859-1.xml,
@@ -681,15 +7214,16 @@
 	  acs-lang/catalog/acs-lang.tr_TR.utf-8.xml,
 	  acs-lang/catalog/acs-lang.zh_CN.utf-8.xml,
 	  acs-lang/catalog/acs-lang.zh_TW.utf-8.xml,
+	  acs-messaging/acs-messaging.info,
+	  acs-reference/acs-reference.info,
+	  acs-service-contract/acs-service-contract.info,
 	  acs-subsite/acs-subsite.info,
 	  acs-subsite/catalog/acs-subsite.ar_EG.utf-8.xml,
 	  acs-subsite/catalog/acs-subsite.ar_LB.utf-8.xml,
 	  acs-subsite/catalog/acs-subsite.ast_ES.ISO-8859-1.xml,
 	  acs-subsite/catalog/acs-subsite.ca_ES.ISO-8859-1.xml,
 	  acs-subsite/catalog/acs-subsite.da_DK.ISO-8859-1.xml,
-	  acs-subsite/catalog/acs-subsite.de_DE.ISO-8859-1.xml,
 	  acs-subsite/catalog/acs-subsite.el_GR.utf-8.xml,
-	  acs-subsite/catalog/acs-subsite.en_AU.ISO-8859-1.xml,
 	  acs-subsite/catalog/acs-subsite.en_US.ISO-8859-1.xml,
 	  acs-subsite/catalog/acs-subsite.es_CO.ISO-8859-1.xml,
 	  acs-subsite/catalog/acs-subsite.es_ES.ISO-8859-1.xml,
@@ -718,144 +7252,4806 @@
 	  acs-subsite/catalog/acs-subsite.th_TH.utf-8.xml,
 	  acs-subsite/catalog/acs-subsite.tr_TR.utf-8.xml,
 	  acs-subsite/catalog/acs-subsite.zh_CN.utf-8.xml,
-	  acs-subsite/catalog/acs-subsite.zh_TW.utf-8.xml: Updating
-	  translations from translate.openacs.org taking up version to
-	  5.2.3b2
+	  acs-subsite/catalog/acs-subsite.zh_TW.utf-8.xml,
+	  acs-tcl/acs-tcl.info, acs-tcl/catalog/acs-tcl.ar_EG.utf-8.xml,
+	  acs-tcl/catalog/acs-tcl.ar_LB.utf-8.xml,
+	  acs-tcl/catalog/acs-tcl.ast_ES.ISO-8859-1.xml,
+	  acs-tcl/catalog/acs-tcl.ca_ES.ISO-8859-1.xml,
+	  acs-tcl/catalog/acs-tcl.da_DK.ISO-8859-1.xml,
+	  acs-tcl/catalog/acs-tcl.en_US.ISO-8859-1.xml,
+	  acs-tcl/catalog/acs-tcl.es_CO.ISO-8859-1.xml,
+	  acs-tcl/catalog/acs-tcl.es_ES.ISO-8859-1.xml,
+	  acs-tcl/catalog/acs-tcl.es_GT.ISO-8859-1.xml,
+	  acs-tcl/catalog/acs-tcl.eu_ES.ISO-8859-1.xml,
+	  acs-tcl/catalog/acs-tcl.fa_IR.utf-8.xml,
+	  acs-tcl/catalog/acs-tcl.fi_FI.utf-8.xml,
+	  acs-tcl/catalog/acs-tcl.fr_FR.ISO-8859-1.xml,
+	  acs-tcl/catalog/acs-tcl.gl_ES.ISO-8859-1.xml,
+	  acs-tcl/catalog/acs-tcl.hi_IN.utf-8.xml,
+	  acs-tcl/catalog/acs-tcl.hu_HU.utf-8.xml,
+	  acs-tcl/catalog/acs-tcl.ind_ID.utf-8.xml,
+	  acs-tcl/catalog/acs-tcl.it_IT.ISO-8859-1.xml,
+	  acs-tcl/catalog/acs-tcl.ja_JP.utf-8.xml,
+	  acs-tcl/catalog/acs-tcl.ko_KR.utf-8.xml,
+	  acs-tcl/catalog/acs-tcl.ms_MY.utf-8.xml,
+	  acs-tcl/catalog/acs-tcl.nl_NL.ISO-8859-1.xml,
+	  acs-tcl/catalog/acs-tcl.nn_NO.ISO-8859-1.xml,
+	  acs-tcl/catalog/acs-tcl.no_NO.ISO-8859-1.xml,
+	  acs-tcl/catalog/acs-tcl.pl_PL.utf-8.xml,
+	  acs-tcl/catalog/acs-tcl.pt_BR.ISO-8859-1.xml,
+	  acs-tcl/catalog/acs-tcl.pt_PT.ISO-8859-1.xml,
+	  acs-tcl/catalog/acs-tcl.ro_RO.utf-8.xml,
+	  acs-tcl/catalog/acs-tcl.ru_RU.utf-8.xml,
+	  acs-tcl/catalog/acs-tcl.sh_HR.utf-8.xml,
+	  acs-tcl/catalog/acs-tcl.sv_SE.ISO-8859-1.xml,
+	  acs-tcl/catalog/acs-tcl.tr_TR.utf-8.xml,
+	  acs-tcl/catalog/acs-tcl.zh_CN.utf-8.xml,
+	  acs-tcl/catalog/acs-tcl.zh_TW.utf-8.xml,
+	  acs-templating/acs-templating.info,
+	  acs-templating/catalog/acs-templating.ar_LB.utf-8.xml,
+	  acs-templating/catalog/acs-templating.ca_ES.ISO-8859-1.xml,
+	  acs-templating/catalog/acs-templating.da_DK.ISO-8859-1.xml,
+	  acs-templating/catalog/acs-templating.en_US.ISO-8859-1.xml,
+	  acs-templating/catalog/acs-templating.es_CO.ISO-8859-1.xml,
+	  acs-templating/catalog/acs-templating.es_ES.ISO-8859-1.xml,
+	  acs-templating/catalog/acs-templating.es_GT.ISO-8859-1.xml,
+	  acs-templating/catalog/acs-templating.eu_ES.ISO-8859-1.xml,
+	  acs-templating/catalog/acs-templating.fi_FI.utf-8.xml,
+	  acs-templating/catalog/acs-templating.fr_FR.ISO-8859-1.xml,
+	  acs-templating/catalog/acs-templating.hi_IN.utf-8.xml,
+	  acs-templating/catalog/acs-templating.hu_HU.utf-8.xml,
+	  acs-templating/catalog/acs-templating.it_IT.ISO-8859-1.xml,
+	  acs-templating/catalog/acs-templating.ko_KR.utf-8.xml,
+	  acs-templating/catalog/acs-templating.ms_MY.utf-8.xml,
+	  acs-templating/catalog/acs-templating.nl_NL.ISO-8859-1.xml,
+	  acs-templating/catalog/acs-templating.nn_NO.ISO-8859-1.xml,
+	  acs-templating/catalog/acs-templating.no_NO.ISO-8859-1.xml,
+	  acs-templating/catalog/acs-templating.pa_IN.utf-8.xml,
+	  acs-templating/catalog/acs-templating.pt_BR.ISO-8859-1.xml,
+	  acs-templating/catalog/acs-templating.pt_PT.ISO-8859-1.xml,
+	  acs-templating/catalog/acs-templating.ro_RO.utf-8.xml,
+	  acs-templating/catalog/acs-templating.ru_RU.utf-8.xml,
+	  acs-templating/catalog/acs-templating.sh_HR.utf-8.xml,
+	  acs-templating/catalog/acs-templating.sv_SE.ISO-8859-1.xml,
+	  acs-templating/catalog/acs-templating.tr_TR.utf-8.xml,
+	  acs-templating/catalog/acs-templating.zh_CN.utf-8.xml,
+	  acs-templating/catalog/acs-templating.zh_TW.utf-8.xml,
+	  acs-translations/acs-translations.info,
+	  ref-timezones/ref-timezones.info, search/search.info,
+	  search/catalog/search.en_US.ISO-8859-1.xml,
+	  search/catalog/search.es_ES.ISO-8859-1.xml,
+	  search/catalog/search.nl_NL.ISO-8859-1.xml,
+	  search/catalog/search.pl_PL.utf-8.xml: Bumped the acs-core world
+	  (including catalog files) to 5.3.0d1.
 
-2006-05-01 15:06  victorg
+2006-06-03 17:45  donb
 
-	* packages/: acs-authentication/acs-authentication.info,
-	  acs-authentication/catalog/acs-authentication.ar_LB.utf-8.xml,
-	  acs-authentication/catalog/acs-authentication.ca_ES.ISO-8859-1.xml,
-	  acs-authentication/catalog/acs-authentication.da_DK.ISO-8859-1.xml,
-	  acs-authentication/catalog/acs-authentication.de_DE.ISO-8859-1.xml,
-	  acs-authentication/catalog/acs-authentication.el_GR.utf-8.xml,
-	  acs-authentication/catalog/acs-authentication.en_AU.ISO-8859-1.xml,
-	  acs-authentication/catalog/acs-authentication.en_US.ISO-8859-1.xml,
-	  acs-authentication/catalog/acs-authentication.es_CO.ISO-8859-1.xml,
-	  acs-authentication/catalog/acs-authentication.es_ES.ISO-8859-1.xml,
-	  acs-authentication/catalog/acs-authentication.es_GT.ISO-8859-1.xml,
-	  acs-authentication/catalog/acs-authentication.eu_ES.ISO-8859-1.xml,
-	  acs-authentication/catalog/acs-authentication.fa_IR.utf-8.xml,
-	  acs-authentication/catalog/acs-authentication.fr_FR.ISO-8859-1.xml,
-	  acs-authentication/catalog/acs-authentication.hi_IN.utf-8.xml,
-	  acs-authentication/catalog/acs-authentication.hu_HU.utf-8.xml,
-	  acs-authentication/catalog/acs-authentication.ind_ID.utf-8.xml,
-	  acs-authentication/catalog/acs-authentication.it_IT.ISO-8859-1.xml,
-	  acs-authentication/catalog/acs-authentication.ms_MY.utf-8.xml,
-	  acs-authentication/catalog/acs-authentication.nl_NL.ISO-8859-1.xml,
-	  acs-authentication/catalog/acs-authentication.nn_NO.ISO-8859-1.xml,
-	  acs-authentication/catalog/acs-authentication.no_NO.ISO-8859-1.xml,
-	  acs-authentication/catalog/acs-authentication.pa_IN.utf-8.xml,
-	  acs-authentication/catalog/acs-authentication.pl_PL.utf-8.xml,
-	  acs-authentication/catalog/acs-authentication.pt_BR.ISO-8859-1.xml,
-	  acs-authentication/catalog/acs-authentication.ro_RO.utf-8.xml,
-	  acs-authentication/catalog/acs-authentication.ru_RU.utf-8.xml,
-	  acs-authentication/catalog/acs-authentication.tr_TR.utf-8.xml,
-	  acs-authentication/catalog/acs-authentication.zh_CN.utf-8.xml,
-	  acs-authentication/catalog/acs-authentication.zh_TW.utf-8.xml,
-	  acs-kernel/acs-kernel.info,
-	  acs-kernel/catalog/acs-kernel.ar_EG.utf-8.xml,
-	  acs-kernel/catalog/acs-kernel.ar_LB.utf-8.xml,
-	  acs-kernel/catalog/acs-kernel.ast_ES.ISO-8859-1.xml,
-	  acs-kernel/catalog/acs-kernel.ca_ES.ISO-8859-1.xml,
-	  acs-kernel/catalog/acs-kernel.da_DK.ISO-8859-1.xml,
-	  acs-kernel/catalog/acs-kernel.de_DE.ISO-8859-1.xml,
-	  acs-kernel/catalog/acs-kernel.en_AU.ISO-8859-1.xml,
-	  acs-kernel/catalog/acs-kernel.en_US.ISO-8859-1.xml,
-	  acs-kernel/catalog/acs-kernel.es_CO.ISO-8859-1.xml,
-	  acs-kernel/catalog/acs-kernel.es_ES.ISO-8859-1.xml,
-	  acs-kernel/catalog/acs-kernel.es_GT.ISO-8859-1.xml,
-	  acs-kernel/catalog/acs-kernel.eu_ES.ISO-8859-1.xml,
-	  acs-kernel/catalog/acs-kernel.fi_FI.utf-8.xml,
-	  acs-kernel/catalog/acs-kernel.fr_FR.ISO-8859-1.xml,
-	  acs-kernel/catalog/acs-kernel.gl_ES.ISO-8859-1.xml,
-	  acs-kernel/catalog/acs-kernel.hi_IN.utf-8.xml,
-	  acs-kernel/catalog/acs-kernel.hu_HU.utf-8.xml,
-	  acs-kernel/catalog/acs-kernel.it_IT.ISO-8859-1.xml,
-	  acs-kernel/catalog/acs-kernel.ja_JP.utf-8.xml,
-	  acs-kernel/catalog/acs-kernel.ko_KR.utf-8.xml,
-	  acs-kernel/catalog/acs-kernel.ms_MY.utf-8.xml,
-	  acs-kernel/catalog/acs-kernel.nl_NL.ISO-8859-1.xml,
-	  acs-kernel/catalog/acs-kernel.nn_NO.ISO-8859-1.xml,
-	  acs-kernel/catalog/acs-kernel.no_NO.ISO-8859-1.xml,
-	  acs-kernel/catalog/acs-kernel.pa_IN.utf-8.xml,
-	  acs-kernel/catalog/acs-kernel.pl_PL.utf-8.xml,
-	  acs-kernel/catalog/acs-kernel.pt_BR.ISO-8859-1.xml,
-	  acs-kernel/catalog/acs-kernel.pt_PT.ISO-8859-1.xml,
-	  acs-kernel/catalog/acs-kernel.ro_RO.utf-8.xml,
-	  acs-kernel/catalog/acs-kernel.ru_RU.utf-8.xml,
-	  acs-kernel/catalog/acs-kernel.sv_SE.ISO-8859-1.xml,
-	  acs-kernel/catalog/acs-kernel.tr_TR.utf-8.xml,
-	  acs-kernel/catalog/acs-kernel.zh_CN.utf-8.xml,
-	  acs-kernel/catalog/acs-kernel.zh_TW.utf-8.xml: Updating
-	  translations from translate.openacs.org taking up version to
-	  5.2.3b2
+	* ChangeLog, readme.txt, etc/backup.sh, etc/config.tcl,
+	  etc/keepalive/keepalive-config.tcl,
+	  etc/keepalive/keepalive-cron.sh, etc/keepalive/keepalive.sh,
+	  packages/acs-admin/acs-admin.info,
+	  packages/acs-admin/tcl/merge-procs.tcl,
+	  packages/acs-admin/tcl/merge-procs.xql,
+	  packages/acs-admin/www/apm/package-delete-2.tcl,
+	  packages/acs-admin/www/apm/packages-install-4.tcl,
+	  packages/acs-admin/www/install/install-4.tcl,
+	  packages/acs-admin/www/install/install.tcl,
+	  packages/acs-admin/www/resources/left.gif,
+	  packages/acs-admin/www/resources/not_available.gif,
+	  packages/acs-admin/www/resources/right.gif,
+	  packages/acs-admin/www/resources/um-more-info.css,
+	  packages/acs-admin/www/users/merge-confirm.adp,
+	  packages/acs-admin/www/users/merge-confirm.tcl,
+	  packages/acs-admin/www/users/merge-confirm.xql,
+	  packages/acs-admin/www/users/merge-final.adp,
+	  packages/acs-admin/www/users/merge-final.tcl,
+	  packages/acs-admin/www/users/merge-oracle.xql,
+	  packages/acs-admin/www/users/merge-postgresql.xql,
+	  packages/acs-admin/www/users/merge.adp,
+	  packages/acs-admin/www/users/merge.tcl,
+	  packages/acs-admin/www/users/merge.xql,
+	  packages/acs-admin/www/users/one.adp,
+	  packages/acs-admin/www/users/search.tcl,
+	  packages/acs-api-browser/acs-api-browser.info,
+	  packages/acs-api-browser/lib/search.tcl,
+	  packages/acs-authentication/acs-authentication.info,
+	  packages/acs-authentication/catalog/acs-authentication.ar_LB.utf-8.xml,
+	  packages/acs-authentication/catalog/acs-authentication.ca_ES.ISO-8859-1.xml,
+	  packages/acs-authentication/catalog/acs-authentication.da_DK.ISO-8859-1.xml,
+	  packages/acs-authentication/catalog/acs-authentication.de_DE.ISO-8859-1.xml,
+	  packages/acs-authentication/catalog/acs-authentication.el_GR.utf-8.xml,
+	  packages/acs-authentication/catalog/acs-authentication.en_AU.ISO-8859-1.xml,
+	  packages/acs-authentication/catalog/acs-authentication.en_US.ISO-8859-1.xml,
+	  packages/acs-authentication/catalog/acs-authentication.es_CO.ISO-8859-1.xml,
+	  packages/acs-authentication/catalog/acs-authentication.es_ES.ISO-8859-1.xml,
+	  packages/acs-authentication/catalog/acs-authentication.es_GT.ISO-8859-1.xml,
+	  packages/acs-authentication/catalog/acs-authentication.eu_ES.ISO-8859-1.xml,
+	  packages/acs-authentication/catalog/acs-authentication.fa_IR.utf-8.xml,
+	  packages/acs-authentication/catalog/acs-authentication.fr_FR.ISO-8859-1.xml,
+	  packages/acs-authentication/catalog/acs-authentication.hi_IN.utf-8.xml,
+	  packages/acs-authentication/catalog/acs-authentication.hu_HU.utf-8.xml,
+	  packages/acs-authentication/catalog/acs-authentication.ind_ID.utf-8.xml,
+	  packages/acs-authentication/catalog/acs-authentication.it_IT.ISO-8859-1.xml,
+	  packages/acs-authentication/catalog/acs-authentication.ms_MY.utf-8.xml,
+	  packages/acs-authentication/catalog/acs-authentication.nl_NL.ISO-8859-1.xml,
+	  packages/acs-authentication/catalog/acs-authentication.nn_NO.ISO-8859-1.xml,
+	  packages/acs-authentication/catalog/acs-authentication.no_NO.ISO-8859-1.xml,
+	  packages/acs-authentication/catalog/acs-authentication.pa_IN.utf-8.xml,
+	  packages/acs-authentication/catalog/acs-authentication.pl_PL.utf-8.xml,
+	  packages/acs-authentication/catalog/acs-authentication.pt_BR.ISO-8859-1.xml,
+	  packages/acs-authentication/catalog/acs-authentication.ro_RO.utf-8.xml,
+	  packages/acs-authentication/catalog/acs-authentication.ru_RU.utf-8.xml,
+	  packages/acs-authentication/catalog/acs-authentication.th_TH.utf-8.xml,
+	  packages/acs-authentication/catalog/acs-authentication.tr_TR.utf-8.xml,
+	  packages/acs-authentication/catalog/acs-authentication.zh_CN.utf-8.xml,
+	  packages/acs-authentication/catalog/acs-authentication.zh_TW.utf-8.xml,
+	  packages/acs-authentication/tcl/apm-callback-procs.tcl,
+	  packages/acs-authentication/tcl/authentication-procs.tcl,
+	  packages/acs-authentication/tcl/local-procs.tcl,
+	  packages/acs-authentication/tcl/local-procs.xql,
+	  packages/acs-authentication/www/doc/ext-auth-install.html,
+	  packages/acs-authentication/www/doc/ext-auth-ldap-install.html,
+	  packages/acs-authentication/www/doc/ext-auth-pam-install.html,
+	  packages/acs-authentication/www/doc/index.html,
+	  packages/acs-authentication/www/doc/xml/install.xml,
+	  packages/acs-automated-testing/acs-automated-testing.info,
+	  packages/acs-automated-testing/tcl/aa-test-procs-postgresql.xql,
+	  packages/acs-automated-testing/tcl/aa-test-procs.tcl,
+	  packages/acs-automated-testing/tcl/tclwebtest-procs.tcl,
+	  packages/acs-bootstrap-installer/acs-bootstrap-installer.info,
+	  packages/acs-bootstrap-installer/bootstrap.tcl,
+	  packages/acs-bootstrap-installer/db-init-checks-oracle.tcl,
+	  packages/acs-bootstrap-installer/installer/index.tcl,
+	  packages/acs-bootstrap-installer/tcl/00-proc-procs.tcl,
+	  packages/acs-content-repository/acs-content-repository.info,
+	  packages/acs-content-repository/sql/common/mime-type-data.sql,
+	  packages/acs-content-repository/sql/oracle/content-create.sql,
+	  packages/acs-content-repository/sql/oracle/content-folder.sql,
+	  packages/acs-content-repository/sql/oracle/content-image.sql,
+	  packages/acs-content-repository/sql/oracle/content-item.sql,
+	  packages/acs-content-repository/sql/oracle/content-keyword.sql,
+	  packages/acs-content-repository/sql/oracle/packages-create.sql,
+	  packages/acs-content-repository/sql/oracle/upgrade/upgrade-5.2.0a1-5.2.0a2.sql,
+	  packages/acs-content-repository/sql/oracle/upgrade/upgrade-5.2.0b5-5.2.0b6.sql,
+	  packages/acs-content-repository/sql/oracle/upgrade/upgrade-5.2.0b6-5.2.0b7.sql,
+	  packages/acs-content-repository/sql/oracle/upgrade/upgrade-5.2.0d16-5.2.0d17.sql,
+	  packages/acs-content-repository/sql/oracle/upgrade/upgrade-5.2.1d1-5.2.1d2.sql,
+	  packages/acs-content-repository/sql/oracle/upgrade/upgrade-5.2.2-5.2.3d1.sql,
+	  packages/acs-content-repository/sql/oracle/upgrade/upgrade-5.2.3d1-5.2.3d2.sql,
+	  packages/acs-content-repository/sql/postgresql/content-create.sql,
+	  packages/acs-content-repository/sql/postgresql/content-extlink.sql,
+	  packages/acs-content-repository/sql/postgresql/content-folder.sql,
+	  packages/acs-content-repository/sql/postgresql/content-item.sql,
+	  packages/acs-content-repository/sql/postgresql/content-revision.sql,
+	  packages/acs-content-repository/sql/postgresql/content-schedule.sql,
+	  packages/acs-content-repository/sql/postgresql/content-symlink.sql,
+	  packages/acs-content-repository/sql/postgresql/content-template.sql,
+	  packages/acs-content-repository/sql/postgresql/content-type.sql,
+	  packages/acs-content-repository/sql/postgresql/content-update.sql,
+	  packages/acs-content-repository/sql/postgresql/upgrade/upgrade-5.0.0-5.1.0d1.sql,
+	  packages/acs-content-repository/sql/postgresql/upgrade/upgrade-5.2.0a1-5.2.0a2.sql,
+	  packages/acs-content-repository/sql/postgresql/upgrade/upgrade-5.2.0a2-5.2.0a3.sql,
+	  packages/acs-content-repository/sql/postgresql/upgrade/upgrade-5.2.0a3-5.2.0a4.sql,
+	  packages/acs-content-repository/sql/postgresql/upgrade/upgrade-5.2.0b1-5.2.0b2.sql,
+	  packages/acs-content-repository/sql/postgresql/upgrade/upgrade-5.2.0b2-5.2.0b3.sql,
+	  packages/acs-content-repository/sql/postgresql/upgrade/upgrade-5.2.0b5-5.2.0b6.sql,
+	  packages/acs-content-repository/sql/postgresql/upgrade/upgrade-5.2.0b6-5.2.0b7.sql,
+	  packages/acs-content-repository/sql/postgresql/upgrade/upgrade-5.2.0b9-5.2.0b10.sql,
+	  packages/acs-content-repository/sql/postgresql/upgrade/upgrade-5.2.0d9-5.2.0d10.sql,
+	  packages/acs-content-repository/sql/postgresql/upgrade/upgrade-5.2.1d1-5.2.1d2.sql,
+	  packages/acs-content-repository/tcl/acs-content-repository-callback-procs.tcl,
+	  packages/acs-content-repository/tcl/acs-content-repository-init.tcl,
+	  packages/acs-content-repository/tcl/content-folder-procs.tcl,
+	  packages/acs-content-repository/tcl/content-item-procs.tcl,
+	  packages/acs-content-repository/tcl/content-item-procs.xql,
+	  packages/acs-content-repository/tcl/content-revision-procs-postgresql.xql,
+	  packages/acs-content-repository/tcl/content-revision-procs.tcl,
+	  packages/acs-content-repository/tcl/content-symlink-procs.tcl,
+	  packages/acs-content-repository/tcl/revision-procs.tcl,
+	  packages/acs-content-repository/tcl/revision-procs.xql,
+	  packages/acs-content-repository/tcl/test/content-folder-test-procs.tcl,
+	  packages/acs-content-repository/tcl/test/content-image-test-procs.tcl,
+	  packages/acs-content-repository/tcl/test/content-item-test-procs.tcl,
+	  packages/acs-core-docs/acs-core-docs.info,
+	  packages/acs-core-docs/www/acs-admin.html,
+	  packages/acs-core-docs/www/acs-package-dev.html,
+	  packages/acs-core-docs/www/acs-plat-dev.html,
+	  packages/acs-core-docs/www/analog-install.html,
+	  packages/acs-core-docs/www/analog-setup.html,
+	  packages/acs-core-docs/www/aolserver.html,
+	  packages/acs-core-docs/www/aolserver4.html,
+	  packages/acs-core-docs/www/apm-design.html,
+	  packages/acs-core-docs/www/apm-requirements.html,
+	  packages/acs-core-docs/www/automated-backup.html,
+	  packages/acs-core-docs/www/automated-testing-best-practices.html,
+	  packages/acs-core-docs/www/backup-recovery.html,
+	  packages/acs-core-docs/www/backups-with-cvs.html,
+	  packages/acs-core-docs/www/bootstrap-acs.html,
+	  packages/acs-core-docs/www/complete-install.html,
+	  packages/acs-core-docs/www/configuring-configuring-packages.html,
+	  packages/acs-core-docs/www/configuring-configuring-permissions.html,
+	  packages/acs-core-docs/www/configuring-install-packages.html,
+	  packages/acs-core-docs/www/configuring-mounting-packages.html,
+	  packages/acs-core-docs/www/configuring-new-site.html,
+	  packages/acs-core-docs/www/contributing-code.html,
+	  packages/acs-core-docs/www/credits.html,
+	  packages/acs-core-docs/www/cvs-guidelines.html,
+	  packages/acs-core-docs/www/cvs-resources.html,
+	  packages/acs-core-docs/www/cvs-tips.html,
+	  packages/acs-core-docs/www/database-management.html,
+	  packages/acs-core-docs/www/db-api-detailed.html,
+	  packages/acs-core-docs/www/db-api.html,
+	  packages/acs-core-docs/www/dev-guide.html,
+	  packages/acs-core-docs/www/doc-standards.html,
+	  packages/acs-core-docs/www/docbook-primer.html,
+	  packages/acs-core-docs/www/eng-standards-constraint-naming.html,
+	  packages/acs-core-docs/www/eng-standards-filenaming.html,
+	  packages/acs-core-docs/www/eng-standards-plsql.html,
+	  packages/acs-core-docs/www/eng-standards-versioning.html,
+	  packages/acs-core-docs/www/eng-standards.html,
+	  packages/acs-core-docs/www/ext-auth-requirements.html,
+	  packages/acs-core-docs/www/filename.html,
+	  packages/acs-core-docs/www/for-everyone.html,
+	  packages/acs-core-docs/www/form-builder.html,
+	  packages/acs-core-docs/www/general-documents.html,
+	  packages/acs-core-docs/www/groups-design.html,
+	  packages/acs-core-docs/www/groups-requirements.html,
+	  packages/acs-core-docs/www/high-avail.html,
+	  packages/acs-core-docs/www/how-do-I.html,
+	  packages/acs-core-docs/www/i18n-convert.html,
+	  packages/acs-core-docs/www/i18n-design.html,
+	  packages/acs-core-docs/www/i18n-introduction.html,
+	  packages/acs-core-docs/www/i18n-overview.html,
+	  packages/acs-core-docs/www/i18n-requirements.html,
+	  packages/acs-core-docs/www/i18n-translators.html,
+	  packages/acs-core-docs/www/i18n.html,
+	  packages/acs-core-docs/www/index.html,
+	  packages/acs-core-docs/www/individual-programs.html,
+	  packages/acs-core-docs/www/install-cvs.html,
+	  packages/acs-core-docs/www/install-daemontools.html,
+	  packages/acs-core-docs/www/install-full-text-search-openfts.html,
+	  packages/acs-core-docs/www/install-full-text-search-tsearch2.html,
+	  packages/acs-core-docs/www/install-ldap-radius.html,
+	  packages/acs-core-docs/www/install-more-software.html,
+	  packages/acs-core-docs/www/install-next-add-server.html,
+	  packages/acs-core-docs/www/install-next-backups.html,
+	  packages/acs-core-docs/www/install-next-nightly-vacuum.html,
+	  packages/acs-core-docs/www/install-nsopenssl.html,
+	  packages/acs-core-docs/www/install-nspam.html,
+	  packages/acs-core-docs/www/install-openacs-delete-tablespace.html,
+	  packages/acs-core-docs/www/install-openacs-inittab.html,
+	  packages/acs-core-docs/www/install-openacs-keepalive.html,
+	  packages/acs-core-docs/www/install-origins.html,
+	  packages/acs-core-docs/www/install-overview.html,
+	  packages/acs-core-docs/www/install-pam-radius.html,
+	  packages/acs-core-docs/www/install-php.html,
+	  packages/acs-core-docs/www/install-qmail.html,
+	  packages/acs-core-docs/www/install-redhat.html,
+	  packages/acs-core-docs/www/install-resources.html,
+	  packages/acs-core-docs/www/install-squirrelmail.html,
+	  packages/acs-core-docs/www/install-ssl.html,
+	  packages/acs-core-docs/www/install-steps.html,
+	  packages/acs-core-docs/www/install-tclwebtest.html,
+	  packages/acs-core-docs/www/ix01.html,
+	  packages/acs-core-docs/www/kernel-doc.html,
+	  packages/acs-core-docs/www/kernel-overview.html,
+	  packages/acs-core-docs/www/mac-installation.html,
+	  packages/acs-core-docs/www/maint-performance.html,
+	  packages/acs-core-docs/www/maintenance-deploy.html,
+	  packages/acs-core-docs/www/maintenance-web.html,
+	  packages/acs-core-docs/www/nxml-mode.html,
+	  packages/acs-core-docs/www/object-identity.html,
+	  packages/acs-core-docs/www/object-system-design.html,
+	  packages/acs-core-docs/www/object-system-requirements.html,
+	  packages/acs-core-docs/www/objects.html,
+	  packages/acs-core-docs/www/openacs-cvs-concepts.html,
+	  packages/acs-core-docs/www/openacs-overview.html,
+	  packages/acs-core-docs/www/openacs-unpack.html,
+	  packages/acs-core-docs/www/openacs.html,
+	  packages/acs-core-docs/www/oracle.html,
+	  packages/acs-core-docs/www/os-install.html,
+	  packages/acs-core-docs/www/os-security.html,
+	  packages/acs-core-docs/www/packages.html,
+	  packages/acs-core-docs/www/parties.html,
+	  packages/acs-core-docs/www/permissions-design.html,
+	  packages/acs-core-docs/www/permissions-requirements.html,
+	  packages/acs-core-docs/www/permissions-tediously-explained.html,
+	  packages/acs-core-docs/www/permissions.html,
+	  packages/acs-core-docs/www/postgres.html,
+	  packages/acs-core-docs/www/profile-code.html,
+	  packages/acs-core-docs/www/programming-with-aolserver.html,
+	  packages/acs-core-docs/www/psgml-for-emacs.html,
+	  packages/acs-core-docs/www/psgml-mode.html,
+	  packages/acs-core-docs/www/release-notes-4-5.html,
+	  packages/acs-core-docs/www/release-notes-4-6-2.html,
+	  packages/acs-core-docs/www/release-notes-4-6-3.html,
+	  packages/acs-core-docs/www/release-notes-4-6.html,
+	  packages/acs-core-docs/www/release-notes.html,
+	  packages/acs-core-docs/www/releasing-openacs-core.html,
+	  packages/acs-core-docs/www/releasing-openacs.html,
+	  packages/acs-core-docs/www/releasing-package.html,
+	  packages/acs-core-docs/www/remote-postgres.html,
+	  packages/acs-core-docs/www/request-processor.html,
+	  packages/acs-core-docs/www/requirements-template.html,
+	  packages/acs-core-docs/www/rp-design.html,
+	  packages/acs-core-docs/www/rp-requirements.html,
+	  packages/acs-core-docs/www/security-design.html,
+	  packages/acs-core-docs/www/security-notes.html,
+	  packages/acs-core-docs/www/security-requirements.html,
+	  packages/acs-core-docs/www/snapshot-backup.html,
+	  packages/acs-core-docs/www/style-guide.html,
+	  packages/acs-core-docs/www/subsites-design.html,
+	  packages/acs-core-docs/www/subsites-requirements.html,
+	  packages/acs-core-docs/www/subsites.html,
+	  packages/acs-core-docs/www/tcl-doc.html,
+	  packages/acs-core-docs/www/templates.html,
+	  packages/acs-core-docs/www/tutorial-admin-pages.html,
+	  packages/acs-core-docs/www/tutorial-advanced.html,
+	  packages/acs-core-docs/www/tutorial-caching.html,
+	  packages/acs-core-docs/www/tutorial-categories.html,
+	  packages/acs-core-docs/www/tutorial-comments.html,
+	  packages/acs-core-docs/www/tutorial-css-layout.html,
+	  packages/acs-core-docs/www/tutorial-cvs.html,
+	  packages/acs-core-docs/www/tutorial-database.html,
+	  packages/acs-core-docs/www/tutorial-debug.html,
+	  packages/acs-core-docs/www/tutorial-distribute.html,
+	  packages/acs-core-docs/www/tutorial-etp-templates.html,
+	  packages/acs-core-docs/www/tutorial-future-topics.html,
+	  packages/acs-core-docs/www/tutorial-hierarchical.html,
+	  packages/acs-core-docs/www/tutorial-html-email.html,
+	  packages/acs-core-docs/www/tutorial-newpackage.html,
+	  packages/acs-core-docs/www/tutorial-notifications.html,
+	  packages/acs-core-docs/www/tutorial-pages.html,
+	  packages/acs-core-docs/www/tutorial-parameters.html,
+	  packages/acs-core-docs/www/tutorial-schedule-procs.html,
+	  packages/acs-core-docs/www/tutorial-second-database.html,
+	  packages/acs-core-docs/www/tutorial-specs.html,
+	  packages/acs-core-docs/www/tutorial-upgrade-scripts.html,
+	  packages/acs-core-docs/www/tutorial-upgrades.html,
+	  packages/acs-core-docs/www/tutorial-vuh.html,
+	  packages/acs-core-docs/www/tutorial-wysiwyg-editor.html,
+	  packages/acs-core-docs/www/tutorial.html,
+	  packages/acs-core-docs/www/unix-installation.html,
+	  packages/acs-core-docs/www/update-repository.html,
+	  packages/acs-core-docs/www/update-translations.html,
+	  packages/acs-core-docs/www/upgrade-4.5-to-4.6.html,
+	  packages/acs-core-docs/www/upgrade-4.6.3-to-5.html,
+	  packages/acs-core-docs/www/upgrade-5-0-dot.html,
+	  packages/acs-core-docs/www/upgrade-openacs-files.html,
+	  packages/acs-core-docs/www/upgrade-overview.html,
+	  packages/acs-core-docs/www/upgrade-supporting.html,
+	  packages/acs-core-docs/www/upgrade.html,
+	  packages/acs-core-docs/www/uptime.html,
+	  packages/acs-core-docs/www/using-cvs-with-openacs.html,
+	  packages/acs-core-docs/www/variables.html,
+	  packages/acs-core-docs/www/win2k-installation.html,
+	  packages/acs-core-docs/www/files/update-info.sh,
+	  packages/acs-core-docs/www/xml/releasing-openacs.xml,
+	  packages/acs-core-docs/www/xml/variables.ent,
+	  packages/acs-core-docs/www/xml/for-everyone/release-notes.xml,
+	  packages/acs-core-docs/www/xml/install-guide/aolserver4.xml,
+	  packages/acs-core-docs/www/xml/install-guide/openacs.xml,
+	  packages/acs-core-docs/www/xml/install-guide/other-software.xml,
+	  packages/acs-core-docs/www/xml/install-guide/postgres.xml,
+	  packages/acs-kernel/acs-kernel.info,
+	  packages/acs-kernel/catalog/acs-kernel.ar_EG.utf-8.xml,
+	  packages/acs-kernel/catalog/acs-kernel.ar_LB.utf-8.xml,
+	  packages/acs-kernel/catalog/acs-kernel.ast_ES.ISO-8859-1.xml,
+	  packages/acs-kernel/catalog/acs-kernel.ca_ES.ISO-8859-1.xml,
+	  packages/acs-kernel/catalog/acs-kernel.da_DK.ISO-8859-1.xml,
+	  packages/acs-kernel/catalog/acs-kernel.de_DE.ISO-8859-1.xml,
+	  packages/acs-kernel/catalog/acs-kernel.en_AU.ISO-8859-1.xml,
+	  packages/acs-kernel/catalog/acs-kernel.en_US.ISO-8859-1.xml,
+	  packages/acs-kernel/catalog/acs-kernel.es_CO.ISO-8859-1.xml,
+	  packages/acs-kernel/catalog/acs-kernel.es_ES.ISO-8859-1.xml,
+	  packages/acs-kernel/catalog/acs-kernel.es_GT.ISO-8859-1.xml,
+	  packages/acs-kernel/catalog/acs-kernel.eu_ES.ISO-8859-1.xml,
+	  packages/acs-kernel/catalog/acs-kernel.fi_FI.utf-8.xml,
+	  packages/acs-kernel/catalog/acs-kernel.fr_FR.ISO-8859-1.xml,
+	  packages/acs-kernel/catalog/acs-kernel.gl_ES.ISO-8859-1.xml,
+	  packages/acs-kernel/catalog/acs-kernel.hi_IN.utf-8.xml,
+	  packages/acs-kernel/catalog/acs-kernel.hu_HU.utf-8.xml,
+	  packages/acs-kernel/catalog/acs-kernel.it_IT.ISO-8859-1.xml,
+	  packages/acs-kernel/catalog/acs-kernel.ja_JP.utf-8.xml,
+	  packages/acs-kernel/catalog/acs-kernel.ko_KR.utf-8.xml,
+	  packages/acs-kernel/catalog/acs-kernel.ms_MY.utf-8.xml,
+	  packages/acs-kernel/catalog/acs-kernel.nl_NL.ISO-8859-1.xml,
+	  packages/acs-kernel/catalog/acs-kernel.nn_NO.ISO-8859-1.xml,
+	  packages/acs-kernel/catalog/acs-kernel.no_NO.ISO-8859-1.xml,
+	  packages/acs-kernel/catalog/acs-kernel.pa_IN.utf-8.xml,
+	  packages/acs-kernel/catalog/acs-kernel.pl_PL.utf-8.xml,
+	  packages/acs-kernel/catalog/acs-kernel.pt_BR.ISO-8859-1.xml,
+	  packages/acs-kernel/catalog/acs-kernel.pt_PT.ISO-8859-1.xml,
+	  packages/acs-kernel/catalog/acs-kernel.ro_RO.utf-8.xml,
+	  packages/acs-kernel/catalog/acs-kernel.ru_RU.utf-8.xml,
+	  packages/acs-kernel/catalog/acs-kernel.sv_SE.ISO-8859-1.xml,
+	  packages/acs-kernel/catalog/acs-kernel.tr_TR.utf-8.xml,
+	  packages/acs-kernel/catalog/acs-kernel.zh_CN.utf-8.xml,
+	  packages/acs-kernel/catalog/acs-kernel.zh_TW.utf-8.xml,
+	  packages/acs-kernel/sql/oracle/acs-relationships-create.sql,
+	  packages/acs-kernel/sql/oracle/groups-body-create.sql,
+	  packages/acs-kernel/sql/oracle/groups-create.sql,
+	  packages/acs-kernel/sql/oracle/upgrade/upgrade-5.2.0b9-5.2.0b10.sql,
+	  packages/acs-kernel/sql/oracle/upgrade/upgrade-5.2.0d1-5.2.0d2.sql,
+	  packages/acs-kernel/sql/oracle/upgrade/upgrade-5.2.0d9-5.2.0d10.sql,
+	  packages/acs-kernel/sql/oracle/upgrade/upgrade-5.2.1d1-5.2.1d2.sql,
+	  packages/acs-kernel/sql/postgresql/acs-create.sql,
+	  packages/acs-kernel/sql/postgresql/acs-install.sql,
+	  packages/acs-kernel/sql/postgresql/acs-metadata-create.sql,
+	  packages/acs-kernel/sql/postgresql/acs-relationships-create.sql,
+	  packages/acs-kernel/sql/postgresql/apm-create.sql,
+	  packages/acs-kernel/sql/postgresql/groups-body-create.sql,
+	  packages/acs-kernel/sql/postgresql/groups-create.sql,
+	  packages/acs-kernel/sql/postgresql/postgresql.sql,
+	  packages/acs-kernel/sql/postgresql/rel-constraints-create.sql,
+	  packages/acs-kernel/sql/postgresql/rel-segments-create.sql,
+	  packages/acs-kernel/sql/postgresql/upgrade/upgrade-5.2.0b1-5.2.0b2.sql,
+	  packages/acs-kernel/sql/postgresql/upgrade/upgrade-5.2.0b10-5.2.0b11.sql,
+	  packages/acs-kernel/sql/postgresql/upgrade/upgrade-5.2.0b9-5.2.0b10.sql,
+	  packages/acs-kernel/sql/postgresql/upgrade/upgrade-5.2.0d1-5.2.0d2.sql,
+	  packages/acs-kernel/sql/postgresql/upgrade/upgrade-5.2.1d1-5.2.1d2.sql,
+	  packages/acs-kernel/sql/postgresql/upgrade/upgrade-5.2.2-5.2.3b1.sql,
+	  packages/acs-lang/acs-lang.info,
+	  packages/acs-lang/catalog/acs-lang.ar_EG.utf-8.xml,
+	  packages/acs-lang/catalog/acs-lang.ar_LB.utf-8.xml,
+	  packages/acs-lang/catalog/acs-lang.ast_ES.ISO-8859-1.xml,
+	  packages/acs-lang/catalog/acs-lang.ca_ES.ISO-8859-1.xml,
+	  packages/acs-lang/catalog/acs-lang.da_DK.ISO-8859-1.xml,
+	  packages/acs-lang/catalog/acs-lang.de_DE.ISO-8859-1.xml,
+	  packages/acs-lang/catalog/acs-lang.el_GR.utf-8.xml,
+	  packages/acs-lang/catalog/acs-lang.en_AU.ISO-8859-1.xml,
+	  packages/acs-lang/catalog/acs-lang.en_GB.ISO-8859-1.xml,
+	  packages/acs-lang/catalog/acs-lang.en_US.ISO-8859-1.xml,
+	  packages/acs-lang/catalog/acs-lang.es_CO.ISO-8859-1.xml,
+	  packages/acs-lang/catalog/acs-lang.es_ES.ISO-8859-1.xml,
+	  packages/acs-lang/catalog/acs-lang.es_GT.ISO-8859-1.xml,
+	  packages/acs-lang/catalog/acs-lang.eu_ES.ISO-8859-1.xml,
+	  packages/acs-lang/catalog/acs-lang.fa_IR.utf-8.xml,
+	  packages/acs-lang/catalog/acs-lang.fi_FI.utf-8.xml,
+	  packages/acs-lang/catalog/acs-lang.fr_FR.ISO-8859-1.xml,
+	  packages/acs-lang/catalog/acs-lang.gl_ES.ISO-8859-1.xml,
+	  packages/acs-lang/catalog/acs-lang.hi_IN.utf-8.xml,
+	  packages/acs-lang/catalog/acs-lang.hu_HU.utf-8.xml,
+	  packages/acs-lang/catalog/acs-lang.it_IT.ISO-8859-1.xml,
+	  packages/acs-lang/catalog/acs-lang.ja_JP.utf-8.xml,
+	  packages/acs-lang/catalog/acs-lang.ko_KR.utf-8.xml,
+	  packages/acs-lang/catalog/acs-lang.ms_MY.utf-8.xml,
+	  packages/acs-lang/catalog/acs-lang.nl_NL.ISO-8859-1.xml,
+	  packages/acs-lang/catalog/acs-lang.nn_NO.ISO-8859-1.xml,
+	  packages/acs-lang/catalog/acs-lang.no_NO.ISO-8859-1.xml,
+	  packages/acs-lang/catalog/acs-lang.pa_IN.utf-8.xml,
+	  packages/acs-lang/catalog/acs-lang.pl_PL.utf-8.xml,
+	  packages/acs-lang/catalog/acs-lang.pt_BR.ISO-8859-1.xml,
+	  packages/acs-lang/catalog/acs-lang.pt_PT.ISO-8859-1.xml,
+	  packages/acs-lang/catalog/acs-lang.ro_RO.utf-8.xml,
+	  packages/acs-lang/catalog/acs-lang.ru_RU.utf-8.xml,
+	  packages/acs-lang/catalog/acs-lang.sh_HR.utf-8.xml,
+	  packages/acs-lang/catalog/acs-lang.sv_SE.ISO-8859-1.xml,
+	  packages/acs-lang/catalog/acs-lang.th_TH.utf-8.xml,
+	  packages/acs-lang/catalog/acs-lang.tr_TR.utf-8.xml,
+	  packages/acs-lang/catalog/acs-lang.zh_CN.utf-8.xml,
+	  packages/acs-lang/catalog/acs-lang.zh_TW.utf-8.xml,
+	  packages/acs-lang/sql/oracle/ad-locales.sql,
+	  packages/acs-lang/sql/oracle/upgrade/upgrade-5.2.3d1-5.2.3d2.sql,
+	  packages/acs-lang/sql/postgresql/ad-locales.sql,
+	  packages/acs-lang/sql/postgresql/upgrade/upgrade-5.2.3d1-5.2.3d2.sql,
+	  packages/acs-lang/tcl/lang-catalog-procs.tcl,
+	  packages/acs-lang/tcl/lang-message-procs.tcl,
+	  packages/acs-lang/tcl/lang-util-procs.tcl,
+	  packages/acs-lang/tcl/locale-procs.tcl,
+	  packages/acs-lang/www/admin/localized-message-new.tcl,
+	  packages/acs-messaging/acs-messaging.info,
+	  packages/acs-messaging/sql/oracle/acs-messaging-packages.sql,
+	  packages/acs-messaging/sql/oracle/upgrade/upgrade-5.2.1d1-5.2.1d2.sql,
+	  packages/acs-reference/acs-reference.info,
+	  packages/acs-service-contract/acs-service-contract.info,
+	  packages/acs-subsite/acs-subsite.info,
+	  packages/acs-subsite/catalog/acs-subsite.ar_EG.utf-8.xml,
+	  packages/acs-subsite/catalog/acs-subsite.ar_LB.utf-8.xml,
+	  packages/acs-subsite/catalog/acs-subsite.ast_ES.ISO-8859-1.xml,
+	  packages/acs-subsite/catalog/acs-subsite.ca_ES.ISO-8859-1.xml,
+	  packages/acs-subsite/catalog/acs-subsite.da_DK.ISO-8859-1.xml,
+	  packages/acs-subsite/catalog/acs-subsite.de_DE.ISO-8859-1.xml,
+	  packages/acs-subsite/catalog/acs-subsite.el_GR.utf-8.xml,
+	  packages/acs-subsite/catalog/acs-subsite.en_AU.ISO-8859-1.xml,
+	  packages/acs-subsite/catalog/acs-subsite.en_US.ISO-8859-1.xml,
+	  packages/acs-subsite/catalog/acs-subsite.es_CO.ISO-8859-1.xml,
+	  packages/acs-subsite/catalog/acs-subsite.es_ES.ISO-8859-1.xml,
+	  packages/acs-subsite/catalog/acs-subsite.es_GT.ISO-8859-1.xml,
+	  packages/acs-subsite/catalog/acs-subsite.eu_ES.ISO-8859-1.xml,
+	  packages/acs-subsite/catalog/acs-subsite.fi_FI.utf-8.xml,
+	  packages/acs-subsite/catalog/acs-subsite.fr_FR.ISO-8859-1.xml,
+	  packages/acs-subsite/catalog/acs-subsite.gl_ES.ISO-8859-1.xml,
+	  packages/acs-subsite/catalog/acs-subsite.hi_IN.utf-8.xml,
+	  packages/acs-subsite/catalog/acs-subsite.hu_HU.utf-8.xml,
+	  packages/acs-subsite/catalog/acs-subsite.it_IT.ISO-8859-1.xml,
+	  packages/acs-subsite/catalog/acs-subsite.ja_JP.utf-8.xml,
+	  packages/acs-subsite/catalog/acs-subsite.ko_KR.utf-8.xml,
+	  packages/acs-subsite/catalog/acs-subsite.ms_MY.utf-8.xml,
+	  packages/acs-subsite/catalog/acs-subsite.nl_NL.ISO-8859-1.xml,
+	  packages/acs-subsite/catalog/acs-subsite.nn_NO.ISO-8859-1.xml,
+	  packages/acs-subsite/catalog/acs-subsite.no_NO.ISO-8859-1.xml,
+	  packages/acs-subsite/catalog/acs-subsite.pa_IN.utf-8.xml,
+	  packages/acs-subsite/catalog/acs-subsite.pl_PL.utf-8.xml,
+	  packages/acs-subsite/catalog/acs-subsite.pt_BR.ISO-8859-1.xml,
+	  packages/acs-subsite/catalog/acs-subsite.pt_PT.ISO-8859-1.xml,
+	  packages/acs-subsite/catalog/acs-subsite.ro_RO.utf-8.xml,
+	  packages/acs-subsite/catalog/acs-subsite.ru_RU.utf-8.xml,
+	  packages/acs-subsite/catalog/acs-subsite.sh_HR.utf-8.xml,
+	  packages/acs-subsite/catalog/acs-subsite.sv_SE.ISO-8859-1.xml,
+	  packages/acs-subsite/catalog/acs-subsite.th_TH.utf-8.xml,
+	  packages/acs-subsite/catalog/acs-subsite.tr_TR.utf-8.xml,
+	  packages/acs-subsite/catalog/acs-subsite.zh_CN.utf-8.xml,
+	  packages/acs-subsite/catalog/acs-subsite.zh_TW.utf-8.xml,
+	  packages/acs-subsite/lib/login.adp,
+	  packages/acs-subsite/lib/login.tcl,
+	  packages/acs-subsite/lib/user-new.tcl,
+	  packages/acs-subsite/sql/oracle/site-node-selection.sql,
+	  packages/acs-subsite/sql/oracle/upgrade/upgrade-5.1.2-5.1.3.sql,
+	  packages/acs-subsite/sql/oracle/upgrade/upgrade-5.2.0b5-5.2.0b6.sql,
+	  packages/acs-subsite/sql/postgresql/site-node-selection.sql,
+	  packages/acs-subsite/sql/postgresql/upgrade/upgrade-5.2.0b5-5.2.0b6.sql,
+	  packages/acs-subsite/tcl/apm-callback-procs.tcl,
+	  packages/acs-subsite/tcl/callback-procs.tcl,
+	  packages/acs-subsite/tcl/email-image-procs-oracle.xql,
+	  packages/acs-subsite/tcl/email-image-procs-postgresql.xql,
+	  packages/acs-subsite/tcl/email-image-procs.tcl,
+	  packages/acs-subsite/tcl/email-image-procs.xql,
+	  packages/acs-subsite/tcl/group-procs.tcl,
+	  packages/acs-subsite/tcl/group-procs.xql,
+	  packages/acs-subsite/tcl/party-procs.tcl,
+	  packages/acs-subsite/tcl/party-procs.xql,
+	  packages/acs-subsite/tcl/subsite-callback-procs.tcl,
+	  packages/acs-subsite/www/o.vuh,
+	  packages/acs-subsite/www/admin/object-types/alphabetical-index.adp,
+	  packages/acs-subsite/www/admin/object-types/alphabetical-index.tcl,
+	  packages/acs-subsite/www/admin/object-types/index.adp,
+	  packages/acs-subsite/www/admin/object-types/index.tcl,
+	  packages/acs-subsite/www/admin/object-types/one.adp,
+	  packages/acs-subsite/www/admin/object-types/one.tcl,
+	  packages/acs-subsite/www/admin/site-map/application-new.tcl,
+	  packages/acs-subsite/www/admin/site-map/index.tcl,
+	  packages/acs-subsite/www/admin/site-map/package-new.tcl,
+	  packages/acs-subsite/www/permissions/perm-include.tcl,
+	  packages/acs-subsite/www/permissions/perm-user-add-include.tcl,
+	  packages/acs-subsite/www/permissions/perm-user-add.tcl,
+	  packages/acs-subsite/www/permissions/toggle-inherit.tcl,
+	  packages/acs-subsite/www/pvt/home.adp,
+	  packages/acs-subsite/www/pvt/home.tcl,
+	  packages/acs-subsite/www/register/user-join.tcl,
+	  packages/acs-subsite/www/resources/core.js,
+	  packages/acs-subsite/www/resources/site-master.css,
+	  packages/acs-subsite/www/shared/parameters.tcl,
+	  packages/acs-tcl/acs-tcl.info,
+	  packages/acs-tcl/catalog/acs-tcl.ar_EG.utf-8.xml,
+	  packages/acs-tcl/catalog/acs-tcl.ar_LB.utf-8.xml,
+	  packages/acs-tcl/catalog/acs-tcl.ast_ES.ISO-8859-1.xml,
+	  packages/acs-tcl/catalog/acs-tcl.ca_ES.ISO-8859-1.xml,
+	  packages/acs-tcl/catalog/acs-tcl.da_DK.ISO-8859-1.xml,
+	  packages/acs-tcl/catalog/acs-tcl.de_DE.ISO-8859-1.xml,
+	  packages/acs-tcl/catalog/acs-tcl.en_AU.ISO-8859-1.xml,
+	  packages/acs-tcl/catalog/acs-tcl.en_US.ISO-8859-1.xml,
+	  packages/acs-tcl/catalog/acs-tcl.es_CO.ISO-8859-1.xml,
+	  packages/acs-tcl/catalog/acs-tcl.es_ES.ISO-8859-1.xml,
+	  packages/acs-tcl/catalog/acs-tcl.es_GT.ISO-8859-1.xml,
+	  packages/acs-tcl/catalog/acs-tcl.eu_ES.ISO-8859-1.xml,
+	  packages/acs-tcl/catalog/acs-tcl.fa_IR.utf-8.xml,
+	  packages/acs-tcl/catalog/acs-tcl.fi_FI.utf-8.xml,
+	  packages/acs-tcl/catalog/acs-tcl.fr_FR.ISO-8859-1.xml,
+	  packages/acs-tcl/catalog/acs-tcl.gl_ES.ISO-8859-1.xml,
+	  packages/acs-tcl/catalog/acs-tcl.hi_IN.utf-8.xml,
+	  packages/acs-tcl/catalog/acs-tcl.hu_HU.utf-8.xml,
+	  packages/acs-tcl/catalog/acs-tcl.ind_ID.utf-8.xml,
+	  packages/acs-tcl/catalog/acs-tcl.it_IT.ISO-8859-1.xml,
+	  packages/acs-tcl/catalog/acs-tcl.ja_JP.utf-8.xml,
+	  packages/acs-tcl/catalog/acs-tcl.ko_KR.utf-8.xml,
+	  packages/acs-tcl/catalog/acs-tcl.ms_MY.utf-8.xml,
+	  packages/acs-tcl/catalog/acs-tcl.nl_NL.ISO-8859-1.xml,
+	  packages/acs-tcl/catalog/acs-tcl.nn_NO.ISO-8859-1.xml,
+	  packages/acs-tcl/catalog/acs-tcl.no_NO.ISO-8859-1.xml,
+	  packages/acs-tcl/catalog/acs-tcl.pl_PL.utf-8.xml,
+	  packages/acs-tcl/catalog/acs-tcl.pt_BR.ISO-8859-1.xml,
+	  packages/acs-tcl/catalog/acs-tcl.pt_PT.ISO-8859-1.xml,
+	  packages/acs-tcl/catalog/acs-tcl.ro_RO.utf-8.xml,
+	  packages/acs-tcl/catalog/acs-tcl.ru_RU.utf-8.xml,
+	  packages/acs-tcl/catalog/acs-tcl.sh_HR.utf-8.xml,
+	  packages/acs-tcl/catalog/acs-tcl.sv_SE.ISO-8859-1.xml,
+	  packages/acs-tcl/catalog/acs-tcl.tr_TR.utf-8.xml,
+	  packages/acs-tcl/catalog/acs-tcl.zh_CN.utf-8.xml,
+	  packages/acs-tcl/catalog/acs-tcl.zh_TW.utf-8.xml,
+	  packages/acs-tcl/lib/ad-return-complaint.adp,
+	  packages/acs-tcl/lib/complain.adp,
+	  packages/acs-tcl/lib/page-error.tcl,
+	  packages/acs-tcl/tcl/00-database-procs.tcl,
+	  packages/acs-tcl/tcl/20-memoize-init.tcl,
+	  packages/acs-tcl/tcl/apm-install-procs.tcl,
+	  packages/acs-tcl/tcl/application-data-link-procs.tcl,
+	  packages/acs-tcl/tcl/application-data-link-procs.xql,
+	  packages/acs-tcl/tcl/application-link-procs.tcl,
+	  packages/acs-tcl/tcl/community-core-procs.tcl,
+	  packages/acs-tcl/tcl/community-core-procs.xql,
+	  packages/acs-tcl/tcl/install-procs.tcl,
+	  packages/acs-tcl/tcl/membership-rel-procs-oracle.xql,
+	  packages/acs-tcl/tcl/membership-rel-procs-postgresql.xql,
+	  packages/acs-tcl/tcl/membership-rel-procs.tcl,
+	  packages/acs-tcl/tcl/memoize-procs.tcl,
+	  packages/acs-tcl/tcl/pdf-procs.tcl,
+	  packages/acs-tcl/tcl/request-processor-procs.tcl,
+	  packages/acs-tcl/tcl/server-cluster-procs.tcl,
+	  packages/acs-tcl/tcl/site-node-apm-integration-procs.tcl,
+	  packages/acs-tcl/tcl/tcl-documentation-procs.tcl,
+	  packages/acs-tcl/tcl/text-html-procs.tcl,
+	  packages/acs-tcl/tcl/utilities-procs.tcl,
+	  packages/acs-templating/acs-templating.info,
+	  packages/acs-templating/catalog/acs-templating.ar_LB.utf-8.xml,
+	  packages/acs-templating/catalog/acs-templating.ca_ES.ISO-8859-1.xml,
+	  packages/acs-templating/catalog/acs-templating.da_DK.ISO-8859-1.xml,
+	  packages/acs-templating/catalog/acs-templating.de_DE.ISO-8859-1.xml,
+	  packages/acs-templating/catalog/acs-templating.en_AU.ISO-8859-1.xml,
+	  packages/acs-templating/catalog/acs-templating.en_US.ISO-8859-1.xml,
+	  packages/acs-templating/catalog/acs-templating.es_CO.ISO-8859-1.xml,
+	  packages/acs-templating/catalog/acs-templating.es_ES.ISO-8859-1.xml,
+	  packages/acs-templating/catalog/acs-templating.es_GT.ISO-8859-1.xml,
+	  packages/acs-templating/catalog/acs-templating.eu_ES.ISO-8859-1.xml,
+	  packages/acs-templating/catalog/acs-templating.fi_FI.utf-8.xml,
+	  packages/acs-templating/catalog/acs-templating.fr_FR.ISO-8859-1.xml,
+	  packages/acs-templating/catalog/acs-templating.hi_IN.utf-8.xml,
+	  packages/acs-templating/catalog/acs-templating.hu_HU.utf-8.xml,
+	  packages/acs-templating/catalog/acs-templating.it_IT.ISO-8859-1.xml,
+	  packages/acs-templating/catalog/acs-templating.ko_KR.utf-8.xml,
+	  packages/acs-templating/catalog/acs-templating.ms_MY.utf-8.xml,
+	  packages/acs-templating/catalog/acs-templating.nl_NL.ISO-8859-1.xml,
+	  packages/acs-templating/catalog/acs-templating.nn_NO.ISO-8859-1.xml,
+	  packages/acs-templating/catalog/acs-templating.no_NO.ISO-8859-1.xml,
+	  packages/acs-templating/catalog/acs-templating.pa_IN.utf-8.xml,
+	  packages/acs-templating/catalog/acs-templating.pt_BR.ISO-8859-1.xml,
+	  packages/acs-templating/catalog/acs-templating.pt_PT.ISO-8859-1.xml,
+	  packages/acs-templating/catalog/acs-templating.ro_RO.utf-8.xml,
+	  packages/acs-templating/catalog/acs-templating.ru_RU.utf-8.xml,
+	  packages/acs-templating/catalog/acs-templating.sh_HR.utf-8.xml,
+	  packages/acs-templating/catalog/acs-templating.sv_SE.ISO-8859-1.xml,
+	  packages/acs-templating/catalog/acs-templating.tr_TR.utf-8.xml,
+	  packages/acs-templating/catalog/acs-templating.zh_CN.utf-8.xml,
+	  packages/acs-templating/catalog/acs-templating.zh_TW.utf-8.xml,
+	  packages/acs-templating/resources/forms/accessible-forms.adp,
+	  packages/acs-templating/resources/forms/inline.adp,
+	  packages/acs-templating/resources/lists/course-filters.adp,
+	  packages/acs-templating/resources/lists/courses.adp,
+	  packages/acs-templating/resources/lists/select-menu.adp,
+	  packages/acs-templating/resources/lists/table.adp,
+	  packages/acs-templating/tcl/date-procs.tcl,
+	  packages/acs-templating/tcl/list-procs.tcl,
+	  packages/acs-templating/tcl/richtext-procs.tcl,
+	  packages/acs-templating/tcl/util-procs.tcl,
+	  packages/acs-templating/tcl/test/date-procs.tcl,
+	  packages/acs-templating/tcl/test/parse-test-procs.tcl,
+	  packages/acs-templating/www/resources/calendar.gif,
+	  packages/acs-templating/www/resources/lists.css,
+	  packages/acs-templating/www/resources/mktree.js,
+	  packages/acs-templating/www/resources/xinha-nightly/dialog.js,
+	  packages/acs-templating/www/resources/xinha-nightly/htmlarea.css,
+	  packages/acs-templating/www/resources/xinha-nightly/htmlarea.js,
+	  packages/acs-templating/www/resources/xinha-nightly/examples/Extended.html,
+	  packages/acs-templating/www/resources/xinha-nightly/examples/ext_example-body.html,
+	  packages/acs-templating/www/resources/xinha-nightly/examples/ext_example-menu.php,
+	  packages/acs-templating/www/resources/xinha-nightly/examples/ext_example.html,
+	  packages/acs-templating/www/resources/xinha-nightly/images/fr/bold.gif,
+	  packages/acs-templating/www/resources/xinha-nightly/images/fr/strikethrough.gif,
+	  packages/acs-templating/www/resources/xinha-nightly/images/fr/underline.gif,
+	  packages/acs-templating/www/resources/xinha-nightly/lang/fr.js,
+	  packages/acs-templating/www/resources/xinha-nightly/lang/sh.js,
+	  packages/acs-templating/www/resources/xinha-nightly/lang/sr.js,
+	  packages/acs-templating/www/resources/xinha-nightly/plugins/CSS/css.js,
+	  packages/acs-templating/www/resources/xinha-nightly/plugins/CharCounter/char-counter.js,
+	  packages/acs-templating/www/resources/xinha-nightly/plugins/CharacterMap/character-map.js,
+	  packages/acs-templating/www/resources/xinha-nightly/plugins/CharacterMap/lang/ru.js,
+	  packages/acs-templating/www/resources/xinha-nightly/plugins/ContextMenu/context-menu.js,
+	  packages/acs-templating/www/resources/xinha-nightly/plugins/ContextMenu/lang/no.js,
+	  packages/acs-templating/www/resources/xinha-nightly/plugins/Equation/equation.js,
+	  packages/acs-templating/www/resources/xinha-nightly/plugins/Equation/lang/no.js,
+	  packages/acs-templating/www/resources/xinha-nightly/plugins/FindReplace/lang/ru.js,
+	  packages/acs-templating/www/resources/xinha-nightly/plugins/FullPage/full-page.js,
+	  packages/acs-templating/www/resources/xinha-nightly/plugins/FullScreen/lang/ru.js,
+	  packages/acs-templating/www/resources/xinha-nightly/plugins/GetHtml/get-html.js,
+	  packages/acs-templating/www/resources/xinha-nightly/plugins/HtmlTidy/lang/no.js,
+	  packages/acs-templating/www/resources/xinha-nightly/plugins/ImageManager/config.inc.php,
+	  packages/acs-templating/www/resources/xinha-nightly/plugins/ImageManager/editor.php,
+	  packages/acs-templating/www/resources/xinha-nightly/plugins/ImageManager/editorFrame.php,
+	  packages/acs-templating/www/resources/xinha-nightly/plugins/ImageManager/image-manager.js,
+	  packages/acs-templating/www/resources/xinha-nightly/plugins/ImageManager/images.php,
+	  packages/acs-templating/www/resources/xinha-nightly/plugins/ImageManager/manager.php,
+	  packages/acs-templating/www/resources/xinha-nightly/plugins/ImageManager/resizer.php,
+	  packages/acs-templating/www/resources/xinha-nightly/plugins/ImageManager/thumbs.php,
+	  packages/acs-templating/www/resources/xinha-nightly/plugins/ImageManager/Classes/Files.php,
+	  packages/acs-templating/www/resources/xinha-nightly/plugins/ImageManager/Classes/GD.php,
+	  packages/acs-templating/www/resources/xinha-nightly/plugins/ImageManager/Classes/IM.php,
+	  packages/acs-templating/www/resources/xinha-nightly/plugins/ImageManager/Classes/ImageEditor.php,
+	  packages/acs-templating/www/resources/xinha-nightly/plugins/ImageManager/Classes/ImageManager.php,
+	  packages/acs-templating/www/resources/xinha-nightly/plugins/ImageManager/Classes/NetPBM.php,
+	  packages/acs-templating/www/resources/xinha-nightly/plugins/ImageManager/Classes/Thumbnail.php,
+	  packages/acs-templating/www/resources/xinha-nightly/plugins/ImageManager/Classes/Transform.php,
+	  packages/acs-templating/www/resources/xinha-nightly/plugins/ImageManager/assets/dialog.js,
+	  packages/acs-templating/www/resources/xinha-nightly/plugins/ImageManager/assets/editor.js,
+	  packages/acs-templating/www/resources/xinha-nightly/plugins/ImageManager/assets/editorFrame.js,
+	  packages/acs-templating/www/resources/xinha-nightly/plugins/ImageManager/assets/imagelist.css,
+	  packages/acs-templating/www/resources/xinha-nightly/plugins/ImageManager/assets/images.js,
+	  packages/acs-templating/www/resources/xinha-nightly/plugins/ImageManager/assets/manager.js,
+	  packages/acs-templating/www/resources/xinha-nightly/plugins/ImageManager/assets/popup.js,
+	  packages/acs-templating/www/resources/xinha-nightly/plugins/ImageManager/lang/ru.js,
+	  packages/acs-templating/www/resources/xinha-nightly/plugins/InsertAnchor/lang/no.js,
+	  packages/acs-templating/www/resources/xinha-nightly/plugins/InsertPicture/InsertPicture.php,
+	  packages/acs-templating/www/resources/xinha-nightly/plugins/InsertPicture/insert-picture.js,
+	  packages/acs-templating/www/resources/xinha-nightly/plugins/InsertPicture/lang/de.js,
+	  packages/acs-templating/www/resources/xinha-nightly/plugins/InsertPicture/lang/no.js,
+	  packages/acs-templating/www/resources/xinha-nightly/plugins/InsertSnippet/InsertSnippet.css,
+	  packages/acs-templating/www/resources/xinha-nightly/plugins/InsertSnippet/insert-snippet.js,
+	  packages/acs-templating/www/resources/xinha-nightly/plugins/InsertSnippet/snippets.html,
+	  packages/acs-templating/www/resources/xinha-nightly/plugins/InsertSnippet/snippets.js,
+	  packages/acs-templating/www/resources/xinha-nightly/plugins/InsertSnippet/snippets.php,
+	  packages/acs-templating/www/resources/xinha-nightly/plugins/InsertSnippet/img/ed_snippet.gif,
+	  packages/acs-templating/www/resources/xinha-nightly/plugins/InsertSnippet/lang/de.js,
+	  packages/acs-templating/www/resources/xinha-nightly/plugins/InsertSnippet/popups/insertsnippet.html,
+	  packages/acs-templating/www/resources/xinha-nightly/plugins/Linker/linker.js,
+	  packages/acs-templating/www/resources/xinha-nightly/plugins/ListType/list-type.js,
+	  packages/acs-templating/www/resources/xinha-nightly/plugins/ListType/lang/no.js,
+	  packages/acs-templating/www/resources/xinha-nightly/plugins/ListType/lang/ru.js,
+	  packages/acs-templating/www/resources/xinha-nightly/plugins/NoteServer/lang/no.js,
+	  packages/acs-templating/www/resources/xinha-nightly/plugins/OacsFs/oacs-fs.js,
+	  packages/acs-templating/www/resources/xinha-nightly/plugins/OacsFs/lang/empty,
+	  packages/acs-templating/www/resources/xinha-nightly/plugins/OacsFs/popups/file-selector.adp,
+	  packages/acs-templating/www/resources/xinha-nightly/plugins/OacsFs/popups/file-selector.tcl,
+	  packages/acs-templating/www/resources/xinha-nightly/plugins/OacsFs/popups/insert-ilink.adp,
+	  packages/acs-templating/www/resources/xinha-nightly/plugins/OacsFs/popups/insert-ilink.tcl,
+	  packages/acs-templating/www/resources/xinha-nightly/plugins/OacsFs/popups/insert-image.tcl,
+	  packages/acs-templating/www/resources/xinha-nightly/plugins/PasteText/popups/paste_text.html,
+	  packages/acs-templating/www/resources/xinha-nightly/plugins/QuickTag/lang/no.js,
+	  packages/acs-templating/www/resources/xinha-nightly/plugins/SpellChecker/aspell_setup.php,
+	  packages/acs-templating/www/resources/xinha-nightly/plugins/SpellChecker/spell-check-logic.cgi,
+	  packages/acs-templating/www/resources/xinha-nightly/plugins/SpellChecker/spell-check-ui.html,
+	  packages/acs-templating/www/resources/xinha-nightly/plugins/SpellChecker/spell-check-ui.js,
+	  packages/acs-templating/www/resources/xinha-nightly/plugins/SpellChecker/spell-checker.js,
+	  packages/acs-templating/www/resources/xinha-nightly/plugins/SpellChecker/lang/no.js,
+	  packages/acs-templating/www/resources/xinha-nightly/plugins/SuperClean/lang/no.js,
+	  packages/acs-templating/www/resources/xinha-nightly/plugins/TableOperations/table-operations.js,
+	  packages/acs-templating/www/resources/xinha-nightly/plugins/TableOperations/lang/fr.js,
+	  packages/acs-templating/www/resources/xinha-nightly/plugins/TableOperations/lang/ru.js,
+	  packages/acs-templating/www/resources/xinha-nightly/popups/about.html,
+	  packages/acs-templating/www/resources/xinha-nightly/popups/popup.js,
+	  packages/acs-templating/www/resources/xinha-nightly/skins/blue-metallic/skin.css,
+	  packages/acs-translations/acs-translations.info,
+	  packages/ref-timezones/ref-timezones.info,
+	  packages/ref-timezones/sql/postgresql/ref-timezones-create.sql,
+	  packages/ref-timezones/sql/postgresql/upgrade/upgrade-5.2.2-5.2.3b1.sql,
+	  packages/search/search.info,
+	  packages/search/catalog/search.de_DE.ISO-8859-1.xml,
+	  packages/search/catalog/search.es_ES.ISO-8859-1.xml,
+	  packages/search/catalog/search.nl_NL.ISO-8859-1.xml,
+	  packages/search/catalog/search.pl_PL.utf-8.xml,
+	  packages/search/tcl/search-procs.tcl,
+	  packages/search/www/search.adp, packages/search/www/search.tcl,
+	  www/blank-master.adp, www/blank-master.tcl, www/site-master.adp:
+	  Merged acs-core oacs-5-2 (currently 5.2.3) -&gt; HEAD.
 
-2006-04-26 20:55  matthewg
+	  TODO:
 
-	* packages/acs-subsite/www/resources/core.js: adding
-	  showCalendarWithDefault javascript proc so that a default date
-	  can be set when the calendar first pops up
+	  1. Bump acs-core package version numbers to 5.3.0d1 2. Would be
+	  nice to do a test install, wouldn't it?
 
-2006-04-26 20:51  matthewg
+2006-06-03 12:58  maltes
 
-	* packages/acs-templating/tcl/date-procs.tcl: changing textdate
-	  showCalendar javascript proc to showCalendarWithDefault and
-	  setting the default date the calendar should go to
+	* packages/acs-mail-lite/lib/email.tcl: Added support to 'to_addr'
+	  if we do not provide recipient_ids
 
-2006-04-26 19:23  matthewg
+2006-06-02 17:09  donb
 
-	* packages/acs-templating/:
-	  catalog/acs-templating.en_US.ISO-8859-1.xml, tcl/date-procs.tcl:
-	  localizing validation errors for date and textdate widgets
+	* packages/search/tcl/search-procs.tcl: Someone modified this file
+	  and committed it without even bothering to see if it would
+	  compile without errror ...
 
-2006-04-26 17:17  matthewg
+2006-06-02 16:28  donb
 
-	* packages/acs-templating/tcl/date-procs.tcl: adding textdate
-	  widget and associated transform, validate and util procs
+	* packages/acs-tcl/acs-tcl.info: Tagged acs-tcl HEAD as 5.3.0d1
+	  because contacts needs 5.2.3b3 or better
 
-2006-04-25 08:31  hamiltonc
+2006-06-01 06:04  maltes
 
-	* packages/acs-subsite/www/resources/core.js: apply fixes to get
-	  the mini calendar dhtml popup to work
+	* packages/acs-mail-lite/tcl/acs-mail-lite-procs.tcl: The name of
+	  the user should be in paranthesis when sending an e-mail
 
-2006-04-21 11:04  emmar
+2006-05-31 07:16  daveb
 
-	* packages/acs-templating/tcl/richtext-procs.tcl: substitute
-	  single-quote to double-quote for quoting atribute value of
-	  richtext element (#2882)
+	* packages/acs-kernel/sql/oracle/acs-metadata-create.sql: Remove
+	  duplicate &quot;default&quot; in package definition.
 
-2006-04-19 05:10  roelc
+2006-05-31 07:16  daveb
 
 	*
-	  packages/acs-content-repository/sql/postgresql/content-extlink.sql:
-	  content_name should be content__name
+	  packages/acs-content-repository/tcl/test/content-item-test-procs.tcl:
+	  Fix typo in test procs.
 
+2006-05-31 06:42  daveb
+
+	* packages/acs-content-repository/tcl/: content-item-procs.tcl,
+	  content-revision-procs-oracle.xql,
+	  content-revision-procs-postgresql.xql,
+	  content-revision-procs.tcl, content-revision-procs.xql,
+	  test/content-item-test-procs.tcl, test/test.html: Add
+	  -tmp_filename parameter to content::item::new and
+	  content::revision::new to handle file uploads at a low level with
+	  the cr tcl api. You still need to figure out the mime type and
+	  cotent type (image,etc.) before calling content::item::new. A
+	  convenience wrapper should be written if you need that feature.
+	  (that would replace cr_import_content, it think.)
+
+2006-05-28 00:14  maltes
+
+	* packages/acs-mail-lite/tcl/acs-mail-lite-procs.tcl: Minot change
+
+2006-05-21 06:14  maltes
+
+	* packages/acs-mail-lite/: lib/email.tcl,
+	  tcl/acs-mail-lite-procs.tcl: Enabled support for party_ids also
+	  containing groups
+
+2006-05-21 00:54  maltes
+
+	* packages/acs-mail-lite/tcl/acs-mail-lite-procs.tcl: Added group
+	  sending support
+
+2006-05-20 13:56  donb
+
+	* etc/config.tcl: Changed db pool config to keep handles open
+	  forever rather than a billion seconds.  A billion seconds from
+	  mid-May 2006 is 2038, so folks were running into the Unix Y2.038K
+	  bug a few decades early.  That billion number was originally
+	  picked because 0 (keep open forever) didn't work in earlier
+	  versions of AOLserver.  Early versions of the Oracle client
+	  interface on Linux used to hang when the handle was closed, thus
+	  the need to keep them open &quot;forever&quot;.  Turns out it's a good idea
+	  anyway if the db library and the appropriate db driver for
+	  AOLserver don't leak memory.	Both PG and Oracle have been
+	  well-behaved in this respect, so we just keep the db handles open
+	  indefinitely by default.
+
+2006-05-17 06:59  vinodk
+
+	* packages/acs-automated-testing/tcl/aa-test-procs.tcl:
+	  aa_export_vars takes a list of arguments
+
+2006-05-14 23:36  maltes
+
+	* packages/acs-mail-lite/: acs-mail-lite.info,
+	  tcl/acs-mail-lite-procs.tcl: Upgraded version to be on the save
+	  side for dependencies. FIxed boolean logic mistake
+
+2006-05-14 09:12  maltes
+
+	* packages/acs-mail-lite/tcl/: acs-mail-lite-callback-procs.tcl,
+	  acs-mail-lite-procs.tcl: Support for using party_ids instead of
+	  email addresses with complex_send. Upgraded callback
+
+2006-05-13 04:23  maltes
+
+	* packages/acs-mail-lite/tcl/: acs-mail-lite-procs.tcl,
+	  acs-mail-lite-procs.xql: move to using smtp for complex_send.
+	  Support for single_mail flag. Support for bcc and cc emails
+
+2006-05-13 04:23  maltes
+
+	* packages/acs-mail-lite/lib/email.tcl: Support for fixed_sender
+
+2006-05-11 06:50  maltes
+
+	* packages/acs-mail-lite/tcl/acs-mail-lite-procs.tcl: Added support
+	  to send files from the filesystem instead of cr_items to
+	  complex_send
+
+2006-05-03 03:41  maltes
+
+	* packages/acs-mail-lite/: acs-mail-lite.info, lib/email.tcl: Added
+	  support for including files in e-mail sending from a predefined
+	  folder. This is useful if you want to have the option to include
+	  some marketing or legal documents in most of your e-mails
+
+2006-05-02 02:44  leed
+
+	* packages/acs-bootstrap-installer/tcl/00-proc-procs.tcl: Fixed a
+	  problem in callbacks; implementations always call the contract
+	  definitions arg parser, but in the case where the contract only
+	  had positional arguments the arg parser was not defined.
+
 2006-04-18 06:00  eduardop
 
 	* packages/acs-subsite/tcl/email-image-procs.tcl: remove faulty
 	  email_image::check_image_magick function and just test for it
 	  when exec
 
-2006-04-13 17:11  donb
+2006-04-10 04:26  timoh
 
-	* packages/acs-content-repository/tcl/content-folder-procs.tcl:
-	  Fixed bug #2768 by backporting the fix from HEAD to 5.2
+	* packages/acs-mail-lite/lib/email.tcl: fixed exporting cancel_url
 
-2006-04-10 12:31  donb
+2006-04-08 15:57  jiml
 
+	* packages/acs-bootstrap-installer/tcl/00-proc-procs.tcl: added
+	  basic info about defining and using callbacks to docstring of
+	  ad_proc
+
+2006-03-31 09:59  hamiltonc
+
+	* packages/acs-bootstrap-installer/tcl/00-proc-procs.tcl: fix for
+	  bug 2843, this bug causes problems when trying to change
+	  authentication parameters
+
+2006-03-18 18:25  daveb
+
+	* packages/acs-tcl/tcl/html-email-procs.tcl: Mime encode periods at
+	  the beginning of a line within message text. This is most
+	  noticable if the line breaks in the middle of a URL.
+
+2006-03-18 09:50  maltes
+
+	* packages/acs-mail-lite/lib/email.tcl: Removed Contacts code
+
+2006-03-17 02:06  maltes
+
+	* packages/acs-mail-lite/: lib/email.tcl,
+	  tcl/acs-mail-lite-callback-procs.tcl,
+	  tcl/acs-mail-lite-procs.tcl: support for CC emails
+
+2006-03-15 16:22  ncarroll
+
+	* packages/notifications/notifications.info: Updated notifications
+	  dependency on acs-mail-lite.
+
+2006-03-15 13:50  ncarroll
+
+	* packages/acs-core-docs/www/xml/install-guide/aolserver4.xml:
+	  Added TCLLIB install to docs.  Resolves BUG #2616.
+
+2006-03-12 06:33  maltes
+
+	* packages/acs-mail-lite/: lib/email.tcl,
+	  tcl/acs-mail-lite-init.tcl, tcl/acs-mail-lite-procs.tcl,
+	  tcl/acs-mail-lite-procs.xql: Added rollout support. Couple of
+	  minor changes
+
+2006-03-11 15:01  donb
+
+	* packages/acs-kernel/: acs-kernel.info,
+	  sql/oracle/acs-metadata-create.sql,
+	  sql/postgresql/acs-metadata-create.sql: Added db cache size
+	  parameter
+
+2006-03-11 06:33  daveb
+
+	* packages/search/tcl/search-procs.tcl: Add callback check so
+	  indexer works.
+
+2006-03-11 06:26  daveb
+
+	* packages/intermedia-driver/sql/oracle/load-site-wide-search:
+	  Remove search package files from intermedia-driver
+
+2006-03-09 04:14  eduardop
+
+	* packages/acs-subsite/acs-subsite.info: add dependency to
+	  acs-translations from acs-subsite
+
+2006-03-02 17:05  donb
+
+	* packages/acs-tcl/tcl/test/acs-tcl-test-procs.tcl: Conditionalized
+	  tests of bindvar emulation so they're not run for Oracle.  Two of
+	  them don't work for Oracle (tries to do a &quot;select&quot; in
+	  db_exec_plsql) and since Oracle's definition of bindvar semantics
+	  defines the emulation semantics it seems silly to test if Oracle
+	  adheres to them or not :)
+
+2006-02-27 19:22  donb
+
+	* packages/acs-tcl/tcl/: 00-database-procs.tcl, database-init.tcl,
+	  test/acs-tcl-test-procs.tcl: Added a simple caching mechanism to
+	  the database API as discussed (and approved) in TIP #57 many,
+	  many moons ago.  Commands which are cache-enabled are db_string,
+	  db_0or1row, db_1row, db_list, db_list_of_lists, and db_multirow.
+
+2006-02-26 16:22  vinodk
+
+	* packages/acs-tcl/tcl/apm-procs.tcl: Add procs to calculate code
+	  metrics about a package
+
+2006-02-19 11:33  jiml
+
+	* packages/acs-tcl/tcl/openacs-kernel-procs.tcl: alter csv_foreach
+	  so it properly handles continue, break, error, return
+
+2006-02-16 17:11  donb
+
+	* packages/acs-templating/tcl/parse-procs.tcl: Parse level wasn't
+	  being popped off if an included template triggered an error.
+	  This broke my version of the portals package which uses includes
+	  rather than generate stuff via explicit calls in Tcl as the
+	  new-portals package did.
+
+2006-02-13 06:15  jiml
+
+	* packages/acs-templating/www/doc/demo/list8/add-edit.tcl: revert
+	  file to version 1.1
+
+2006-02-13 06:09  jiml
+
+	* packages/acs-templating/www/doc/demo/list8/delete.tcl: revert
+	  file to be same as vers 1.3
+
+2006-02-13 05:11  jiml
+
+	* packages/acs-templating/www/doc/demo/: index.html,
+	  list9/add-edit.adp, list9/add-edit.tcl, list9/add-edit.xql,
+	  list9/delete-oracle.xql, list9/delete-postgresql.xql,
+	  list9/delete.tcl, list9/index-oracle.xql,
+	  list9/index-postgresql.xql, list9/index.adp, list9/index.tcl,
+	  list9/view-one.adp, list9/view-one.tcl: Add 9th and final row to
+	  listbuilder demo: add page group caching to pagination
+
+2006-02-13 05:05  jiml
+
+	* packages/acs-templating/www/doc/demo/list8/: add-edit.tcl,
+	  delete.tcl, index.tcl: delete should use template_demo_note as
+	  type, not note
+
+2006-02-13 05:01  jiml
+
+	* packages/acs-templating/www/doc/demo/: list7/delete.tcl,
+	  list8/delete.tcl: finish fixing delete
+
+2006-02-13 04:56  jiml
+
+	* packages/acs-templating/www/doc/demo/: list8/delete.tcl,
+	  list7/delete.tcl: delete should use template_demo_note as type,
+	  not note
+
+2006-02-13 04:37  jiml
+
+	* packages/acs-templating/www/doc/demo/: index.html,
+	  list8/add-edit.adp, list8/add-edit.tcl, list8/add-edit.xql,
+	  list8/delete-oracle.xql, list8/delete-postgresql.xql,
+	  list8/delete.tcl, list8/index-oracle.xql,
+	  list8/index-postgresql.xql, list8/index.adp, list8/index.tcl,
+	  list8/view-one.adp, list8/view-one.tcl: Add eighth row to
+	  listbuilder demo: add non-cached pagination
+
+2006-02-13 04:29  jiml
+
+	* packages/acs-templating/www/doc/demo/list7/index.tcl: Enhanced
+	  narrative text; changed filter name to color_filter_value to be
+	  less confusing and because I think it was conflicting with the
+	  incoming color value from the table.
+
+2006-02-13 03:45  jiml
+
+	*
+	  packages/acs-templating/sql/postgresql/template-demo-notes-create.sql:
+	  fix typo in the define_function_args call for
+	  template_demo_notes__new:
+
+	  if you want to use package_instantiate_object using some type
+	  &lt;t&gt;, then your call to define_function_args for &lt;t&gt;__new needs to
+	  have the object_type parameter defaulting to &lt;t&gt;
+
+2006-02-11 16:46  jiml
+
+	* packages/acs-templating/www/doc/demo/list7/index.tcl: Add the
+	  color purple to the possible filter values
+
+2006-02-11 16:42  jiml
+
+	* packages/acs-templating/www/doc/demo/: index.html,
+	  list7/add-disabled.gif, list7/add-edit.adp, list7/add-edit.tcl,
+	  list7/add-edit.xql, list7/add.gif, list7/blank.gif,
+	  list7/delete-oracle.xql, list7/delete-postgresql.xql,
+	  list7/delete.tcl, list7/index-oracle.xql,
+	  list7/index-postgresql.xql, list7/index.adp, list7/index.tcl,
+	  list7/view-one.adp, list7/view-one.tcl, list7/x-disabled.gif,
+	  list7/x.gif: add 7th row of listbuilder demo: add a filter (needs
+	  oracle test)
+
+2006-02-11 16:41  jiml
+
+	* packages/acs-templating/www/doc/demo/list6/add-edit.tcl: finish
+	  up, make sure the add-edit.tcl refers to template_demo_note, not
+	  note
+
+2006-02-10 07:48  daveb
+
+	* etc/config.tcl: Set maxinput in nsopenssl module as well as
+	  nssock.
+
+2006-02-10 00:16  jiml
+
+	* packages/acs-templating/www/doc/demo/list6/delete.tcl: fix typos:
+	  note should really be template_demo_note
+
+2006-02-10 00:13  jiml
+
+	* packages/acs-templating/www/doc/demo/list6/add-edit.xql: add
+	  support for color column in the queries to get a note and update
+	  one
+
+2006-02-09 18:12  jiml
+
+	* packages/acs-templating/sql/oracle/demo-create.sql: Turn on the
+	  data model loading under oracle. (yes, BOLD move :)
+
+2006-02-09 17:34  jiml
+
+	* packages/acs-templating/www/doc/demo/list2/index-oracle.xql:
+	  correct no-data situation in where clause of oracle query
+
+2006-02-09 17:21  jiml
+
+	* packages/acs-templating/www/doc/demo/: list1a/index-oracle.xql,
+	  list1b/index-oracle.xql, list3/index-oracle.xql,
+	  list4/index-oracle.xql, list5/index-oracle.xql,
+	  list6/index-oracle.xql: in some queries oracle claimed the title
+	  column ambiguous; fixed.  in third thru sixth rows, got the
+	  orderby clause from listbuilder (oracle)
+
+2006-02-09 16:47  jiml
+
+	* packages/acs-templating/www/doc/demo/: index.html,
+	  list6/add-disabled.gif, list6/add-edit.adp, list6/add-edit.tcl,
+	  list6/add-edit.xql, list6/add.gif, list6/blank.gif,
+	  list6/delete-oracle.xql, list6/delete-postgresql.xql,
+	  list6/delete.tcl, list6/index-oracle.xql,
+	  list6/index-postgresql.xql, list6/index.adp, list6/index.tcl,
+	  list6/view-one.adp, list6/view-one.tcl, list6/x-disabled.gif,
+	  list6/x.gif: Add 6th row of listbuilder demo, adding non-bulk
+	  action to add new note.  Having a problem where the sql of adding
+	  a new note tells the wrong type to template_demo_note__new();
+	  this happens somewhere in the call to package_instantiate_object
+	  in the -new_data section of the form in add-edit.tcl
+
+2006-02-09 15:56  jiml
+
+	* packages/acs-templating/sql/postgresql/: demo-create.sql,
+	  template-demo-notes-create.sql: move the sample data include to
+	  where it belongs; reformat some code
+
+2006-02-09 15:00  hughb
+
+	*
+	  packages/acs-templating/sql/oracle/template-demo-notes-sample.sql:
+	  fix Oracle bug (procedure cannot return a value)
+
+2006-02-09 05:58  jiml
+
+	*
+	  packages/acs-templating/sql/oracle/template-demo-notes-sample.sql:
+	  for oracle it's sysdate, not now()... corrected those.
+
+2006-02-08 22:47  jiml
+
+	*
+	  packages/acs-templating/sql/postgresql/template-demo-notes-create.sql:
+	  activate the inserting of sample data on the postgres side; it
+	  works.
+
+2006-02-08 22:39  jiml
+
+	* packages/acs-templating/www/doc/demo/: index.html,
+	  list5/add-disabled.gif, list5/add-edit.adp, list5/add-edit.tcl,
+	  list5/add-edit.xql, list5/add.gif, list5/blank.gif,
+	  list5/delete-oracle.xql, list5/delete-postgresql.xql,
+	  list5/delete.tcl, list5/index-oracle.xql,
+	  list5/index-postgresql.xql, list5/index.adp, list5/index.tcl,
+	  list5/view-one.adp, list5/view-one.tcl: Add fifth row of
+	  listbuilder demos: add &quot;delete checked notes&quot; as bulk action
+
+2006-02-08 18:40  jiml
+
+	* packages/acs-templating/www/doc/demo/: index.html,
+	  list4/index-oracle.xql, list4/index-postgresql.xql,
+	  list4/index.adp, list4/index.tcl, list4/view-one.adp,
+	  list4/view-one.tcl: add fourth row to template demo page: link
+	  title to detail page
+
+2006-02-08 16:28  hughb
+
+	*
+	  packages/acs-templating/sql/oracle/template-demo-notes-create.sql:
+	  fix typos
+
+2006-02-08 16:25  jiml
+
+	*
+	  packages/acs-templating/sql/oracle/template-demo-notes-create.sql:
+	  fix silly typos
+
+2006-02-08 15:52  jiml
+
+	* packages/acs-templating/sql/oracle/demo-create.sql: arrange to
+	  load sample data; commented out for now
+
+2006-02-08 15:34  jiml
+
+	*
+	  packages/acs-templating/sql/oracle/template-demo-notes-sample.sql:
+	  create listbuilder sample data for oracle
+
+2006-02-06 07:54  jiml
+
+	* packages/acs-templating/sql/oracle/demo-create.sql: disabled
+	  loading the renamed notes package, as it's untested on oracle
+
+2006-02-06 05:08  jiml
+
+	* packages/acs-templating/www/doc/demo/list3/: index-oracle.xql,
+	  index-postgresql.xql, index.adp, index.tcl: add list3, the third
+	  row in the demo/index, showing orderbys
+
+2006-02-06 05:06  jiml
+
+	* packages/acs-templating/:
+	  sql/oracle/template-demo-notes-create.sql,
+	  sql/postgresql/template-demo-notes-create.sql,
+	  sql/postgresql/template-demo-notes-drop.sql,
+	  sql/postgresql/template-demo-notes-sample.sql,
+	  www/doc/demo/index.html, www/doc/demo/list2/index-oracle.xql,
+	  www/doc/demo/list2/index-postgresql.xql,
+	  www/doc/demo/list2/index.tcl: add column &quot;color&quot; to
+	  template_demo_notes table; add display for it in list2, add html
+	  row for list3 to the demo/index file
+
+2006-02-05 22:53  jiml
+
+	* packages/acs-templating/sql/postgresql/:
+	  template-demo-notes-create.sql, template-demo-notes-drop.sql,
+	  template-demo-notes-sample.sql: fixed problem with sample data
+	  for acs-templating demos of listbuilder
+
+2006-02-04 20:38  jiml
+
+	*
+	  packages/acs-templating/sql/postgresql/template-demo-notes-sample.sql:
+	  sample data is not working, so disable that function (so
+	  acs-templating can install...)
+
+2006-02-04 19:36  jiml
+
+	* packages/acs-templating/sql/postgresql/:
+	  template-demo-notes-create.sql, template-demo-notes-sample.sql:
+	  fix typos in data model, add sample data for demo
+
+2006-02-04 15:07  jiml
+
+	* packages/acs-templating/www/doc/demo/: index.html,
+	  list2/index-oracle.xql, list2/index-postgresql.xql,
+	  list2/index.adp, list2/index.tcl: Add row to acs-templating demo
+	  page, showing that you can add columns to a list
+
+2006-02-04 11:09  jiml
+
+	* packages/acs-templating/www/doc/demo/: index.html,
+	  list1a/index-oracle.xql, list1a/index-postgresql.xql,
+	  list1a/index.adp, list1a/index.tcl, list1b/index-oracle.xql,
+	  list1b/index-postgresql.xql, list1b/index.adp, list1b/index.tcl:
+	  Add first listbuilder row in acs-templating demo page: Plain
+	  list, plain list using master template
+
+2006-02-03 17:54  jiml
+
+	* packages/acs-templating/sql/: oracle/demo-create.sql,
+	  oracle/demo-drop.sql, oracle/template-demo-notes-create.sql,
+	  oracle/template-demo-notes-drop.sql, postgresql/demo-create.sql,
+	  postgresql/demo-drop.sql,
+	  postgresql/template-demo-notes-create.sql,
+	  postgresql/template-demo-notes-drop.sql: notes-like data model
+	  for templating demo page to facilitate listbuilder tut
+
+2006-01-30 15:51  hughb
+
+	* packages/acs-service-contract/www/binding-uninstall-oracle.xql:
+	  Fix Oracle bug -- oracle sql was calling a function where the
+	  only API is a procedure. Could never have worked.
+
+2006-01-27 08:33  hughb
+
+	* packages/intermedia-driver/sql/oracle/search-ctxsys.sql: Add
+	  important ctxsys file
+
+2006-01-27 08:03  daveb
+
+	* packages/intermedia-driver/: intermedia-driver.info,
+	  sql/oracle/load-site-wide-search, sql/oracle/search-create.sql,
+	  sql/oracle/search-drop.sql, sql/oracle/search-from-scratch.sql,
+	  sql/oracle/search-index-create.sql,
+	  sql/oracle/search-index-drop.sql,
+	  sql/oracle/search-packages-create.sql,
+	  sql/oracle/search-packages-drop.sql,
+	  sql/oracle/search-sc-create.sql, sql/oracle/search-sc-drop.sql,
+	  sql/oracle/search-tables-create.sql,
+	  sql/oracle/search-tables-drop.sql,
+	  sql/oracle/syndication-create.sql,
+	  sql/oracle/syndication-drop.sql, tcl/intermedia-procs.tcl: Add
+	  intermdia-driver Oracle search FtsEngineDriver
+
+2006-01-04 01:50  timoh
+
+	* packages/acs-mail-lite/:
+	  catalog/acs-mail-lite.de_DE.ISO-8859-1.xml,
+	  catalog/acs-mail-lite.en_US.ISO-8859-1.xml,
+	  tcl/acs-mail-lite-procs-postgresql.xql,
+	  tcl/acs-mail-lite-procs.tcl: fixing mail sending
+
+2005-12-29 12:20  jader
+
+	* etc/config.tcl: Unify the maxinput and recvwait parameters
+	  between nsopenssl and normal connections.
+
+2005-12-27 12:20  timoh
+
+	* packages/acs-mail-lite/lib/email.tcl: fixing file-ids in form
+
+2005-12-18 06:16  maltes
+
+	* packages/acs-mail-lite/lib/email.tcl: Fixed issue with version_id
+	  vs. file_id and made sure the title is set correctly
+
+2005-12-14 09:13  timoh
+
+	* packages/acs-mail-lite/catalog/:
+	  acs-mail-lite.de_DE.ISO-8859-1.xml,
+	  acs-mail-lite.en_US.ISO-8859-1.xml: fixed new package version
+
+2005-12-14 07:27  eduardop
+
+	* packages/acs-content-repository/tcl/content-extlink-procs.tcl:
+	  Fix Bug #2712: param extlink_id in content::extlink::new should
+	  not be required
+
+2005-12-13 05:34  ncarroll
+
+	* packages/acs-templating/tcl/richtext-procs.tcl: Fixed bug #2727.
+
+2005-12-12 03:32  leed
+
+	* packages/acs-tcl/tcl/form-processing-procs.tcl: Fixed typo.
+
+2005-12-12 01:56  leed
+
+	* packages/acs-tcl/tcl/form-processing-procs.tcl: Fixed a bug that
+	  deletes previously defined validate blocks when extending an
+	  ad_form.
+
+2005-11-29 03:28  maltes
+
+	* packages/acs-mail-lite/: acs-mail-lite.info,
+	  sql/postgresql/acs-mail-lite-create.sql,
+	  tcl/acs-mail-lite-procs-oracle.xql,
+	  tcl/acs-mail-lite-procs-postgresql.xql,
+	  tcl/acs-mail-lite-procs.xql: Mails are send to parties, not to
+	  users. Therefore the logging and bouncing should belong to
+	  parties, not to users.
+
+2005-11-21 09:49  daveb
+
+	* packages/acs-templating/tcl/parse-procs.tcl: Fix array reference
+
+2005-11-21 09:32  daveb
+
+	* packages/acs-templating/tcl/: parse-procs.tcl,
+	  test/parse-test-procs.tcl: Merge fix for bug#2691 from 5.2
+	  branch.
+
+2005-11-18 02:40  ncarroll
+
+	* packages/acs-subsite/tcl/: rel-types-procs-postgresql.xql,
+	  rel-types-procs.tcl: Added a proc to delete roles.  The proc also
+	  deletes the translations that were created in the corresponding
+	  proc that created the role.
+
+2005-11-11 12:32  gustafn
+
+	* packages/acs-templating/www/resources/xinha-nightly/: dialog.js,
+	  htmlarea.js, popupwin.js, examples/full_example.js,
+	  plugins/BackgroundImage/background-image.js,
+	  plugins/BackgroundImage/popups/bgimage.html, plugins/CSS/css.js,
+	  plugins/CharCounter/char-counter.js,
+	  plugins/CharacterMap/character-map.js,
+	  plugins/CharacterMap/popups/select_character.html,
+	  plugins/ClientsideSpellcheck/clientside-spellcheck.js,
+	  plugins/ContextMenu/context-menu.js,
+	  plugins/DoubleClick/double-click.js,
+	  plugins/DynamicCSS/dynamiccss.js, plugins/EditTag/edit-tag.js,
+	  plugins/EnterParagraphs/enter-paragraphs.js,
+	  plugins/Equation/equation.js,
+	  plugins/Equation/popups/operations.html,
+	  plugins/Filter/filter.js, plugins/Filter/filters/paragraph.js,
+	  plugins/Filter/filters/word.js,
+	  plugins/FindReplace/find-replace.js,
+	  plugins/FindReplace/fr_engine.js,
+	  plugins/FindReplace/popups/find_replace.html,
+	  plugins/FormOperations/form-operations.js,
+	  plugins/Forms/forms.js, plugins/Forms/popups/fieldset.html,
+	  plugins/Forms/popups/form.html, plugins/Forms/popups/input.html,
+	  plugins/Forms/popups/label.html,
+	  plugins/Forms/popups/select.html,
+	  plugins/Forms/popups/textarea.html,
+	  plugins/FullPage/full-page.js,
+	  plugins/FullPage/popups/docprop.html,
+	  plugins/GetHtml/get-html.js,
+	  plugins/HorizontalRule/popups/edit_horizontal_rule.html,
+	  plugins/HtmlTidy/html-tidy-logic.php,
+	  plugins/HtmlTidy/html-tidy.js, plugins/ImageManager/backend.php,
+	  plugins/ImageManager/config.inc.php,
+	  plugins/ImageManager/editor.php,
+	  plugins/ImageManager/editorFrame.php,
+	  plugins/ImageManager/image-manager.js,
+	  plugins/ImageManager/images.php,
+	  plugins/ImageManager/manager.php,
+	  plugins/ImageManager/resizer.php,
+	  plugins/ImageManager/thumbs.php,
+	  plugins/ImageManager/Classes/Files.php,
+	  plugins/ImageManager/Classes/GD.php,
+	  plugins/ImageManager/Classes/IM.php,
+	  plugins/ImageManager/Classes/ImageEditor.php,
+	  plugins/ImageManager/Classes/ImageManager.php,
+	  plugins/ImageManager/Classes/NetPBM.php,
+	  plugins/ImageManager/Classes/Thumbnail.php,
+	  plugins/ImageManager/Classes/Transform.php,
+	  plugins/ImageManager/assets/dialog.js,
+	  plugins/ImageManager/assets/editor.js,
+	  plugins/ImageManager/assets/editorFrame.js,
+	  plugins/ImageManager/assets/images.js,
+	  plugins/ImageManager/assets/manager.js,
+	  plugins/ImageManager/assets/popup.js,
+	  plugins/InsertAnchor/popups/insert_anchor.html,
+	  plugins/InsertMarquee/insert-marquee.js,
+	  plugins/InsertMarquee/popups/insert_marquee.html,
+	  plugins/InsertPagebreak/insert-pagebreak.js,
+	  plugins/InsertPicture/InsertPicture.php,
+	  plugins/InsertPicture/insert-picture.js,
+	  plugins/InsertPicture/viewpicture.html,
+	  plugins/InsertSmiley/insert-smiley.js,
+	  plugins/InsertSmiley/popups/insertsmiley.html,
+	  plugins/InsertWords/insert-words.js,
+	  plugins/LangMarks/lang-marks.js, plugins/Linker/linker.js,
+	  plugins/Linker/dTree/dtree.js, plugins/ListType/list-type.js,
+	  plugins/NoteServer/note-server.js,
+	  plugins/NoteServer/popups/codenote.html,
+	  plugins/OacsFs/fullscreen.adp, plugins/OacsFs/fullscreen.tcl,
+	  plugins/OacsFs/oacs-fs.css, plugins/OacsFs/oacs-fs.js,
+	  plugins/OacsFs/img/close.gif,
+	  plugins/OacsFs/img/insert-ilink.gif,
+	  plugins/OacsFs/img/insert-image.gif,
+	  plugins/OacsFs/img/qmark.gif, plugins/OacsFs/img/up.gif,
+	  plugins/OacsFs/popups/blank.html,
+	  plugins/OacsFs/popups/file-selector.adp,
+	  plugins/OacsFs/popups/file-selector.tcl,
+	  plugins/OacsFs/popups/insert-ilink.adp,
+	  plugins/OacsFs/popups/insert-ilink.tcl,
+	  plugins/OacsFs/popups/insert-ilink.xql,
+	  plugins/OacsFs/popups/insert-image.adp,
+	  plugins/OacsFs/popups/insert-image.tcl,
+	  plugins/PasteText/paste-text.js, plugins/QuickTag/quick-tag.js,
+	  plugins/QuickTag/popups/quicktag.html,
+	  plugins/SpellChecker/spell-check-logic.cgi,
+	  plugins/SpellChecker/spell-check-logic.php,
+	  plugins/SpellChecker/spell-check-ui.html,
+	  plugins/SpellChecker/spell-check-ui.js,
+	  plugins/SpellChecker/spell-checker.js,
+	  plugins/Stylist/stylist.js,
+	  plugins/TableOperations/table-operations.js,
+	  plugins/Template/template.js,
+	  plugins/Template/popups/template.html,
+	  plugins/UnFormat/un-format.js,
+	  plugins/UnFormat/popups/unformat.html, popups/editor_help.html,
+	  popups/insert_image.html, popups/insert_table.html,
+	  popups/link.html, popups/popup.js, skins/blue-look/skin.css,
+	  skins/blue-metallic/skin.css, skins/green-look/skin.css,
+	  skins/inditreuse/skin.css, skins/titan/skin.css,
+	  skins/xp-blue/skin.css, skins/xp-green/skin.css: New version of
+	  xinha, new plugin OacsFS for xinha (file-selector for OACS).
+
+2005-11-10 07:00  donb
+
+	* packages/acs-mail-lite/tcl/acs-mail-lite-procs.xql: Oops,
+	  yesterday's commit was partially bogus, tested these queries at
+	  Heidelberg this time ...
+
+2005-11-09 17:14  donb
+
+	* packages/acs-mail-lite/tcl/acs-mail-lite-procs.xql: Replaced two
+	  slow queries using cc_users with their faster equivalent using
+	  parties and users.  Makes a huge difference on Oracle when there
+	  are many, many users (49,000 in this case).  And yes, I checked,
+	  the original queries used indexes galore, Oracle was doing as
+	  well as can be expected.
+
+2005-11-08 10:24  dirkg
+
+	* packages/search/: search.info,
+	  catalog/search.en_US.ISO-8859-1.xml,
+	  sql/oracle/load-site-wide-search, sql/oracle/search-create.sql,
+	  sql/oracle/search-from-scratch.sql,
+	  sql/oracle/search-index-create.sql,
+	  sql/oracle/search-index-drop.sql,
+	  sql/oracle/search-packages-create.sql,
+	  sql/oracle/search-packages-drop.sql,
+	  sql/oracle/search-sc-create.sql,
+	  sql/oracle/search-tables-create.sql,
+	  sql/oracle/search-tables-drop.sql,
+	  sql/oracle/syndication-create.sql,
+	  sql/oracle/syndication-drop.sql, tcl/search-convert-procs.tcl,
+	  tcl/search-init.tcl, tcl/search-procs-oracle.xql,
+	  tcl/search-procs.tcl, tcl/search-procs.xql,
+	  www/advanced-search.adp, www/index.adp, www/index.tcl,
+	  www/search.adp, www/search.tcl,
+	  www/admin/delete-object-type-from-index.tcl,
+	  www/admin/index-missing-objects.tcl, www/admin/index.adp,
+	  www/admin/index.tcl, www/admin/list-object.adp,
+	  www/admin/list-object.tcl, www/admin/list-objects.adp,
+	  www/admin/list-objects.tcl, www/admin/reindex-calitem.tcl,
+	  www/admin/reindex-faq.tcl, www/admin/reindex-file-storage.tcl,
+	  www/admin/reindex-forums-message.tcl,
+	  www/admin/reindex-forums.tcl, www/admin/reindex-news.tcl,
+	  www/admin/reindex-one-item.tcl, www/admin/reindex-phb-person.tcl,
+	  www/admin/reindex-static-portal.tcl,
+	  www/admin/reindex-survey.tcl: commiting search work from sloan
+
+2005-11-02 01:20  gustafn
+
+	* packages/acs-templating/www/resources/xinha-nightly/: dialog.js,
+	  htmlarea.css, htmlarea.js, inline-dialog.js, license.txt,
+	  panel-dialog.js, popupwin.js, contrib/lc_parse_strings.php,
+	  examples/Extended.html, examples/custom.css,
+	  examples/dynamic.css, examples/ext_example-body.html,
+	  examples/ext_example-dest.php, examples/ext_example-menu.php,
+	  examples/ext_example.html, examples/full_example-body.html,
+	  examples/full_example-menu.html, examples/full_example.css,
+	  examples/full_example.html, examples/full_example.js,
+	  examples/stylist.css, examples/testbed.html, images/ed_about.gif,
+	  images/ed_align.gif, images/ed_align_center.gif,
+	  images/ed_align_justify.gif, images/ed_align_left.gif,
+	  images/ed_align_right.gif, images/ed_blank.gif,
+	  images/ed_buttons_main.gif, images/ed_charmap.gif,
+	  images/ed_clearfonts.gif, images/ed_color_bg.gif,
+	  images/ed_color_fg.gif, images/ed_copy.gif, images/ed_custom.gif,
+	  images/ed_cut.gif, images/ed_delete.gif,
+	  images/ed_format_bold.gif, images/ed_format_italic.gif,
+	  images/ed_format_strike.gif, images/ed_format_sub.gif,
+	  images/ed_format_sup.gif, images/ed_format_underline.gif,
+	  images/ed_help.gif, images/ed_hr.gif, images/ed_html.gif,
+	  images/ed_image.gif, images/ed_indent_less.gif,
+	  images/ed_indent_more.gif, images/ed_killword.gif,
+	  images/ed_left_to_right.gif, images/ed_link.gif,
+	  images/ed_list_bullet.gif, images/ed_list_num.gif,
+	  images/ed_overwrite.gif, images/ed_paste.gif,
+	  images/ed_print.gif, images/ed_redo.gif,
+	  images/ed_right_to_left.gif, images/ed_rmformat.gif,
+	  images/ed_save.gif, images/ed_save.png, images/ed_saveas.gif,
+	  images/ed_selectall.gif, images/ed_show_border.gif,
+	  images/ed_splitblock.gif, images/ed_splitcel.gif,
+	  images/ed_undo.gif, images/ed_word_cleaner.gif,
+	  images/fullscreen_maximize.gif, images/fullscreen_minimize.gif,
+	  images/insert_table.gif, images/insertfilelink.gif,
+	  images/insertmacro.png, images/tidy.gif,
+	  images/toggle_borders.gif, lang/b5.js, lang/ch.js, lang/cz.js,
+	  lang/da.js, lang/de.js, lang/ee.js, lang/el.js, lang/es.js,
+	  lang/fi.js, lang/fr.js, lang/gb.js, lang/he.js, lang/hu.js,
+	  lang/it.js, lang/ja.js, lang/lt.js, lang/lv.js, lang/nb.js,
+	  lang/nl.js, lang/no.js, lang/pl.js, lang/pt_br.js, lang/ro.js,
+	  lang/ru.js, lang/se.js, lang/si.js, lang/vn.js,
+	  popups/about.html, popups/blank.html, popups/color_picker.js,
+	  popups/custom2.html, popups/editor_help.html,
+	  popups/insert_image.html, popups/insert_table.html,
+	  popups/link.html, popups/old_insert_image.html, popups/popup.css,
+	  popups/popup.js, popups/select_color.html,
+	  skins/blue-look/button-background.png,
+	  skins/blue-look/separator.gif, skins/blue-look/skin.css,
+	  skins/blue-metallic/button-background.png,
+	  skins/blue-metallic/separator.gif, skins/blue-metallic/skin.css,
+	  skins/green-look/button-background.gif,
+	  skins/green-look/separator.gif, skins/green-look/skin.css,
+	  skins/inditreuse/README, skins/inditreuse/back.png,
+	  skins/inditreuse/button-background.png,
+	  skins/inditreuse/hover.png, skins/inditreuse/selected.png,
+	  skins/inditreuse/separator.png, skins/inditreuse/skin.css,
+	  skins/titan/README, skins/titan/back.png,
+	  skins/titan/button-background.png, skins/titan/hover.png,
+	  skins/titan/selected.png, skins/titan/separator.png,
+	  skins/titan/skin.css, skins/xp-blue/back.png,
+	  skins/xp-blue/button-background.png, skins/xp-blue/hover.png,
+	  skins/xp-blue/selected.png, skins/xp-blue/separator.png,
+	  skins/xp-blue/skin.css, skins/xp-green/back.png,
+	  skins/xp-green/button-background.png, skins/xp-green/hover.png,
+	  skins/xp-green/selected.png, skins/xp-green/separator.png,
+	  skins/xp-green/skin.css: initial-checkin
+
+2005-11-02 00:55  gustafn
+
+	* packages/acs-templating/www/resources/xinha-nightly/:
+	  images/de/bold.gif, images/de/italic.gif,
+	  images/de/underline.gif, plugins/Abbreviation/abbreviation.js,
+	  plugins/Abbreviation/img/ed_abbreviation.gif,
+	  plugins/Abbreviation/popups/abbreviation.html,
+	  plugins/BackgroundImage/background-image.js,
+	  plugins/BackgroundImage/img/ed_bgimage.gif,
+	  plugins/BackgroundImage/popups/bgimage.html,
+	  plugins/CharacterMap/character-map.js,
+	  plugins/CharacterMap/img/ed_charmap.gif,
+	  plugins/CharacterMap/lang/de.js, plugins/CharacterMap/lang/fr.js,
+	  plugins/CSS/css.js, plugins/CharCounter/char-counter.js,
+	  plugins/CharCounter/lang/de.js, plugins/CharCounter/lang/fr.js,
+	  plugins/CharacterMap/popups/select_character.html,
+	  plugins/ClientsideSpellcheck/clientside-spellcheck.js,
+	  plugins/ClientsideSpellcheck/img/clientside-spellcheck.gif,
+	  plugins/ClientsideSpellcheck/img/he-spell-check.gif,
+	  plugins/ContextMenu/1.pl, plugins/ContextMenu/context-menu.js,
+	  plugins/ContextMenu/lang/de.js, plugins/ContextMenu/lang/el.js,
+	  plugins/ContextMenu/lang/fr.js, plugins/ContextMenu/lang/he.js,
+	  plugins/ContextMenu/lang/nl.js, plugins/ContextMenu/lang/no.js,
+	  plugins/DoubleClick/double-click.js,
+	  plugins/DynamicCSS/dynamiccss.js, plugins/DynamicCSS/lang/de.js,
+	  plugins/DynamicCSS/lang/fr.js, plugins/EditTag/edit-tag.js,
+	  plugins/EditTag/img/ed_edit_tag.gif,
+	  plugins/EditTag/popups/edit_tag.html,
+	  plugins/EnterParagraphs/enter-paragraphs.js,
+	  plugins/Equation/equation.js, plugins/Equation/img/abs_value.gif,
+	  plugins/Equation/img/diag_fraction.gif,
+	  plugins/Equation/img/divide.gif,
+	  plugins/Equation/img/dsp_greater_equal.gif,
+	  plugins/Equation/img/dsp_less_equal.gif,
+	  plugins/Equation/img/dsp_notequal.gif,
+	  plugins/Equation/img/equation.gif,
+	  plugins/Equation/img/equation.old.gif,
+	  plugins/Equation/img/greater_equal_than.gif,
+	  plugins/Equation/img/hor_fraction.gif,
+	  plugins/Equation/img/less_equal_than.gif,
+	  plugins/Equation/img/mul.gif, plugins/Equation/img/notequal.gif,
+	  plugins/Equation/img/parenthesis.gif,
+	  plugins/Equation/img/root.gif,
+	  plugins/Equation/img/square_root.gif,
+	  plugins/Equation/lang/de.js, plugins/Equation/lang/no.js,
+	  plugins/Equation/popups/operations.html,
+	  plugins/Filter/filter.js, plugins/Filter/filters/paragraph.js,
+	  plugins/Filter/filters/word.js, plugins/Filter/img/ed_filter.gif,
+	  plugins/FindReplace/find-replace.js,
+	  plugins/FindReplace/fr_engine.js,
+	  plugins/FindReplace/img/ed_find.gif,
+	  plugins/FindReplace/lang/pt_br.js,
+	  plugins/FindReplace/popups/find_replace.html,
+	  plugins/FormOperations/form-operations.js,
+	  plugins/FormOperations/panel.html,
+	  plugins/FormOperations/img/buttons.gif, plugins/Forms/forms.js,
+	  plugins/Forms/img/ed_button.gif,
+	  plugins/Forms/img/ed_checkbox.gif,
+	  plugins/Forms/img/ed_fieldset.gif, plugins/Forms/img/ed_file.gif,
+	  plugins/Forms/img/ed_form.gif, plugins/Forms/img/ed_hidden.gif,
+	  plugins/Forms/img/ed_image.gif, plugins/Forms/img/ed_label.gif,
+	  plugins/Forms/img/ed_password.gif,
+	  plugins/Forms/img/ed_radio.gif, plugins/Forms/img/ed_reset.gif,
+	  plugins/Forms/img/ed_select.gif, plugins/Forms/img/ed_submit.gif,
+	  plugins/Forms/img/ed_text.gif, plugins/Forms/img/ed_textarea.gif,
+	  plugins/Forms/popups/fieldset.html,
+	  plugins/Forms/popups/form.html, plugins/Forms/popups/input.html,
+	  plugins/Forms/popups/label.html,
+	  plugins/Forms/popups/select.html,
+	  plugins/Forms/popups/textarea.html,
+	  plugins/FullPage/full-page.js, plugins/FullPage/img/docprop.gif,
+	  plugins/FullPage/lang/de.js, plugins/FullPage/lang/fr.js,
+	  plugins/FullPage/lang/he.js, plugins/FullPage/lang/ro.js,
+	  plugins/FullPage/popups/docprop.html,
+	  plugins/FullScreen/full-screen.js, plugins/GetHtml/get-html.js,
+	  plugins/HorizontalRule/horizontal-rule.js,
+	  plugins/HorizontalRule/lang/de.js,
+	  plugins/HorizontalRule/popups/edit_horizontal_rule.html,
+	  plugins/HtmlTidy/html-tidy-logic.php,
+	  plugins/HtmlTidy/html-tidy.js,
+	  plugins/HtmlTidy/img/html-tidy.gif, plugins/HtmlTidy/lang/no.js,
+	  plugins/ImageManager/backend.php,
+	  plugins/ImageManager/config.inc.php,
+	  plugins/ImageManager/editor.php,
+	  plugins/ImageManager/editorFrame.php,
+	  plugins/ImageManager/image-manager.js,
+	  plugins/ImageManager/images.php,
+	  plugins/ImageManager/manager.php,
+	  plugins/ImageManager/newFolder.html,
+	  plugins/ImageManager/resizer.php,
+	  plugins/ImageManager/thumbs.php,
+	  plugins/ImageManager/assets/EditorContent.js,
+	  plugins/ImageManager/assets/dialog.js,
+	  plugins/ImageManager/assets/editor.js,
+	  plugins/ImageManager/assets/editorFrame.js,
+	  plugins/ImageManager/assets/imagelist.css,
+	  plugins/ImageManager/Classes/Files.php,
+	  plugins/ImageManager/Classes/GD.php,
+	  plugins/ImageManager/Classes/IM.php,
+	  plugins/ImageManager/Classes/ImageEditor.php,
+	  plugins/ImageManager/Classes/ImageManager.php,
+	  plugins/ImageManager/Classes/NetPBM.php,
+	  plugins/ImageManager/Classes/Thumbnail.php,
+	  plugins/ImageManager/assets/images.js,
+	  plugins/ImageManager/assets/manager.css,
+	  plugins/ImageManager/assets/manager.js,
+	  plugins/ImageManager/assets/popup.js,
+	  plugins/ImageManager/assets/wz_jsgraphics.js,
+	  plugins/ImageManager/Classes/Transform.php,
+	  plugins/ImageManager/demo_images/linux/linux.gif,
+	  plugins/ImageManager/img/btnFolderNew.gif,
+	  plugins/ImageManager/img/btnFolderUp.gif,
+	  plugins/ImageManager/img/btn_cancel.gif,
+	  plugins/ImageManager/img/btn_ok.gif,
+	  plugins/ImageManager/img/crop.gif,
+	  plugins/ImageManager/img/default.gif,
+	  plugins/ImageManager/img/div.gif,
+	  plugins/ImageManager/img/dots.gif,
+	  plugins/ImageManager/img/edit_active.gif,
+	  plugins/ImageManager/img/edit_pencil.gif,
+	  plugins/ImageManager/img/edit_trash.gif,
+	  plugins/ImageManager/img/folder.gif,
+	  plugins/ImageManager/img/hand.gif,
+	  plugins/ImageManager/img/locked.gif,
+	  plugins/ImageManager/img/measure.gif,
+	  plugins/ImageManager/img/noimages.gif,
+	  plugins/ImageManager/img/rotate.gif,
+	  plugins/ImageManager/img/save.gif,
+	  plugins/ImageManager/img/scale.gif,
+	  plugins/ImageManager/img/t_black.gif,
+	  plugins/ImageManager/img/t_white.gif,
+	  plugins/ImageManager/img/unlocked2.gif,
+	  plugins/ImageManager/lang/de.js, plugins/ImageManager/lang/no.js,
+	  plugins/InsertAnchor/insert-anchor.js,
+	  plugins/InsertAnchor/img/insert-anchor.gif,
+	  plugins/InsertAnchor/lang/no.js,
+	  plugins/InsertAnchor/popups/insert_anchor.html,
+	  plugins/InsertMarquee/insert-marquee.js,
+	  plugins/InsertMarquee/img/ed_marquee.gif,
+	  plugins/InsertMarquee/popups/insert_marquee.html,
+	  plugins/InsertPagebreak/insert-pagebreak.js,
+	  plugins/InsertPagebreak/img/pagebreak.gif,
+	  plugins/InsertPicture/InsertPicture.php,
+	  plugins/InsertPicture/insert-picture.js,
+	  plugins/InsertPicture/viewpicture.html,
+	  plugins/InsertPicture/img/btn_open.gif,
+	  plugins/InsertPicture/img/nopic.gif,
+	  plugins/InsertPicture/lang/de.js,
+	  plugins/InsertPicture/lang/no.js,
+	  plugins/InsertSmiley/insert-smiley.js,
+	  plugins/InsertSmiley/img/ed_smiley.gif,
+	  plugins/InsertSmiley/popups/insertsmiley.html,
+	  plugins/InsertSmiley/smileys/0009.gif,
+	  plugins/InsertSmiley/smileys/0010.gif,
+	  plugins/InsertSmiley/smileys/0011.gif,
+	  plugins/InsertSmiley/smileys/0013.gif,
+	  plugins/InsertSmiley/smileys/0015.gif,
+	  plugins/InsertSmiley/smileys/0016.gif,
+	  plugins/InsertSmiley/smileys/0018.gif,
+	  plugins/InsertSmiley/smileys/0019.gif,
+	  plugins/InsertSmiley/smileys/0020.gif,
+	  plugins/InsertSmiley/smileys/0021.gif,
+	  plugins/InsertSmiley/smileys/0022.gif,
+	  plugins/InsertSmiley/smileys/0023.gif,
+	  plugins/InsertSmiley/smileys/0024.gif,
+	  plugins/InsertSmiley/smileys/0025.gif,
+	  plugins/InsertSmiley/smileys/0026.gif,
+	  plugins/InsertSmiley/smileys/0027.gif,
+	  plugins/InsertSmiley/smileys/0028.gif,
+	  plugins/InsertSmiley/smileys/0029.gif,
+	  plugins/InsertSmiley/smileys/0030.gif,
+	  plugins/InsertSmiley/smileys/0031.gif,
+	  plugins/InsertSmiley/smileys/0033.gif,
+	  plugins/InsertSmiley/smileys/0036.gif,
+	  plugins/InsertSmiley/smileys/0038.gif,
+	  plugins/InsertSmiley/smileys/0039.gif,
+	  plugins/InsertSmiley/smileys/0041.gif,
+	  plugins/InsertSmiley/smileys/0042.gif,
+	  plugins/InsertSmiley/smileys/0043.gif,
+	  plugins/InsertSmiley/smileys/0044.gif,
+	  plugins/InsertSmiley/smileys/0045.gif,
+	  plugins/InsertSmiley/smileys/0046.gif,
+	  plugins/InsertSmiley/smileys/0047.gif,
+	  plugins/InsertSmiley/smileys/0048.gif,
+	  plugins/InsertSmiley/smileys/0049.gif,
+	  plugins/InsertSmiley/smileys/0051.gif,
+	  plugins/InsertSmiley/smileys/0052.gif,
+	  plugins/InsertSmiley/smileys/0055.gif,
+	  plugins/InsertSmiley/smileys/0056.gif,
+	  plugins/InsertSmiley/smileys/0057.gif,
+	  plugins/InsertSmiley/smileys/0058.gif,
+	  plugins/InsertSmiley/smileys/0059.gif,
+	  plugins/InsertSmiley/smileys/0060.gif,
+	  plugins/InsertSmiley/smileys/0061.gif,
+	  plugins/InsertSmiley/smileys/0062.gif,
+	  plugins/InsertSmiley/smileys/0064.gif,
+	  plugins/InsertSmiley/smileys/0065.gif,
+	  plugins/InsertSmiley/smileys/0066.gif,
+	  plugins/InsertSmiley/smileys/0067.gif,
+	  plugins/InsertSmiley/smileys/0068.gif,
+	  plugins/InsertSmiley/smileys/0070.gif,
+	  plugins/InsertSmiley/smileys/0071.gif,
+	  plugins/InsertSmiley/smileys/0072.gif,
+	  plugins/InsertSmiley/smileys/0074.gif,
+	  plugins/InsertSmiley/smileys/0076.gif,
+	  plugins/InsertSmiley/smileys/0077.gif,
+	  plugins/InsertSmiley/smileys/0080.gif,
+	  plugins/InsertSmiley/smileys/0082.gif,
+	  plugins/InsertSmiley/smileys/0083.gif,
+	  plugins/InsertSmiley/smileys/0084.gif,
+	  plugins/InsertSmiley/smileys/0085.gif,
+	  plugins/InsertSmiley/smileys/0086.gif,
+	  plugins/InsertSmiley/smileys/0087.gif,
+	  plugins/InsertSmiley/smileys/0088.gif,
+	  plugins/InsertSmiley/smileys/0089.gif,
+	  plugins/InsertSmiley/smileys/0090.gif,
+	  plugins/InsertSmiley/smileys/0091.gif,
+	  plugins/InsertSmiley/smileys/0092.gif,
+	  plugins/InsertSmiley/smileys/0093.gif,
+	  plugins/InsertSmiley/smileys/0094.gif,
+	  plugins/InsertSmiley/smileys/0096.gif,
+	  plugins/InsertSmiley/smileys/0097.gif,
+	  plugins/InsertSmiley/smileys/0098.gif,
+	  plugins/InsertSmiley/smileys/0099.gif,
+	  plugins/InsertSmiley/smileys/0100.gif,
+	  plugins/InsertSmiley/smileys/0101.gif,
+	  plugins/InsertSmiley/smileys/0102.gif,
+	  plugins/InsertSmiley/smileys/0103.gif,
+	  plugins/InsertSmiley/smileys/0104.gif,
+	  plugins/InsertSmiley/smileys/0105.gif,
+	  plugins/InsertSmiley/smileys/0106.gif,
+	  plugins/InsertSmiley/smileys/0107.gif,
+	  plugins/InsertSmiley/smileys/0108.gif,
+	  plugins/InsertSmiley/smileys/0109.gif,
+	  plugins/InsertSmiley/smileys/0110.gif,
+	  plugins/InsertSmiley/smileys/0111.gif,
+	  plugins/InsertSmiley/smileys/0112.gif,
+	  plugins/InsertSmiley/smileys/0113.gif,
+	  plugins/InsertSmiley/smileys/0115.gif,
+	  plugins/InsertSmiley/smileys/0116.gif,
+	  plugins/InsertSmiley/smileys/0117.gif,
+	  plugins/InsertSmiley/smileys/0118.gif,
+	  plugins/InsertSmiley/smileys/0119.gif,
+	  plugins/InsertSmiley/smileys/0120.gif,
+	  plugins/InsertSmiley/smileys/0121.gif,
+	  plugins/InsertSmiley/smileys/0122.gif,
+	  plugins/InsertSmiley/smileys/0123.gif,
+	  plugins/InsertSmiley/smileys/0124.gif,
+	  plugins/InsertSmiley/smileys/0125.gif,
+	  plugins/InsertSmiley/smileys/0126.gif,
+	  plugins/InsertSmiley/smileys/0128.gif,
+	  plugins/InsertSmiley/smileys/0129.gif,
+	  plugins/InsertSmiley/smileys/0130.gif,
+	  plugins/InsertSmiley/smileys/0131.gif,
+	  plugins/InsertSmiley/smileys/0132.gif,
+	  plugins/InsertSmiley/smileys/0133.gif,
+	  plugins/InsertSmiley/smileys/0134.gif,
+	  plugins/InsertSmiley/smileys/0135.gif,
+	  plugins/InsertSmiley/smileys/0136.gif,
+	  plugins/InsertSmiley/smileys/0137.gif,
+	  plugins/InsertSmiley/smileys/0138.gif,
+	  plugins/InsertSmiley/smileys/0139.gif,
+	  plugins/InsertSmiley/smileys/0140.gif,
+	  plugins/InsertSmiley/smileys/0141.gif,
+	  plugins/InsertSmiley/smileys/0142.gif,
+	  plugins/InsertSmiley/smileys/0144.gif,
+	  plugins/InsertSmiley/smileys/0145.gif,
+	  plugins/InsertSmiley/smileys/0146.gif,
+	  plugins/InsertSmiley/smileys/0147.gif,
+	  plugins/InsertSmiley/smileys/0148.gif,
+	  plugins/InsertSmiley/smileys/0149.gif,
+	  plugins/InsertSmiley/smileys/0150.gif,
+	  plugins/InsertSmiley/smileys/0151.gif,
+	  plugins/InsertSmiley/smileys/0152.gif,
+	  plugins/InsertSmiley/smileys/0153.gif,
+	  plugins/InsertSmiley/smileys/0154.gif,
+	  plugins/InsertSmiley/smileys/0155.gif,
+	  plugins/InsertSmiley/smileys/0156.gif,
+	  plugins/InsertSmiley/smileys/0157.gif,
+	  plugins/InsertSmiley/smileys/0158.gif,
+	  plugins/InsertSmiley/smileys/0159.gif,
+	  plugins/InsertSmiley/smileys/0160.gif,
+	  plugins/InsertSmiley/smileys/0161.gif,
+	  plugins/InsertSmiley/smileys/0162.gif,
+	  plugins/InsertSmiley/smileys/0163.gif,
+	  plugins/InsertSmiley/smileys/0164.gif,
+	  plugins/InsertSmiley/smileys/0165.gif,
+	  plugins/InsertSmiley/smileys/0166.gif,
+	  plugins/InsertSmiley/smileys/0167.gif,
+	  plugins/InsertSmiley/smileys/0168.gif,
+	  plugins/InsertSmiley/smileys/0169.gif,
+	  plugins/InsertSmiley/smileys/0170.gif,
+	  plugins/InsertSmiley/smileys/0171.gif,
+	  plugins/InsertSmiley/smileys/0172.gif,
+	  plugins/InsertSmiley/smileys/0174.gif,
+	  plugins/InsertSmiley/smileys/0175.gif,
+	  plugins/InsertSmiley/smileys/0176.gif,
+	  plugins/InsertSmiley/smileys/0177.gif,
+	  plugins/InsertSmiley/smileys/0178.gif,
+	  plugins/InsertSmiley/smileys/0179.gif,
+	  plugins/InsertSmiley/smileys/0180.gif,
+	  plugins/InsertSmiley/smileys/0181.gif,
+	  plugins/InsertSmiley/smileys/0182.gif,
+	  plugins/InsertSmiley/smileys/0183.gif,
+	  plugins/InsertSmiley/smileys/0184.gif,
+	  plugins/InsertSmiley/smileys/0185.gif,
+	  plugins/InsertSmiley/smileys/0186.gif,
+	  plugins/InsertSmiley/smileys/0187.gif,
+	  plugins/InsertSmiley/smileys/0188.gif,
+	  plugins/InsertSmiley/smileys/0189.gif,
+	  plugins/InsertSmiley/smileys/0190.gif,
+	  plugins/InsertSmiley/smileys/0192.gif,
+	  plugins/InsertSmiley/smileys/0193.gif,
+	  plugins/InsertSmiley/smileys/0194.gif,
+	  plugins/InsertSmiley/smileys/0195.gif,
+	  plugins/InsertSmiley/smileys/0196.gif,
+	  plugins/InsertSmiley/smileys/0197.gif,
+	  plugins/InsertSmiley/smileys/0198.gif,
+	  plugins/InsertSmiley/smileys/0199.gif,
+	  plugins/InsertSmiley/smileys/0200.gif,
+	  plugins/InsertSmiley/smileys/0201.gif,
+	  plugins/InsertSmiley/smileys/0202.gif,
+	  plugins/InsertSmiley/smileys/0205.gif,
+	  plugins/InsertSmiley/smileys/0206.gif,
+	  plugins/InsertSmiley/smileys/0207.gif,
+	  plugins/InsertSmiley/smileys/0208.gif,
+	  plugins/InsertSmiley/smileys/0209.gif,
+	  plugins/InsertSmiley/smileys/0210.gif,
+	  plugins/InsertSmiley/smileys/0211.gif,
+	  plugins/InsertSmiley/smileys/0212.gif,
+	  plugins/InsertSmiley/smileys/0213.gif,
+	  plugins/InsertSmiley/smileys/0214.gif,
+	  plugins/InsertSmiley/smileys/0215.gif,
+	  plugins/InsertSmiley/smileys/0216.gif,
+	  plugins/InsertSmiley/smileys/0217.gif,
+	  plugins/InsertSmiley/smileys/0218.gif,
+	  plugins/InsertSmiley/smileys/0219.gif,
+	  plugins/InsertSmiley/smileys/0220.gif,
+	  plugins/InsertSmiley/smileys/0222.gif,
+	  plugins/InsertSmiley/smileys/0223.gif,
+	  plugins/InsertSmiley/smileys/0224.gif,
+	  plugins/InsertSmiley/smileys/0225.gif,
+	  plugins/InsertSmiley/smileys/0226.gif,
+	  plugins/InsertSmiley/smileys/0227.gif,
+	  plugins/InsertSmiley/smileys/0228.gif,
+	  plugins/InsertSmiley/smileys/0229.gif,
+	  plugins/InsertSmiley/smileys/0230.gif,
+	  plugins/InsertSmiley/smileys/0231.gif,
+	  plugins/InsertSmiley/smileys/0232.gif,
+	  plugins/InsertSmiley/smileys/0233.gif,
+	  plugins/InsertSmiley/smileys/0234.gif,
+	  plugins/InsertSmiley/smileys/0235.gif,
+	  plugins/InsertSmiley/smileys/0236.gif,
+	  plugins/InsertSmiley/smileys/0237.gif,
+	  plugins/InsertSmiley/smileys/0238.gif,
+	  plugins/InsertSmiley/smileys/0239.gif,
+	  plugins/InsertSmiley/smileys/0240.gif,
+	  plugins/InsertSmiley/smileys/0241.gif,
+	  plugins/InsertSmiley/smileys/0242.gif,
+	  plugins/InsertSmiley/smileys/0243.gif,
+	  plugins/InsertSmiley/smileys/0244.gif,
+	  plugins/InsertSmiley/smileys/0245.gif,
+	  plugins/InsertSmiley/smileys/0246.gif,
+	  plugins/InsertSmiley/smileys/0247.gif,
+	  plugins/InsertSmiley/smileys/0248.gif,
+	  plugins/InsertSmiley/smileys/0249.gif,
+	  plugins/InsertSmiley/smileys/0250.gif,
+	  plugins/InsertSmiley/smileys/0251.gif,
+	  plugins/InsertSmiley/smileys/0252.gif,
+	  plugins/InsertSmiley/smileys/0254.gif,
+	  plugins/InsertSmiley/smileys/0255.gif,
+	  plugins/InsertSmiley/smileys/0257.gif,
+	  plugins/InsertSmiley/smileys/0259.gif,
+	  plugins/InsertSmiley/smileys/0260.gif,
+	  plugins/InsertSmiley/smileys/0261.gif,
+	  plugins/InsertSmiley/smileys/0262.gif,
+	  plugins/InsertSmiley/smileys/0263.gif,
+	  plugins/InsertSmiley/smileys/0264.gif,
+	  plugins/InsertSmiley/smileys/0265.gif,
+	  plugins/InsertSmiley/smileys/0266.gif,
+	  plugins/InsertSmiley/smileys/0267.gif,
+	  plugins/InsertSmiley/smileys/0268.gif,
+	  plugins/InsertSmiley/smileys/0269.gif,
+	  plugins/InsertSmiley/smileys/0270.gif,
+	  plugins/InsertSmiley/smileys/0271.gif,
+	  plugins/InsertSmiley/smileys/0272.gif,
+	  plugins/InsertSmiley/smileys/0273.gif,
+	  plugins/InsertSmiley/smileys/0275.gif,
+	  plugins/InsertSmiley/smileys/0276.gif,
+	  plugins/InsertSmiley/smileys/0277.gif,
+	  plugins/InsertSmiley/smileys/0278.gif,
+	  plugins/InsertSmiley/smileys/0279.gif,
+	  plugins/InsertSmiley/smileys/0280.gif,
+	  plugins/InsertSmiley/smileys/0281.gif,
+	  plugins/InsertSmiley/smileys/0282.gif,
+	  plugins/InsertSmiley/smileys/0284.gif,
+	  plugins/InsertSmiley/smileys/0285.gif,
+	  plugins/InsertSmiley/smileys/0286.gif,
+	  plugins/InsertSmiley/smileys/0287.gif,
+	  plugins/InsertSmiley/smileys/0288.gif,
+	  plugins/InsertSmiley/smileys/0289.gif,
+	  plugins/InsertSmiley/smileys/0290.gif,
+	  plugins/InsertSmiley/smileys/0291.gif,
+	  plugins/InsertSmiley/smileys/0292.gif,
+	  plugins/InsertSmiley/smileys/0293.gif,
+	  plugins/InsertSmiley/smileys/0294.gif,
+	  plugins/InsertSmiley/smileys/0295.gif,
+	  plugins/InsertSmiley/smileys/0297.gif,
+	  plugins/InsertSmiley/smileys/0298.gif,
+	  plugins/InsertSmiley/smileys/0299.gif,
+	  plugins/InsertSmiley/smileys/0300.gif,
+	  plugins/InsertSmiley/smileys/0301.gif,
+	  plugins/InsertSmiley/smileys/0302.gif,
+	  plugins/InsertSmiley/smileys/0303.gif,
+	  plugins/InsertSmiley/smileys/0304.gif,
+	  plugins/InsertSmiley/smileys/0305.gif,
+	  plugins/InsertSmiley/smileys/0307.gif,
+	  plugins/InsertSmiley/smileys/0308.gif,
+	  plugins/InsertSmiley/smileys/0309.gif,
+	  plugins/InsertSmiley/smileys/0310.gif,
+	  plugins/InsertSmiley/smileys/0311.gif,
+	  plugins/InsertSmiley/smileys/0313.gif,
+	  plugins/InsertSmiley/smileys/0314.gif,
+	  plugins/InsertSmiley/smileys/0315.gif,
+	  plugins/InsertSmiley/smileys/0316.gif,
+	  plugins/InsertSmiley/smileys/0317.gif,
+	  plugins/InsertSmiley/smileys/0318.gif,
+	  plugins/InsertSmiley/smileys/0319.gif,
+	  plugins/InsertSmiley/smileys/0320.gif,
+	  plugins/InsertSmiley/smileys/0322.gif,
+	  plugins/InsertSmiley/smileys/0323.gif,
+	  plugins/InsertSmiley/smileys/0324.gif,
+	  plugins/InsertSmiley/smileys/0325.gif,
+	  plugins/InsertSmiley/smileys/0327.gif,
+	  plugins/InsertSmiley/smileys/0328.gif,
+	  plugins/InsertSmiley/smileys/0329.gif,
+	  plugins/InsertSmiley/smileys/0330.gif,
+	  plugins/InsertSmiley/smileys/0331.gif,
+	  plugins/InsertSmiley/smileys/0332.gif,
+	  plugins/InsertSmiley/smileys/0333.gif,
+	  plugins/InsertSmiley/smileys/0336.gif,
+	  plugins/InsertSmiley/smileys/0337.gif,
+	  plugins/InsertSmiley/smileys/0338.gif,
+	  plugins/InsertSmiley/smileys/0339.gif,
+	  plugins/InsertSmiley/smileys/0340.gif,
+	  plugins/InsertSmiley/smileys/0341.gif,
+	  plugins/InsertSmiley/smileys/0342.gif,
+	  plugins/InsertSmiley/smileys/0343.gif,
+	  plugins/InsertSmiley/smileys/0344.gif,
+	  plugins/InsertSmiley/smileys/0345.gif,
+	  plugins/InsertSmiley/smileys/0346.gif,
+	  plugins/InsertSmiley/smileys/0347.gif,
+	  plugins/InsertSmiley/smileys/0348.gif,
+	  plugins/InsertSmiley/smileys/0349.gif,
+	  plugins/InsertSmiley/smileys/0350.gif,
+	  plugins/InsertSmiley/smileys/0351.gif,
+	  plugins/InsertSmiley/smileys/0352.gif,
+	  plugins/InsertSmiley/smileys/0353.gif,
+	  plugins/InsertSmiley/smileys/0354.gif,
+	  plugins/InsertSmiley/smileys/0355.gif,
+	  plugins/InsertSmiley/smileys/0356.gif,
+	  plugins/InsertSmiley/smileys/0357.gif,
+	  plugins/InsertSmiley/smileys/0358.gif,
+	  plugins/InsertSmiley/smileys/0359.gif,
+	  plugins/InsertSmiley/smileys/0360.gif,
+	  plugins/InsertSmiley/smileys/0361.gif,
+	  plugins/InsertSmiley/smileys/0362.gif,
+	  plugins/InsertSmiley/smileys/0363.gif,
+	  plugins/InsertSmiley/smileys/0364.gif,
+	  plugins/InsertSmiley/smileys/0365.gif,
+	  plugins/InsertSmiley/smileys/0366.gif,
+	  plugins/InsertSmiley/smileys/0367.gif,
+	  plugins/InsertSmiley/smileys/0368.gif,
+	  plugins/InsertSmiley/smileys/0369.gif,
+	  plugins/InsertSmiley/smileys/0370.gif,
+	  plugins/InsertSmiley/smileys/0372.gif,
+	  plugins/InsertSmiley/smileys/0373.gif,
+	  plugins/InsertSmiley/smileys/0375.gif,
+	  plugins/InsertSmiley/smileys/0376.gif,
+	  plugins/InsertSmiley/smileys/0377.gif,
+	  plugins/InsertSmiley/smileys/0378.gif,
+	  plugins/InsertSmiley/smileys/0380.gif,
+	  plugins/InsertSmiley/smileys/0381.gif,
+	  plugins/InsertSmiley/smileys/0382.gif,
+	  plugins/InsertSmiley/smileys/0383.gif,
+	  plugins/InsertSmiley/smileys/0384.gif,
+	  plugins/InsertSmiley/smileys/0385.gif,
+	  plugins/InsertSmiley/smileys/0386.gif,
+	  plugins/InsertSmiley/smileys/0387.gif,
+	  plugins/InsertSmiley/smileys/0388.gif,
+	  plugins/InsertSmiley/smileys/0389.gif,
+	  plugins/InsertSmiley/smileys/0390.gif,
+	  plugins/InsertSmiley/smileys/0391.gif,
+	  plugins/InsertSmiley/smileys/0392.gif,
+	  plugins/InsertSmiley/smileys/0393.gif,
+	  plugins/InsertSmiley/smileys/0394.gif,
+	  plugins/InsertSmiley/smileys/0396.gif,
+	  plugins/InsertSmiley/smileys/0397.gif,
+	  plugins/InsertSmiley/smileys/0398.gif,
+	  plugins/InsertSmiley/smileys/0399.gif,
+	  plugins/InsertSmiley/smileys/0400.gif,
+	  plugins/InsertSmiley/smileys/0401.gif,
+	  plugins/InsertSmiley/smileys/0402.gif,
+	  plugins/InsertSmiley/smileys/0403.gif,
+	  plugins/InsertSmiley/smileys/0404.gif,
+	  plugins/InsertSmiley/smileys/0406.gif,
+	  plugins/InsertSmiley/smileys/0407.gif,
+	  plugins/InsertSmiley/smileys/0408.gif,
+	  plugins/InsertSmiley/smileys/0409.gif,
+	  plugins/InsertSmiley/smileys/0410.gif,
+	  plugins/InsertSmiley/smileys/0411.gif,
+	  plugins/InsertSmiley/smileys/0412.gif,
+	  plugins/InsertSmiley/smileys/0413.gif,
+	  plugins/InsertSmiley/smileys/0414.gif,
+	  plugins/InsertSmiley/smileys/0416.gif,
+	  plugins/InsertSmiley/smileys/0417.gif,
+	  plugins/InsertSmiley/smileys/0418.gif,
+	  plugins/InsertSmiley/smileys/0419.gif,
+	  plugins/InsertSmiley/smileys/0420.gif,
+	  plugins/InsertSmiley/smileys/0421.gif,
+	  plugins/InsertSmiley/smileys/0422.gif,
+	  plugins/InsertSmiley/smileys/0423.gif,
+	  plugins/InsertSmiley/smileys/0424.gif,
+	  plugins/InsertSmiley/smileys/0425.gif,
+	  plugins/InsertSmiley/smileys/0426.gif,
+	  plugins/InsertSmiley/smileys/0427.gif,
+	  plugins/InsertSmiley/smileys/0428.gif,
+	  plugins/InsertSmiley/smileys/0429.gif,
+	  plugins/InsertSmiley/smileys/0430.gif,
+	  plugins/InsertSmiley/smileys/0431.gif,
+	  plugins/InsertSmiley/smileys/0432.gif,
+	  plugins/InsertSmiley/smileys/0433.gif,
+	  plugins/InsertSmiley/smileys/0434.gif,
+	  plugins/InsertSmiley/smileys/0435.gif,
+	  plugins/InsertSmiley/smileys/0436.gif,
+	  plugins/InsertSmiley/smileys/0437.gif,
+	  plugins/InsertSmiley/smileys/0438.gif,
+	  plugins/InsertSmiley/smileys/0439.gif,
+	  plugins/InsertSmiley/smileys/0441.gif,
+	  plugins/InsertSmiley/smileys/0442.gif,
+	  plugins/InsertSmiley/smileys/0443.gif,
+	  plugins/InsertSmiley/smileys/0444.gif,
+	  plugins/InsertSmiley/smileys/0445.gif,
+	  plugins/InsertSmiley/smileys/0446.gif,
+	  plugins/InsertSmiley/smileys/0447.gif,
+	  plugins/InsertSmiley/smileys/0448.gif,
+	  plugins/InsertSmiley/smileys/0449.gif,
+	  plugins/InsertSmiley/smileys/0450.gif,
+	  plugins/InsertSmiley/smileys/0451.gif,
+	  plugins/InsertSmiley/smileys/0452.gif,
+	  plugins/InsertSmiley/smileys/0453.gif,
+	  plugins/InsertSmiley/smileys/0454.gif,
+	  plugins/InsertSmiley/smileys/0456.gif,
+	  plugins/InsertSmiley/smileys/0457.gif,
+	  plugins/InsertSmiley/smileys/0458.gif,
+	  plugins/InsertSmiley/smileys/0459.gif,
+	  plugins/InsertSmiley/smileys/0461.gif,
+	  plugins/InsertSmiley/smileys/0462.gif,
+	  plugins/InsertSmiley/smileys/0463.gif,
+	  plugins/InsertSmiley/smileys/0464.gif,
+	  plugins/InsertSmiley/smileys/0465.gif,
+	  plugins/InsertSmiley/smileys/0466.gif,
+	  plugins/InsertSmiley/smileys/0467.gif,
+	  plugins/InsertSmiley/smileys/0468.gif,
+	  plugins/InsertSmiley/smileys/0469.gif,
+	  plugins/InsertSmiley/smileys/0471.gif,
+	  plugins/InsertSmiley/smileys/0472.gif,
+	  plugins/InsertSmiley/smileys/0473.gif,
+	  plugins/InsertSmiley/smileys/0474.gif,
+	  plugins/InsertSmiley/smileys/0475.gif,
+	  plugins/InsertSmiley/smileys/0476.gif,
+	  plugins/InsertSmiley/smileys/0477.gif,
+	  plugins/InsertSmiley/smileys/0478.gif,
+	  plugins/InsertSmiley/smileys/0479.gif,
+	  plugins/InsertSmiley/smileys/0480.gif,
+	  plugins/InsertSmiley/smileys/0482.gif,
+	  plugins/InsertSmiley/smileys/0483.gif,
+	  plugins/InsertSmiley/smileys/0484.gif,
+	  plugins/InsertSmiley/smileys/0485.gif,
+	  plugins/InsertSmiley/smileys/0486.gif,
+	  plugins/InsertSmiley/smileys/0487.gif,
+	  plugins/InsertSmiley/smileys/0488.gif,
+	  plugins/InsertSmiley/smileys/0489.gif,
+	  plugins/InsertSmiley/smileys/0490.gif,
+	  plugins/InsertSmiley/smileys/0492.gif,
+	  plugins/InsertSmiley/smileys/0493.gif,
+	  plugins/InsertSmiley/smileys/0494.gif,
+	  plugins/InsertSmiley/smileys/0495.gif,
+	  plugins/InsertSmiley/smileys/0496.gif,
+	  plugins/InsertSmiley/smileys/0497.gif,
+	  plugins/InsertSmiley/smileys/0498.gif,
+	  plugins/InsertSmiley/smileys/0500.gif,
+	  plugins/InsertSmiley/smileys/0501.gif,
+	  plugins/InsertSmiley/smileys/0502.gif,
+	  plugins/InsertSmiley/smileys/0503.gif,
+	  plugins/InsertSmiley/smileys/0504.gif,
+	  plugins/InsertSmiley/smileys/0505.gif,
+	  plugins/InsertSmiley/smileys/0506.gif,
+	  plugins/InsertSmiley/smileys/0507.gif,
+	  plugins/InsertSmiley/smileys/0508.gif,
+	  plugins/InsertSmiley/smileys/0509.gif,
+	  plugins/InsertSmiley/smileys/0510.gif,
+	  plugins/InsertSmiley/smileys/0511.gif,
+	  plugins/InsertSmiley/smileys/0512.gif,
+	  plugins/InsertSmiley/smileys/0513.gif,
+	  plugins/InsertSmiley/smileys/0514.gif,
+	  plugins/InsertSmiley/smileys/0515.gif,
+	  plugins/InsertSmiley/smileys/0516.gif,
+	  plugins/InsertSmiley/smileys/0517.gif,
+	  plugins/InsertSmiley/smileys/0518.gif,
+	  plugins/InsertSmiley/smileys/0519.gif,
+	  plugins/InsertSmiley/smileys/0520.gif,
+	  plugins/InsertSmiley/smileys/0521.gif,
+	  plugins/InsertSmiley/smileys/0522.gif,
+	  plugins/InsertSmiley/smileys/0523.gif,
+	  plugins/InsertSmiley/smileys/0524.gif,
+	  plugins/InsertSmiley/smileys/0525.gif,
+	  plugins/InsertSmiley/smileys/0526.gif,
+	  plugins/InsertSmiley/smileys/0528.gif,
+	  plugins/InsertSmiley/smileys/0530.gif,
+	  plugins/InsertSmiley/smileys/0531.gif,
+	  plugins/InsertSmiley/smileys/0532.gif,
+	  plugins/InsertSmiley/smileys/0534.gif,
+	  plugins/InsertSmiley/smileys/0535.gif,
+	  plugins/InsertSmiley/smileys/0536.gif,
+	  plugins/InsertSmiley/smileys/0537.gif,
+	  plugins/InsertSmiley/smileys/0538.gif,
+	  plugins/InsertSmiley/smileys/0539.gif,
+	  plugins/InsertSmiley/smileys/0540.gif,
+	  plugins/InsertSmiley/smileys/0542.gif,
+	  plugins/InsertSmiley/smileys/0543.gif,
+	  plugins/InsertSmiley/smileys/0544.gif,
+	  plugins/InsertSmiley/smileys/0545.gif,
+	  plugins/InsertSmiley/smileys/0546.gif,
+	  plugins/InsertSmiley/smileys/0547.gif,
+	  plugins/InsertSmiley/smileys/0548.gif,
+	  plugins/InsertSmiley/smileys/0549.gif,
+	  plugins/InsertSmiley/smileys/0550.gif,
+	  plugins/InsertSmiley/smileys/0551.gif,
+	  plugins/InsertSmiley/smileys/0552.gif,
+	  plugins/InsertSmiley/smileys/0553.gif,
+	  plugins/InsertSmiley/smileys/0554.gif,
+	  plugins/InsertSmiley/smileys/0555.gif,
+	  plugins/InsertSmiley/smileys/0556.gif,
+	  plugins/InsertSmiley/smileys/0557.gif,
+	  plugins/InsertSmiley/smileys/0558.gif,
+	  plugins/InsertSmiley/smileys/0559.gif,
+	  plugins/InsertSmiley/smileys/0560.gif,
+	  plugins/InsertSmiley/smileys/0561.gif,
+	  plugins/InsertSmiley/smileys/0564.gif,
+	  plugins/InsertSmiley/smileys/0566.gif,
+	  plugins/InsertSmiley/smileys/0567.gif,
+	  plugins/InsertSmiley/smileys/0568.gif,
+	  plugins/InsertSmiley/smileys/0569.gif,
+	  plugins/InsertSmiley/smileys/0570.gif,
+	  plugins/InsertSmiley/smileys/0571.gif,
+	  plugins/InsertSmiley/smileys/0572.gif,
+	  plugins/InsertSmiley/smileys/0573.gif,
+	  plugins/InsertSmiley/smileys/0574.gif,
+	  plugins/InsertSmiley/smileys/0575.gif,
+	  plugins/InsertSmiley/smileys/0576.gif,
+	  plugins/InsertSmiley/smileys/0577.gif,
+	  plugins/InsertSmiley/smileys/0578.gif,
+	  plugins/InsertSmiley/smileys/0579.gif,
+	  plugins/InsertSmiley/smileys/0580.gif,
+	  plugins/InsertWords/insert-words.js,
+	  plugins/LangMarks/lang-marks.js, plugins/LangMarks/img/el.gif,
+	  plugins/LangMarks/img/en.gif, plugins/LangMarks/img/fr.gif,
+	  plugins/LangMarks/img/la.gif, plugins/Linker/dialog.html,
+	  plugins/Linker/linker.js, plugins/Linker/scan.php,
+	  plugins/Linker/dTree/api.html, plugins/Linker/dTree/dtree.css,
+	  plugins/Linker/dTree/dtree.js,
+	  plugins/Linker/dTree/example01.html,
+	  plugins/Linker/dTree/img/base.gif,
+	  plugins/Linker/dTree/img/cd.gif,
+	  plugins/Linker/dTree/img/copy.gif,
+	  plugins/Linker/dTree/img/folder.gif,
+	  plugins/Linker/dTree/img/folderopen.gif,
+	  plugins/Linker/dTree/img/globe.gif,
+	  plugins/Linker/dTree/img/imgfolder.gif,
+	  plugins/Linker/dTree/img/join.gif,
+	  plugins/Linker/dTree/img/joinbottom.gif,
+	  plugins/Linker/dTree/img/line.gif,
+	  plugins/Linker/dTree/img/minus.gif,
+	  plugins/Linker/dTree/img/minusbottom.gif,
+	  plugins/Linker/dTree/img/move.gif,
+	  plugins/Linker/dTree/img/musicfolder.gif,
+	  plugins/Linker/dTree/img/nolines_minus.gif,
+	  plugins/Linker/dTree/img/nolines_plus.gif,
+	  plugins/Linker/dTree/img/offline.gif,
+	  plugins/Linker/dTree/img/page.gif,
+	  plugins/Linker/dTree/img/plus.gif,
+	  plugins/Linker/dTree/img/plusbottom.gif,
+	  plugins/Linker/dTree/img/question.gif,
+	  plugins/Linker/dTree/img/trash.gif, plugins/Linker/lang/de.js,
+	  plugins/Linker/lang/fr.js, plugins/Linker/lang/pl.js,
+	  plugins/ListType/list-type.js, plugins/ListType/lang/de.js,
+	  plugins/ListType/lang/no.js, plugins/NoteServer/note-server.js,
+	  plugins/NoteServer/img/note.gif, plugins/NoteServer/lang/no.js,
+	  plugins/NoteServer/popups/codenote.html,
+	  plugins/PasteText/paste-text.js,
+	  plugins/PasteText/img/ed_paste_text.gif,
+	  plugins/PasteText/popups/paste_text.html,
+	  plugins/QuickTag/quick-tag.js, plugins/QuickTag/tag-lib.js,
+	  plugins/QuickTag/img/ed_quicktag.gif,
+	  plugins/QuickTag/lang/no.js, plugins/QuickTag/lang/pt_br.js,
+	  plugins/QuickTag/popups/quicktag.html,
+	  plugins/SpellChecker/aspell_setup.php,
+	  plugins/SpellChecker/readme-tech.html,
+	  plugins/SpellChecker/spell-check-logic.cgi,
+	  plugins/SpellChecker/spell-check-logic.php,
+	  plugins/SpellChecker/spell-check-savedicts.php,
+	  plugins/SpellChecker/spell-check-ui.html,
+	  plugins/SpellChecker/spell-check-ui.js,
+	  plugins/SpellChecker/spell-checker.js,
+	  plugins/SpellChecker/img/he-spell-check.gif,
+	  plugins/SpellChecker/img/spell-check.gif,
+	  plugins/SpellChecker/lang/cz.js, plugins/SpellChecker/lang/da.js,
+	  plugins/SpellChecker/lang/de.js, plugins/SpellChecker/lang/he.js,
+	  plugins/SpellChecker/lang/hu.js, plugins/SpellChecker/lang/nl.js,
+	  plugins/SpellChecker/lang/no.js, plugins/SpellChecker/lang/ro.js,
+	  plugins/Stylist/stylist.js, plugins/SuperClean/dialog.html,
+	  plugins/SuperClean/super-clean.js, plugins/SuperClean/tidy.php,
+	  plugins/SuperClean/img/ed_superclean.gif,
+	  plugins/SuperClean/lang/no.js,
+	  plugins/TableOperations/table-operations.js,
+	  plugins/TableOperations/img/cell-delete.gif,
+	  plugins/TableOperations/img/cell-insert-after.gif,
+	  plugins/TableOperations/img/cell-insert-before.gif,
+	  plugins/TableOperations/img/cell-merge.gif,
+	  plugins/TableOperations/img/cell-prop.gif,
+	  plugins/TableOperations/img/cell-split.gif,
+	  plugins/TableOperations/img/col-delete.gif,
+	  plugins/TableOperations/img/col-insert-after.gif,
+	  plugins/TableOperations/img/col-insert-before.gif,
+	  plugins/TableOperations/img/col-split.gif,
+	  plugins/TableOperations/img/row-delete.gif,
+	  plugins/TableOperations/img/row-insert-above.gif,
+	  plugins/TableOperations/img/row-insert-under.gif,
+	  plugins/TableOperations/img/row-prop.gif,
+	  plugins/TableOperations/img/row-split.gif,
+	  plugins/TableOperations/img/table-prop.gif,
+	  plugins/TableOperations/lang/cz.js,
+	  plugins/TableOperations/lang/da.js,
+	  plugins/TableOperations/lang/de.js,
+	  plugins/TableOperations/lang/el.js,
+	  plugins/TableOperations/lang/fi.js,
+	  plugins/TableOperations/lang/fr.js,
+	  plugins/TableOperations/lang/he.js,
+	  plugins/TableOperations/lang/it.js,
+	  plugins/TableOperations/lang/nl.js,
+	  plugins/TableOperations/lang/pl.js,
+	  plugins/TableOperations/lang/ro.js, plugins/Template/template.js,
+	  plugins/Template/img/ed_template.gif,
+	  plugins/Template/img/layout_01.gif,
+	  plugins/Template/img/layout_02.gif,
+	  plugins/Template/img/layout_03.gif, plugins/Template/lang/de.js,
+	  plugins/Template/lang/it.js,
+	  plugins/Template/popups/template.html,
+	  plugins/UnFormat/un-format.js, plugins/UnFormat/img/unformat.gif,
+	  plugins/UnFormat/popups/unformat.html: Initial revision
+
+2005-11-02 00:55  gustafn
+
+	* packages/acs-templating/www/resources/xinha-nightly/plugins/:
+	  Abbreviation/abbreviation.css, Abbreviation/abbr/de.js,
+	  Abbreviation/abbr/en.js, Abbreviation/lang/de.js,
+	  Abbreviation/lang/fr.js, Abbreviation/lang/no.js,
+	  BackgroundImage/backgrounds/blufur.jpg,
+	  BackgroundImage/backgrounds/palecnvs.jpg,
+	  BackgroundImage/backgrounds/ppplcnvs.jpg,
+	  BackgroundImage/backgrounds/ylwsand.jpg,
+	  BackgroundImage/backgrounds/thumbnails/blufur.jpg,
+	  BackgroundImage/backgrounds/thumbnails/palecnvs.jpg,
+	  BackgroundImage/backgrounds/thumbnails/ppplcnvs.jpg,
+	  BackgroundImage/backgrounds/thumbnails/ylwsand.jpg,
+	  BackgroundImage/lang/de.js, BackgroundImage/lang/fr.js,
+	  BackgroundImage/lang/no.js, CharacterMap/CharacterMap.css,
+	  CharacterMap/lang/it.js, CharacterMap/lang/nl.js,
+	  CharacterMap/lang/no.js, CharCounter/lang/no.js,
+	  ClientsideSpellcheck/lang/de.js, ContextMenu/menu.css,
+	  ContextMenu/lang/pl.js, DynamicCSS/lang/nl.js,
+	  DynamicCSS/lang/no.js, EditTag/lang/de.js, EditTag/lang/fr.js,
+	  EditTag/lang/no.js, Equation/lang/fr.js, FindReplace/lang/de.js,
+	  FindReplace/lang/fr.js, FindReplace/lang/no.js,
+	  FindReplace/lang/pl.js, FormOperations/README,
+	  FormOperations/default_form.html, FormOperations/formmail.php,
+	  FormOperations/iframe.css, FormOperations/lang/de.js,
+	  FormOperations/lang/fr.js, FormOperations/lang/no.js,
+	  Forms/forms.css, FullPage/lang/nl.js, FullPage/lang/no.js,
+	  FullPage/lang/pl.js, FullScreen/lang/de.js,
+	  FullScreen/lang/fr.js, FullScreen/lang/no.js,
+	  FullScreen/lang/pl.js, HorizontalRule/lang/fr.js,
+	  HorizontalRule/lang/no.js, HtmlTidy/html-tidy-config.cfg,
+	  HtmlTidy/README, HtmlTidy/lang/de.js, HtmlTidy/lang/fr.js,
+	  HtmlTidy/lang/nl.js, ImageManager/README.txt,
+	  ImageManager/ddt.php, ImageManager/assets/ImageEditor.css,
+	  ImageManager/assets/editor.css,
+	  ImageManager/assets/editorFrame.css,
+	  ImageManager/assets/hover.htc, ImageManager/assets/slider.js,
+	  ImageManager/demo_images/bikerpeep.jpg,
+	  ImageManager/demo_images/wesnoth078.jpg,
+	  ImageManager/img/2x2.gif, ImageManager/img/2x2_w.gif,
+	  ImageManager/img/islocked2.gif, ImageManager/img/spacer.gif,
+	  ImageManager/img/Thumbs.db, ImageManager/img/unlocked.gif,
+	  ImageManager/lang/fr.js, ImageManager/lang/pl.js,
+	  InsertAnchor/insert-anchor.css, InsertAnchor/img/placeholder.gif,
+	  InsertAnchor/lang/de.js, InsertAnchor/lang/fr.js,
+	  InsertAnchor/lang/pl.js, InsertMarquee/lang/de.js,
+	  InsertMarquee/lang/fr.js, InsertMarquee/lang/it.js,
+	  InsertMarquee/lang/no.js, InsertPagebreak/lang/de.js,
+	  InsertPagebreak/lang/fr.js, InsertPagebreak/lang/no.js,
+	  InsertPicture/demo_pictures/bikerpeep.jpg,
+	  InsertPicture/demo_pictures/wesnoth078.jpg,
+	  InsertPicture/lang/fr.js, InsertSmiley/lang/de.js,
+	  InsertSmiley/lang/fr.js, InsertSmiley/lang/no.js,
+	  InsertSmiley/smileys/0001.gif, InsertSmiley/smileys/0002.gif,
+	  InsertSmiley/smileys/0003.gif, InsertSmiley/smileys/0004.gif,
+	  InsertSmiley/smileys/0005.gif, InsertSmiley/smileys/0006.gif,
+	  InsertSmiley/smileys/0007.gif, InsertSmiley/smileys/0008.gif,
+	  InsertSmiley/smileys/0012.gif, InsertSmiley/smileys/0014.gif,
+	  InsertSmiley/smileys/0017.gif, InsertSmiley/smileys/0032.gif,
+	  InsertSmiley/smileys/0034.gif, InsertSmiley/smileys/0035.gif,
+	  InsertSmiley/smileys/0037.gif, InsertSmiley/smileys/0040.gif,
+	  InsertSmiley/smileys/0050.gif, InsertSmiley/smileys/0053.gif,
+	  InsertSmiley/smileys/0054.gif, InsertSmiley/smileys/0063.gif,
+	  InsertSmiley/smileys/0069.gif, InsertSmiley/smileys/0073.gif,
+	  InsertSmiley/smileys/0075.gif, InsertSmiley/smileys/0078.gif,
+	  InsertSmiley/smileys/0079.gif, InsertSmiley/smileys/0081.gif,
+	  InsertSmiley/smileys/0095.gif, InsertSmiley/smileys/0114.gif,
+	  InsertSmiley/smileys/0127.gif, InsertSmiley/smileys/0143.gif,
+	  InsertSmiley/smileys/0173.gif, InsertSmiley/smileys/0191.gif,
+	  InsertSmiley/smileys/0203.gif, InsertSmiley/smileys/0204.gif,
+	  InsertSmiley/smileys/0221.gif, InsertSmiley/smileys/0253.gif,
+	  InsertSmiley/smileys/0256.gif, InsertSmiley/smileys/0258.gif,
+	  InsertSmiley/smileys/0274.gif, InsertSmiley/smileys/0283.gif,
+	  InsertSmiley/smileys/0296.gif, InsertSmiley/smileys/0306.gif,
+	  InsertSmiley/smileys/0312.gif, InsertSmiley/smileys/0321.gif,
+	  InsertSmiley/smileys/0326.gif, InsertSmiley/smileys/0334.gif,
+	  InsertSmiley/smileys/0335.gif, InsertSmiley/smileys/0371.gif,
+	  InsertSmiley/smileys/0374.gif, InsertSmiley/smileys/0379.gif,
+	  InsertSmiley/smileys/0395.gif, InsertSmiley/smileys/0405.gif,
+	  InsertSmiley/smileys/0415.gif, InsertSmiley/smileys/0440.gif,
+	  InsertSmiley/smileys/0455.gif, InsertSmiley/smileys/0460.gif,
+	  InsertSmiley/smileys/0470.gif, InsertSmiley/smileys/0481.gif,
+	  InsertSmiley/smileys/0491.gif, InsertSmiley/smileys/0499.gif,
+	  InsertSmiley/smileys/0527.gif, InsertSmiley/smileys/0529.gif,
+	  InsertSmiley/smileys/0533.gif, InsertSmiley/smileys/0541.gif,
+	  InsertSmiley/smileys/0562.gif, InsertSmiley/smileys/0563.gif,
+	  InsertSmiley/smileys/0565.gif, LangMarks/lang-marks.css,
+	  LangMarks/lang/de.js, LangMarks/lang/fr.js, LangMarks/lang/no.js,
+	  Linker/dTree/img/empty.gif, Linker/dTree/img/offline.png,
+	  Linker/lang/no.js, ListType/ListType.css,
+	  ListType/img/circle.png, ListType/img/decimal.png,
+	  ListType/img/disc.png, ListType/img/lower-alpha.png,
+	  ListType/img/lower-roman.png, ListType/img/none.png,
+	  ListType/img/square.png, ListType/img/upper-alpha.png,
+	  ListType/img/upper-roman.png, ListType/lang/fr.js,
+	  ListType/lang/nl.js, ListType/lang/pl.js, NoteServer/lang/de.js,
+	  NoteServer/lang/fr.js, PasteText/lang/de.js,
+	  PasteText/lang/fr.js, PasteText/lang/no.js, PasteText/lang/pl.js,
+	  QuickTag/lang/de.js, QuickTag/lang/fr.js, QuickTag/lang/pl.js,
+	  SpellChecker/README, SpellChecker/spell-check-style.css,
+	  SpellChecker/lang/fr.js, Stylist/lang/de.js, Stylist/lang/fr.js,
+	  Stylist/lang/no.js, Stylist/lang/pl.js,
+	  SuperClean/filters/paragraph.js, SuperClean/filters/word.js,
+	  SuperClean/lang/de.js, SuperClean/lang/fr.js,
+	  TableOperations/lang/no.js, Template/template.css,
+	  Template/lang/fr.js, Template/lang/no.js, UnFormat/lang/de.js,
+	  UnFormat/lang/fr.js, UnFormat/lang/nl.js, UnFormat/lang/no.js:
+	  Initial checkin
+
+2005-10-30 03:53  maltes
+
+	* packages/acs-mail-lite/: acs-mail-lite.info,
+	  sql/postgresql/acs-mail-lite-create.sql,
+	  tcl/acs-mail-lite-callback-procs.tcl: Added new table which make
+	  the callback work for mail tracking lite
+
+2005-10-28 11:54  maltes
+
+	* packages/acs-mail-lite/tcl/acs-mail-lite-callback-procs.tcl:
+	  Fixed problem with my comment...
+
+2005-10-24 09:58  eduardop
+
+	* packages/acs-kernel/sql/postgresql/acs-relationships-create.sql:
+	  reverting timoh's &quot;added types application link and application
+	  data link&quot; until someone can explainme why it was left broken
+	  (Closes: #2663)
+
+2005-10-24 08:27  maltes
+
+	* packages/acs-mail-lite/lib/: email.adp, email.tcl: Added
+	  localization of file titles
+
+2005-10-23 09:54  maltes
+
+	*
+	  packages/acs-mail-lite/catalog/acs-mail-lite.de_DE.ISO-8859-1.xml:
+	  German translation
+
+2005-10-23 09:53  maltes
+
+	* packages/acs-mail-lite/: lib/email.tcl,
+	  tcl/acs-mail-lite-callback-procs.tcl: Added salutation support
+
+2005-10-23 03:00  maltes
+
+	* packages/acs-mail-lite/lib/email.tcl: Fixed I18N strings
+
+2005-10-21 11:04  maltes
+
+	* packages/acs-mail-lite/tcl/: acs-mail-lite-callback-procs.tcl,
+	  acs-mail-lite-procs.tcl: Changed the support for the fixed sender
+	  mail so that still the original sender will be shown in the
+	  mail-tracking despite the fact that sendmail will get the fixed
+	  sender mail
+
+2005-10-21 07:00  maltes
+
+	*
+	  packages/acs-mail-lite/catalog/acs-mail-lite.en_US.ISO-8859-1.xml:
+	  New I18N strings synchronized with the RC version
+
+2005-10-19 10:00  miguelm
+
+	* packages/acs-mail-lite/: acs-mail-lite.info,
+	  catalog/acs-mail-lite.en_US.ISO-8859-1.xml, lib/email.tcl,
+	  lib/email.xql, tcl/acs-mail-lite-procs.tcl,
+	  tcl/acs-mail-lite-procs.xql: adding catalog files, procedures and
+	  making changes to remove the contacts dependency on lib email.tcl
+	  files
+
+2005-10-18 13:16  miguelm
+
+	* packages/acs-mail-lite/lib/email.tcl: making changes to use the
+	  item_id (message_id)
+
+2005-10-14 14:48  miguelm
+
+	* packages/acs-mail-lite/tcl/acs-mail-lite-procs.tcl: checking the
+	  parametr FixedSenderEmail before sending the message to figure
+	  out which address use
+
+2005-10-14 14:47  miguelm
+
+	* packages/acs-mail-lite/acs-mail-lite.info: increment version
+	  number, adding FixedSenderEmail parameter
+
+2005-10-12 03:05  timoh
+
+	* packages/acs-kernel/sql/postgresql/acs-relationships-create.sql:
+	  added types application link and application data link
+
+2005-10-11 08:05  timoh
+
+	* packages/acs-mail-lite/lib/email.tcl: using revision_id for
+	  download links of files
+
+2005-10-10 07:15  leed
+
+	* packages/acs-templating/tcl/tag-init.tcl: Add option to
+	  automatically propagate all slave properties to the next master
+	  template to make this one 'invisible'.
+
+2005-10-09 13:38  gustafn
+
+	* packages/acs-bootstrap-installer/bootstrap.tcl: loading xotcl (if
+	  available) before application packages that might use it.
+
+2005-10-09 13:36  gustafn
+
+	* packages/acs-api-browser/tcl/acs-api-documentation-procs.tcl:
+	  adding sopport for xotcl methods to api browser (most of the
+	  implementation is in xotcl-core).
+
+2005-10-04 04:23  leed
+
+	* packages/acs-tcl/tcl/application-link-procs.tcl: Return rel_id
+	  from application-link tag so that other tags can use it.
+
+2005-10-04 04:22  leed
+
+	* packages/acs-tcl/tcl/install-procs.tcl: Added package-create tag
+	  to instantiate a package in install.xml without mounting it.
+
+2005-10-03 19:38  timoh
+
+	* packages/acs-lang/tcl/lang-util-procs.xql: added order statement
+
+2005-10-03 19:37  timoh
+
+	* packages/acs-lang/tcl/locale-procs.tcl: added user_id switch when
+	  setting locale
+
+2005-10-03 12:07  miguelm
+
+	* packages/acs-mail-lite/lib/email.tcl: adding CC functionallity,
+	  i18N messages and links
+
+2005-09-30 15:26  miguelm
+
+	* packages/acs-mail-lite/tcl/acs-mail-lite-procs.tcl: making
+	  changes to work with boolean no_calback_p switch on procedure
+	  acs_mail_lite::send
+
+2005-09-30 14:36  miguelm
+
+	* packages/acs-mail-lite/: lib/email.tcl,
+	  tcl/acs-mail-lite-procs.tcl: making changes to work with boolean
+	  no_calback_p switch
+
+2005-09-30 13:42  maltes
+
+	* packages/acs-mail-lite/tcl/acs-mail-lite-procs.tcl: Changed the
+	  no-callback switch to boolean
+
+2005-09-30 13:36  miguelm
+
+	* packages/acs-mail-lite/lib/email.tcl: adding the optional
+	  parameter no_callback to use in the procedure calls
+
+2005-09-30 13:21  miguelm
+
+	* packages/acs-mail-lite/acs-mail-lite.info: increment version
+	  number to get changes in procedures
+
+2005-09-30 13:18  miguelm
+
+	* packages/acs-mail-lite/tcl/acs-mail-lite-procs.tcl: adding
+	  no_callback switch to acs-mail-lite::complex_send and ::send to
+	  restrict callbacks
+
+2005-09-30 07:10  leed
+
+	* packages/acs-tcl/tcl/application-link-procs.tcl: Allow
+	  application link creation in install action by package_id.
+
+2005-09-30 07:09  leed
+
+	* packages/acs-tcl/tcl/install-procs.tcl: Added install action to
+	  define a relation type.
+
+2005-09-28 11:14  maltes
+
+	* packages/acs-mail-lite/: acs-mail-lite.info,
+	  tcl/acs-mail-lite-callback-procs.tcl,
+	  tcl/acs-mail-lite-callback-procs.xql,
+	  tcl/acs-mail-lite-procs.tcl, tcl/acs-mail-lite-procs.xql:
+	  Importing on behalf of Nima. Enhancement for the support of
+	  incoming email
+
+2005-09-27 07:18  leed
+
+	* packages/acs-tcl/tcl/install-procs.tcl: trim slashes from mount
+	  points so that mounting doesn't break
+
+2005-09-27 02:44  leed
+
+	* packages/acs-tcl/tcl/: object-procs.tcl, object-procs.xql: Added
+	  accessor function to set context id.
+
+2005-09-23 02:56  josee
+
+	* packages/acs-kernel/: acs-kernel.info,
+	  sql/postgresql/upgrade/upgrade-5.2.0d9-5.2.0d10.sql: adding
+	  upgrade script and changing the version number (for the missing
+	  line select
+	  define_function_args('acs_rel__new','rel_id,rel_type,object_id_one,object_id_two,context_id,creation_user,creation_ip')
+	  in the acs-relationships-create.sql file)
+
+2005-09-22 09:40  josee
+
+	* packages/acs-kernel/sql/postgresql/acs-relationships-create.sql:
+	  adding missing line:
+
+	  select
+	  define_function_args('acs_rel__new','rel_id,rel_type,object_id_one,object_id_two,context_id,creation_user,creation_ip');
+
+2005-09-16 23:24  torbenb
+
+	* packages/acs-templating/tcl/util-procs.tcl: correcting poor
+	  formating for my recent changes to tcl_to_sql_list
+
+2005-09-16 23:07  torbenb
+
+	* packages/acs-templating/tcl/: util-procs.tcl,
+	  test/parse-test-procs.tcl: fix for bug 2526, adding
+	  DoubleApos/ns_dbquotevalue functionality
+
+2005-09-12 09:15  miguelm
+
+	* packages/acs-mail-lite/lib/: email.adp, email.tcl: adding element
+	  to the form to call a javascript function that checks or unchecks
+	  all recipients
+
+2005-09-11 23:57  maltes
+
+	* packages/acs-mail-lite/lib/email.tcl: Fixed problem with the
+	  display of empty party_ids
+
+2005-09-07 19:09  skaufman
+
 	* packages/acs-content-repository/sql/postgresql/content-type.sql:
-	  Applied patch supplied by Jeff Davis.
+	  fixes bug 2589, implements patch 730; CR now passes
+	  automated-testing
 
-2006-04-10 02:59  emmar
+2005-09-07 09:46  eduardop
 
+	* packages/acs-tcl/tcl/request-processor-procs.tcl: bugfix: fixing
+	  bug #2591: URL Component Starting with &quot;-&quot; crashes rp_filter
+
+2005-08-22 09:02  leed
+
+	* packages/acs-tcl/tcl/30-xml-utils-procs.tcl: Added tdom set
+	  attribute wrapper
+
+2005-08-22 08:49  leed
+
+	* packages/acs-tcl/tcl/install-procs.tcl: Allow ids as parameter
+	  values
+
+2005-08-19 11:34  jeffd
+
+	* packages/acs-content-repository/: acs-content-repository.info,
+	  sql/postgresql/upgrade/upgrade-5.2.0d17-5.2.0d18.sql,
+	  sql/postgresql/upgrade/upgrade-5.2.0d4-5.2.0d5.sql: fix the
+	  define_function_args thing for content_item__set_live_revision
+	  reported by Peter Alberer
+
+2005-08-13 15:24  torbenb
+
+	* packages/acs-core-docs/www/files/nsd-postgres.txt: adding freebsd
+	  note
+
+2005-08-13 15:11  torbenb
+
+	* etc/daemontools/run: adding freebsd note from oacs-5-1 version
+
+2005-08-10 07:30  maltes
+
+	* packages/acs-mail-lite/tcl/acs-mail-lite-callback-procs.xql:
+	  Added callback procedures
+
+2005-08-09 16:20  marka
+
+	* packages/acs-templating/tcl/list-procs.tcl: I wonder who put this
+	  there! page_name_query was originally there and seems to work
+	  fine...
+
+2005-08-04 10:08  miguelm
+
+	* packages/acs-mail-lite/lib/email.tcl: adding file_id's, adding
+	  check boxes to recipients
+
+2005-08-04 09:57  miguelm
+
+	* packages/acs-mail-lite/tcl/acs-mail-lite-procs.tcl: adding quotes
+	  to query to execute the tcl procedure
+
+2005-08-03 22:55  maltes
+
+	* packages/acs-mail-lite/tcl/acs-mail-lite-procs.tcl: Formatting
+	  changes
+
+2005-08-03 22:53  maltes
+
+	* packages/acs-mail-lite/tcl/acs-mail-lite-procs.tcl: Made sure to
+	  only provide complex send if it can be run
+
+2005-08-03 18:32  skaufman
+
+	* packages/acs-mail-lite/tcl/acs-mail-lite-init.tcl: scan_replies
+	  has been removed -- see
+	  http://cvs.openacs.org/cvs/openacs-4/packages/acs-mail-lite/tcl/acs-mail-lite-procs.tcl?r1=1.26&amp;r2=1.27
+	  -- so it shouldn't be ad_scheduled
+
+2005-08-02 23:10  maltes
+
+	* packages/acs-mail-lite/tcl/: acs-mail-lite-callback-procs.tcl,
+	  acs-mail-lite-procs.tcl: New processing of incoming mail by Nima
+
+2005-07-28 05:51  maltes
+
+	* packages/acs-lang/tcl/lang-util-procs.xql: Added procedure to get
+	  all locales
+
+2005-07-28 05:51  maltes
+
+	* packages/acs-lang/tcl/lang-util-procs.tcl: Added procedure to
+	  retrieve all locales known in the system
+
+2005-07-23 09:55  maltes
+
+	* packages/acs-lang/tcl/locale-procs.tcl: Fixed two bugs (in my
+	  opinion) as the procedure was doing two entirely different things
+	  when called with a user_id or without.
+
+2005-07-22 12:38  skaufman
+
+	* packages/acs-subsite/www/admin/group-types/new.tcl: handles
+	  internationalization of supertypes options
+
+2005-07-21 22:07  skaufman
+
+	* packages/acs-tcl/tcl/object-type-procs.tcl: internationalization
+	  fix for proc acs_object_type_hierarchy
+
+2005-07-21 22:05  skaufman
+
 	*
-	  packages/acs-content-repository/sql/oracle/upgrade/upgrade-5.2.3d1-5.2.3d2.sql:
-	  replacing content_template for package_id param
+	  packages/acs-subsite/www/admin/object-types/alphabetical-index.tcl:
+	  internationalization fix for pretty_name
 
-2006-04-09 15:26  donb
+2005-07-21 22:04  skaufman
 
+	* packages/acs-subsite/www/admin/object-types/one.tcl:
+	  internationalization fix for pretty_name, pretty_plural
+
+2005-07-21 21:49  skaufman
+
+	* packages/acs-subsite/www/admin/rel-types/new-2.tcl: handles
+	  internationalized roles and object types
+
+2005-07-21 19:33  skaufman
+
+	* packages/acs-subsite/www/admin/rel-types/roles/new.tcl: replaces
+	  plsql with tcl api to create role -&gt; internationalizes role names
+
+2005-07-21 17:33  skaufman
+
+	* packages/acs-subsite/www/members/index.xql: query for real roles;
+	  see bug 2543
+
+2005-07-21 17:32  skaufman
+
+	* packages/acs-subsite/www/members/index.tcl: displays in member
+	  list other roles than just member and admin, if defined
+
+2005-07-21 08:51  skaufman
+
+	* packages/acs-admin/www/apm/parameter-delete.tcl: fixes broken
+	  ad_form and returns template correctly
+
+2005-07-21 08:51  skaufman
+
+	* packages/acs-admin/www/apm/parameter-delete.adp: adds missing
+	  template .adp
+
+2005-07-21 06:26  andrewg
+
+	* readme.txt: Testing commit after updating the postcommit_actions
+	  script.  Please ignore.
+
+2005-07-21 05:10  leed
+
+	* packages/acs-bootstrap-installer/tcl/00-proc-procs.tcl: Removed
+	  uneeded case for callbacks.
+
+2005-07-21 02:35  leed
+
+	* packages/acs-bootstrap-installer/tcl/00-proc-procs.tcl: Fixed
+	  callback bug - implementations don't know what the args of the
+	  contract are.
+
+2005-07-19 03:29  leed
+
+	* packages/acs-bootstrap-installer/tcl/00-proc-procs.tcl: Fixed
+	  callbacks to not call the arg parser when no switches are
+	  declared.
+
+2005-07-06 16:31  donb
+
+	* packages/acs-content-repository/sql/postgresql/:
+	  content-revision.sql, content-type.sql,
+	  upgrade/upgrade-5.0.0b3-5.0.0b4.sql: Aesthetic changes, removed
+	  oracle cruft left in as comments by Dan Wickstrom's original
+	  conservsion scripts ( while working on allowing null type table
+	  names).
+
+2005-07-06 07:54  maltes
+
+	* packages/notifications/tcl/: notification-request-procs.tcl,
+	  notification-request-procs.xql: Added new request proc from 5.1
+
+2005-07-06 02:42  maltes
+
+	* packages/acs-mail-lite/tcl/acs-mail-lite-procs.tcl: Using the
+	  hostname is considerable better than using ad_url. Just in case
+	  we strip out &quot;http://&quot; in case someone accidently set the
+	  hostname with an http:// in front (not sure if AOLserver would
+	  allow this in the first place, but the devil is in the details).
+
+2005-07-05 11:49  maltes
+
+	* packages/acs-mail-lite/tcl/acs-mail-lite-procs.tcl: ad_url is
+	  supposed to work even if ns_hostname resolves to a non existing
+	  domain for whatever the reason
+
+2005-06-29 06:39  jeffd
+
+	* packages/acs-tcl/lib/page-error.tcl: send peeraddr out and send
+	  mail to the ad_admin_user not the system_owner since its a better
+	  fit for the role
+
+2005-06-24 17:18  skaufman
+
+	* packages/acs-kernel/catalog/acs-kernel.en_US.ISO-8859-1.xml:
+	  added another missing message key
+
+2005-06-24 17:12  skaufman
+
+	* packages/acs-kernel/catalog/acs-kernel.en_US.ISO-8859-1.xml:
+	  added missing message key
+
+2005-06-22 14:55  victorg
+
+	* packages/acs-kernel/acs-kernel.info: Adding parameter
+	  SendErrorEmailP. This parameter indicates if an email has to be
+	  send to the site owner whenever an error occours or not.
+
+2005-06-22 14:53  victorg
+
+	* packages/acs-tcl/lib/page-error.tcl: Check for acs kernel
+	  parameter ( SendErrorEmailP ) for sending email error or not.
+	  Removing automatic suscription to notifications when creating a
+	  new bug.
+
+2005-06-21 16:24  maltes
+
+	* packages/acs-mail-lite/tcl/acs-mail-lite-procs.tcl: Added a
+	  catch, just in case
+
+2005-06-21 10:33  maltes
+
+	* packages/acs-mail-lite/: lib/email.tcl,
+	  tcl/acs-mail-lite-procs.tcl: Changes to accomodate latest version
+	  of file upload proc
+
+2005-06-21 10:27  timoh
+
+	* packages/acs-mail-lite/lib/email.tcl: added cancel_url
+
+2005-06-21 06:56  timoh
+
+	* packages/acs-mail-lite/lib/email.tcl: fixed richtext
+
+2005-06-21 06:41  maltes
+
+	* packages/acs-templating/:
+	  catalog/acs-templating.de_DE.ISO-8859-1.xml, tcl/file-procs.tcl:
+	  Reverting all changes done previously as the procedure is now in
+	  acs-content-repository
+
+2005-06-21 06:41  maltes
+
+	* packages/acs-content-repository/tcl/content-item-procs.xql: added
+	  query
+
+2005-06-21 06:40  maltes
+
+	* packages/acs-content-repository/tcl/content-item-procs.tcl: After
+	  discussions with dave the proc went to content-item-procs.tcl and
+	  is called content::item::upload_file. Testing on the way
+
+2005-06-21 06:07  maltes
+
+	* packages/acs-templating/tcl/file-procs.tcl: removed proc for
+	  checking for existing filenames and added it to the party proc as
+	  it is party specific
+
+2005-06-21 06:01  maltes
+
+	* packages/acs-templating/tcl/file-procs.tcl: removed
+	  get_file_extension, replace with file command
+
+2005-06-21 03:47  maltes
+
+	* packages/acs-lang/tcl/lang-util-procs.tcl: added
+	  localize_list_of_lists util proc
+
+2005-06-20 23:59  maltes
+
+	* packages/acs-templating/tcl/file-procs.tcl: Added procedure to
+	  store a file for a party_id
+
+2005-06-20 23:59  maltes
+
+	* packages/acs-mail-lite/lib/: email.adp, email.tcl: Added include
+	  for sending email to partys with files
+
+2005-06-19 09:47  maltes
+
+	* packages/acs-tcl/tcl/00-database-procs.tcl: Reverted back to keep
+	  database procs low level
+
+2005-06-15 23:26  maltes
+
+	* packages/acs-mail-lite/tcl/acs-mail-lite-callback-procs.tcl:
+	  Callbacks for acs-mail-lite
+
+2005-06-15 15:13  maltes
+
+	* packages/acs-mail-lite/tcl/acs-mail-lite-procs.tcl: I forgot to
+	  set the subject in the mime type
+
+2005-06-15 11:46  miguelm
+
+	* packages/acs-subsite/tcl/email-image-procs.tcl: adding catch for
+	  email image generation
+
+2005-06-15 11:33  enriquec
+
+	* packages/notifications/tcl/: notification-procs.tcl,
+	  notification-procs.xql: Removing merge implementatios for
+	  notifications
+
+2005-06-15 11:02  annyf
+
+	* packages/acs-subsite/: acs-subsite.info, lib/user-new.tcl,
+	  tcl/apm-callback-procs.tcl: add RegImplName parameter to set the
+	  name of the implementation used in the registration process
+
+2005-06-15 10:08  maltes
+
+	* packages/acs-mail-lite/tcl/acs-mail-lite-procs.tcl: well, you
+	  should be able to send the f*** mail...
+
+2005-06-15 09:03  maltes
+
+	* packages/acs-mail-lite/tcl/acs-mail-lite-procs.tcl: added a
+	  callback for ::send as well
+
+2005-06-15 06:27  maltes
+
+	* packages/acs-mail-lite/tcl/acs-mail-lite-procs.tcl: Added
+	  complex_send procedure
+
+2005-06-14 09:45  joel
+
+	* packages/acs-core-docs/www/xml/engineering-standards/cvs.xml:
+	  rearranged reasons and reworded commit rule re: reformatting
+
+2005-06-14 08:40  annyf
+
+	* packages/acs-subsite/lib/user-new.tcl: change user::registration
+	  implementation name
+
+2005-06-13 09:30  enriquec
+
+	* packages/notifications/tcl/: notification-procs.tcl,
+	  notification-procs.xql: Adding callback implementations:
+	  MergeShowUserInfo and MergePackageUser, to notifications
+
+2005-06-12 14:21  daveb
+
+	* packages/search/www/search.tcl: Implement search as callback.
+	  Service contract optional..
+
+2005-06-12 14:21  daveb
+
+	* packages/search/tcl/search-procs.tcl: Implement indexing and
+	  searching as callbacks. Service contracts still optionally
+	  available.
+
+2005-06-11 07:14  timoh
+
+	* packages/acs-subsite/: lib/user-info.tcl,
+	  www/admin/groups/one.adp, www/admin/groups/one.tcl: map category
+	  trees to groups and categorize users
+
+2005-06-10 14:49  maltes
+
+	* packages/acs-kernel/: catalog/acs-kernel.de_DE.ISO-8859-1.xml,
+	  catalog/acs-kernel.en_US.ISO-8859-1.xml,
+	  sql/postgresql/acs-create.sql, sql/postgresql/groups-create.sql:
+	  yet even more I18N fixes..
+
+2005-06-10 10:52  annyf
+
+	* packages/acs-subsite/acs-subsite.info: remove AsmForRegisterId
+	  parameter since this will be registrated from the assessment
+	  package
+
+2005-06-10 10:41  annyf
+
+	* packages/acs-subsite/tcl/apm-callback-procs.tcl: remove parameter
+	  registration, since it will be done in the assessment package
+
+2005-06-10 10:20  annyf
+
+	* packages/acs-subsite/tcl/apm-callback-procs.tcl: add in the after
+	  upgrade callback the asm registration parameter
+
+2005-06-10 07:54  maltes
+
+	* packages/acs-tcl/tcl/00-database-procs.tcl: Interesting side
+	  effect as acs-lang is loaded after acs-tcl. lang::util::localize
+	  was unknown, so I had to add a check to the db_list_of_lists
+	  procedure to test if the string is actually a message key before
+	  localizing it. Now install works.
+
+2005-06-10 07:49  daveb
+
+	* packages/search/tcl/search-procs.tcl: Add callback proc
+	  definitions
+
+2005-06-10 07:32  maltes
+
+	* packages/acs-subsite/tcl/relation-procs.tcl: Changed to use
+	  boolean. Thx to JCD for the tip.
+
+2005-06-10 07:06  daveb
+
+	* packages/search/tcl/search-procs.tcl: Add support for search
+	  callbacks for datasource.
+
+2005-06-10 02:47  maltes
+
+	* packages/acs-subsite/: catalog/acs-subsite.de_DE.ISO-8859-1.xml,
+	  catalog/acs-subsite.en_US.ISO-8859-1.xml,
+	  sql/postgresql/portraits.sql,
+	  sql/postgresql/user-profiles-create.sql, tcl/relation-procs.tcl:
+	  More I18N. Added a new procedure relation:get_objects that
+	  returns multiple objects instead of throwing an error if you have
+	  multiple relationsships of one type (e.g. on company usually has
+	  multiple employees)
+
+2005-06-09 23:51  maltes
+
+	* packages/acs-tcl/tcl/00-database-procs.tcl: Added the ability to
+	  localize the return of db_list_of_lists. This is something I
+	  should have done already way back before I changed
+	  db_list_of_list calls to db_foreach everywhere. Well, stupidity
+	  rules....
+
+2005-06-09 11:52  annyf
+
+	* packages/acs-subsite/: acs-subsite.info, lib/user-new.tcl,
+	  tcl/callback-procs.tcl: move pages to select the registration
+	  assessment to the Assessment Package and implement the new
+	  callbacks to get the url of the assessment
+
+2005-06-08 13:58  timoh
+
+	* packages/acs-content-repository/: acs-content-repository.info,
+	  sql/oracle/content-type.sql,
+	  sql/oracle/upgrade/upgrade-5.2.0d16-5.2.0d17.sql,
+	  sql/postgresql/content-type.sql,
+	  sql/postgresql/upgrade/upgrade-5.2.0d16-5.2.0d17.sql,
+	  tcl/content-revision-procs.tcl: fixing package_id of revisions;
+	  changed insert trigger to make use of object_package_id in the
+	  insert view
+
+2005-06-08 09:35  maltes
+
+	* packages/: acs-subsite/catalog/acs-subsite.de_DE.ISO-8859-1.xml,
+	  acs-subsite/catalog/acs-subsite.en_US.ISO-8859-1.xml,
+	  acs-lang/catalog/acs-lang.de_DE.ISO-8859-1.xml,
+	  acs-lang/catalog/acs-lang.en_US.ISO-8859-1.xml,
+	  acs-tcl/catalog/acs-tcl.de_DE.ISO-8859-1.xml,
+	  acs-tcl/catalog/acs-tcl.en_US.ISO-8859-1.xml,
+	  search/catalog/search.en_US.ISO-8859-1.xml,
+	  acs-authentication/catalog/acs-authentication.de_DE.ISO-8859-1.xml,
+	  acs-templating/catalog/acs-templating.de_DE.ISO-8859-1.xml,
+	  acs-templating/catalog/acs-templating.en_US.ISO-8859-1.xml,
+	  notifications/catalog/notifications.de_DE.ISO-8859-1.xml,
+	  acs-kernel/catalog/acs-kernel.de_DE.ISO-8859-1.xml,
+	  acs-kernel/catalog/acs-kernel.en_US.ISO-8859-1.xml: Added message
+	  keys
+
+2005-06-08 09:13  maltes
+
+	* packages/acs-subsite/tcl/group-procs.tcl: The group name should
+	  be acs-translated
+
+2005-06-08 08:48  maltes
+
+	* packages/acs-kernel/catalog/acs-kernel.en_US.ISO-8859-1.xml: More
+	  common terms
+
+2005-06-07 12:58  dirkg
+
+	* packages/search/sql/oracle/search-tables-create.sql: Added
+	  package_id to site_wide_index table
+
+2005-06-07 12:00  dirkg
+
+	* packages/search/sql/oracle/search-tables-create.sql: Added
+	  indexed_content field to the site_wide_index table. This field
+	  will hold &quot;textualized&quot; content of binaries.
+
+2005-06-07 06:07  timoh
+
+	* packages/acs-content-repository/tcl/: content-item-procs.tcl,
+	  content-revision-procs.tcl: bugfix: set package_id and context_id
+	  for items and revisions
+
+2005-06-06 23:52  maltes
+
+	* packages/acs-lang/acs-lang.info: Added requirement for
+	  acs-translations due to new I18N procedure (not utterly
+	  necessary, as you could always provide a different package key
+	  and you do not need the package per se, just when you want to
+	  export your message keys, but I think it is still better this
+	  way)
+
+2005-06-06 23:49  maltes
+
+	* packages/acs-lang/tcl/lang-util-procs.tcl: Added procedure to
+	  transform a string into an I18N version of itself (so it can be
+	  translated).
+
+2005-06-05 12:41  maltes
+
+	* packages/acs-lang/tcl/lang-util-procs.tcl: Backed out last
+	  commit, as the procedure already existed and is called
+	  lang::util::localize ...
+
+2005-06-05 12:19  maltes
+
+	* packages/acs-lang/tcl/lang-util-procs.tcl: Added procedure to
+	  convert messages in #message_key# syntax to something that can be
+	  used in select boxes. This is necessary due to the fact thatwe
+	  are storing message_keys e.g. with &quot;pretty_name&quot; directly in the
+	  database.
+
+2005-06-04 16:00  jader
+
+	* packages/acs-core-docs/www/xml/engineering-standards/cvs.xml:
+	  Fixed how to add users to CVS docs
+
+2005-06-04 05:38  maltes
+
+	* packages/acs-subsite/: acs-subsite.info,
+	  tcl/rel-types-procs-oracle.xql,
+	  tcl/rel-types-procs-postgresql.xql, tcl/rel-types-procs.tcl,
+	  tcl/rel-types-procs.xql: Improved the code for the creation of a
+	  relationship type to support custom table names. Added a proc to
+	  create roles
+
+2005-06-04 01:04  maltes
+
+	* packages/acs-translations/acs-translations.info: Initial creation
+	  of acs-translations package
+
+2005-06-03 13:23  maltes
+
+	* packages/: acs-kernel/catalog/acs-kernel.en_US.ISO-8859-1.xml,
+	  acs-subsite/catalog/acs-subsite.en_US.ISO-8859-1.xml: Forgot the
+	  catalog file
+
+2005-06-03 13:14  maltes
+
+	* packages/: acs-kernel/sql/postgresql/community-core-create.sql,
+	  acs-kernel/sql/postgresql/groups-create.sql,
+	  acs-subsite/sql/postgresql/attribute.sql: I18N of Attributes
+
+2005-06-02 12:46  daveb
+
+	* packages/acs-tcl/tcl/request-processor-procs.tcl: Add a list of
+	  valid options to ad_conn api documentation.
+
+2005-06-02 12:36  daveb
+
+	* packages/acs-content-repository/tcl/content-folder-procs.tcl: Add
+	  where clause to content::folder::update
+
+2005-06-01 01:03  maltes
+
+	* packages/acs-tcl/tcl/: application-data-link-procs.tcl,
+	  application-data-link-procs.xql,
+	  application-link-procs-oracle.xql,
+	  application-link-procs-postgresql.xql,
+	  application-link-procs.tcl, application-link-procs.xql,
+	  object-procs.tcl: Added application and application data linking
+	  functionality written by Timo. This allows you to link packages
+	  together (e.g. project-manager and logger) or data of packages
+	  (e.g. a project and a file-storage folder)
+
+2005-05-28 10:51  annyf
+
+	* packages/acs-subsite/acs-subsite.info: fix package version
+
+2005-05-24 14:10  victorg
+
+	* packages/notifications/: notifications.info,
+	  catalog/notifications.en_US.ISO-8859-1.xml,
+	  catalog/notifications.es_ES.ISO-8859-1.xml,
+	  catalog/notifications.es_GT.ISO-8859-1.xml,
+	  www/request-notification.adp, www/request-notification.tcl,
+	  www/request-notification.xql,
+	  www/request-unsubscribe-notification.adp,
+	  www/request-unsubscribe-notification.tcl,
+	  www/request-unsubscribe-notification.xql, www/unsubscribe.tcl,
+	  www/unsubscribe.xql: Adding pages in order to manage
+	  notifications for a group of users or for a given user.
+
+2005-05-22 19:32  daveb
+
+	* packages/acs-content-repository/sql/postgresql/content-type.sql:
+	  Fix define function args call to use parent_type for parametr
+	  name to match oracle instead of content_type.
+
+2005-05-21 04:34  dirkg
+
+	* packages/search/sql/oracle/: load-site-wide-search,
+	  search-ctxsys.sql, search-from-scratch.sql,
+	  search-im-convert.sql, search-index-create.sql,
+	  search-index-drop.sql, search-index-from-scratch.sql,
+	  search-packages-create.sql, search-packages-drop.sql,
+	  search-tables-create.sql, search-tables-drop.sql: first draft for
+	  .lrn search. run load-site-wide-search shell script to install
+
+2005-05-20 16:28  jader
+
+	* packages/acs-core-docs/www/xml/install-guide/postgres.xml:
+	  Correct URL in documentation for Mac OS X startup
+
+2005-05-18 13:01  andrewg
+
+	* packages/acs-tcl/tcl/utilities-procs.tcl: Re-merging the cookie
+	  code committed on the oacs-5-1 branch, to version 1.70.2.8
+
+2005-05-18 12:59  andrewg
+
+	* packages/acs-tcl/tcl/utilities-procs.tcl: Backing out of previous
+	  commit.  This version should be identical to 1.83
+
+2005-05-18 12:03  andrewg
+
+	* packages/acs-tcl/tcl/utilities-procs.tcl: Merging previous commit
+	  from oacs-5-1 onto HEAD.  Please see comments for 1.70.2.8.
+
+2005-05-16 06:15  jeffd
+
+	* packages/tsearch2-driver/tcl/tsearch2-driver-install-procs.tcl:
+	  pg8 installed in usr local has tsearch2 in $prefix/share/contrib
+	  -- we should probably try to guess based on pg_config --libdir or
+	  something
+
+2005-05-13 11:47  skaufman
+
+	* packages/acs-templating/www/resources/lists.css: eliminates ugly
+	  border around list sort arrows for list-narrow style
+
+2005-05-12 14:35  jeffd
+
+	* packages/acs-content-repository/: acs-content-repository.info,
+	  sql/common/mime-type-data.sql,
+	  sql/oracle/upgrade/upgrade-5.2.0d15-5.2.0d16.sql,
+	  sql/postgresql/upgrade/upgrade-5.2.0d15-5.2.0d16.sql: add some
+	  common mimetypes, bump version, upgrade scripts provided
+
+2005-05-12 13:24  jeffd
+
+	* packages/acs-tcl/tcl/form-processing-procs.tcl: check both the
+	  ad_form elements and the template elements
+
+2005-05-12 12:12  jeffd
+
+	* packages/acs-tcl/tcl/form-processing-procs.tcl: inverted logic
+	  and the wrong element key from last commit
+
+2005-05-12 04:45  jeffd
+
+	* packages/acs-tcl/tcl/text-html-procs.tcl: duh A-F not A-f
+
+2005-05-12 04:42  jeffd
+
+	* packages/acs-tcl/tcl/text-html-procs.tcl: fix expanding hex
+	  entities resolves bug 2454
+
+2005-05-12 01:41  jeffd
+
+	* packages/acs-tcl/tcl/form-processing-procs.tcl: use
+	  template::element::exists for checking if an element exists for
+	  validation blocks - faster and works in the event you added an
+	  element directly via the form api
+
+2005-05-11 06:24  carolinem
+
+	* packages/acs-subsite/www/resources/default-master.css:
+	  submit-button class
+
+2005-05-10 09:17  andrewg
+
+	* packages/acs-admin/www/apm/parameter-delete.tcl: Bringing in last
+	  commit from the oacs-5-1 branch onto HEAD.
+
+2005-05-06 09:25  richardh
+
+	* packages/acs-lang/tcl/lang-install-procs.tcl: Added namespace
+	  eval to avoid start-up failure
+
+2005-05-03 15:10  jeffd
+
+	* packages/acs-templating/tcl/widget-procs.tcl: inverted logic on
+	  checking multiple in last commit
+
+2005-05-03 14:23  jeffd
+
+	* packages/acs-templating/tcl/widget-procs.tcl: support a
+	  display_widget attribute for the category widget so we can show
+	  checkboxes for category selection
+
+2005-05-03 03:26  jeffd
+
+	* packages/acs-templating/tcl/widget-procs.tcl: make 4 space
+
+2005-05-02 14:13  skaufman
+
+	* packages/acs-api-browser/www/: proc-view.adp, proc-view.tcl:
+	  maintains chain-of-crumb links when toggling show/hide source
+
+2005-04-28 17:25  jeffd
+
+	* packages/acs-subsite/lib/login.adp: get rid of spurious -
+
+2005-04-28 15:38  jeffd
+
+	* packages/acs-content-repository/tcl/revision-procs.tcl: throw a
+	  NOT_FOUND error for not found so we can 404 in things like
+	  photo-album/www/image/index.vuh
+
+2005-04-28 11:45  skaufman
+
+	* packages/acs-api-browser/www/proc-view.tcl: adds package to
+	  trail-of-crumbs for proc-view as it is in procs-file-view,
+	  display-sql, etc
+
+2005-04-28 03:33  jeffd
+
+	* packages/acs-subsite/www/pvt/home.tcl: use -catch for callback so
+	  if page fragment has error we still serve page
+
+2005-04-28 02:53  jeffd
+
+	* packages/acs-subsite/www/register/account-closed.tcl: change msg
+	  key in account-closed page, uppercase key
+
+2005-04-28 02:49  jeffd
+
+	* packages/acs-subsite/catalog/acs-subsite.en_US.ISO-8859-1.xml:
+	  add the account closed title msg key
+
+2005-04-28 02:46  jeffd
+
+	* packages/acs-subsite/www/register/account-closed.tcl: change msg
+	  key in account-closed page
+
+2005-04-27 07:46  jeffd
+
+	* packages/acs-tcl/tcl/request-processor-procs.tcl: fix getting the
+	  referrer and constructing the url for the email traceback notify
+
+2005-04-27 04:27  timoh
+
+	* packages/acs-content-repository/tcl/content-item-procs.tcl: added
+	  defaults for creation user and creation ip of content-items
+
+2005-04-26 18:06  jeffd
+
+	* packages/acs-subsite/www/register/account-closed.tcl: doubled up
+	  title/text annoying
+
+2005-04-26 07:36  jader
+
+	* packages/acs-tcl/tcl/utilities-init.tcl: Applying Nis' fix for
+	  bug 2407 (log rotation runs only on canonical server)
+
+2005-04-25 15:50  victorg
+
+	* packages/acs-content-repository/tcl/item-procs.tcl: Adding
+	  default value to db_string in item::get_live_revision
+
+2005-04-25 06:29  timoh
+
+	* packages/acs-templating/: resources/lists/table.adp,
+	  tcl/list-procs.tcl: added 10 as dynamic list size; let selectbox
+	  for dynamic size appear always
+
+2005-04-22 01:29  eduardop
+
+	* packages/acs-content-repository/tcl/revision-procs-oracle.xql:
+	  bugfix: fixing bug #2402, bad merge
+
+2005-04-21 10:13  timoh
+
+	* packages/acs-templating/: resources/lists/table.adp,
+	  tcl/list-procs.tcl: added variable row numbers via selectbox;
+	  added pagination b&quot; ar at bottom of list
+
+2005-04-20 13:11  daveb
+
+	* packages/acs-content-repository/tcl/filter-procs.tcl: Pass
+	  resolve index to get_id
+
+2005-04-20 06:21  eduardop
+
+	* packages/acs-content-repository/tcl/revision-procs-oracle.xql:
+	  fix (people should try these changes first prior to commit)
+
+2005-04-20 04:48  eduardop
+
+	* packages/: acs-admin/www/apm/packages-install-2.tcl,
+	  acs-content-repository/sql/postgresql/upgrade/upgrade-5.1.4d2-5.1.4d3.sql,
+	  acs-tcl/tcl/navigation-callback-procs.tcl: fix pacakge -&gt; package
+	  typo
+
+2005-04-19 19:11  jader
+
+	* packages/acs-core-docs/www/xml/install-guide/openacs.xml: Fixed
+	  typo in reference guide, courtesy of Oscar Castaneda V.
+
+2005-04-14 10:33  jader
+
+	* packages/: acs-bootstrap-installer/tcl/20-db-bootstrap-procs.tcl,
+	  acs-tcl/tcl/00-database-procs.tcl: Updated to work with Oracle
+	  10. Was using Oracle8 hardcoded -- the new code is is more
+	  flexible with what the driver calls itself.
+
+2005-04-13 01:28  maltes
+
+	* packages/acs-content-repository/tcl/content-folder-procs.tcl:
+	  Added function to return the content_folder_id for a package
+
+2005-04-13 01:23  maltes
+
+	* packages/acs-tcl/tcl/: object-type-procs.tcl,
+	  object-type-procs.xql: Added function (cached) to return
+	  table_name of an object
+
+2005-04-12 19:41  daveb
+
+	* packages/tsearch2-driver/tcl/: tsearch2-driver-procs.tcl,
+	  test/tsearch2-driver-procs.tcl: Fix case when a one character
+	  term is in the middle of two other terms. Add test case.
+
+2005-04-12 11:52  eduardop
+
+	* etc/install/: checkout.sh, install.tcl, updateserver.sh,
+	  oracle/recreate-user.sh: update
+
+2005-04-12 07:37  andrewg
+
+	* packages/acs-templating/www/resources/: bullet.gif, minus.gif,
+	  mktree.css, mktree.js, plus.gif: Adding dhtml tree code.
+
+2005-04-11 15:21  leed
+
+	* packages/acs-tcl/tcl/callback-procs.tcl: Added procs for querying
+	  callbacks.
+
+2005-04-11 15:18  leed
+
+	* packages/acs-tcl/tcl/: object-type-procs-oracle.xql,
+	  object-type-procs-postgresql.xql, object-type-procs.tcl: Fixed
+	  supertype accessor.
+
+2005-04-07 13:16  miguelm
+
+	* packages/acs-subsite/catalog/acs-subsite.en_US.ISO-8859-1.xml:
+	  add messages related to the register assessment
+
+2005-04-07 11:06  miguelm
+
+	* packages/acs-subsite/catalog/acs-subsite.en_US.ISO-8859-1.xml:
+	  add messages related to registration assessment
+
+2005-04-04 10:59  miguelm
+
+	* packages/acs-subsite/catalog/acs-subsite.en_US.ISO-8859-1.xml:
+	  add message displayed when the assessment is related to the
+	  registration process
+
+2005-04-04 10:47  miguelm
+
+	* packages/acs-subsite/www/admin/index.adp: add links to edit and
+	  create the registration assessment
+
+2005-04-04 03:38  jeffd
+
+	* packages/tsearch2-driver/tcl/tsearch2-driver-procs.tcl: multiple
+	  words were not tokenized properly
+
+2005-04-03 01:33  leed
+
+	* packages/acs-tcl/tcl/: object-type-procs-oracle.xql,
+	  object-type-procs-postgresql.xql, object-type-procs.tcl:
+	  Functions to get the parent types of an object type with
+	  util_memoize caching.
+
+2005-04-01 12:18  torbenb
+
+	* packages/acs-core-docs/www/xml/install-guide/oracle.xml: adding
+	  link about Andrew Piskorski's Oracle9i install notes per thread
+	  http://openacs.org/forums/message-view?message_id=67108
+
+2005-04-01 10:51  jader
+
+	* packages/acs-core-docs/www/xml/install-guide/maintenance.xml:
+	  Updated link on maintenance page, thanks to Wojtek Przywrzej
+
+2005-03-30 07:00  jeffd
+
+	* packages/search/tcl/search-procs.tcl: object_type unavailable on
+	  delete
+
+2005-03-29 17:01  jeffd
+
+	* packages/acs-bootstrap-installer/tcl/00-proc-procs.tcl: fix for
+	  trailing space on boolean flag resolves bug 2381 by Carl
+	  Coryell-Martin
+
+2005-03-29 16:36  jeffd
+
+	* packages/acs-tcl/tcl/parameter-procs.tcl: add param docs for
+	  localize and boolean for parameter;:get
+
+2005-03-29 15:39  jeffd
+
+	* packages/search/tcl/: search-procs.tcl, syndicate-procs.tcl: add
+	  a search::action callback and make the syndication called from
+	  the callback rather than inline.
+
+2005-03-29 06:44  jader
+
+	* packages/acs-core-docs/www/xml/install-guide/: maintenance.xml,
+	  overview.xml: Added link to binary installers
+
+2005-03-29 02:28  jeffd
+
+	* packages/acs-bootstrap-installer/tcl/00-proc-procs.tcl: have
+	  callbacks executed one level below the calling function so upvar
+	  works how you would expect in the callback
+
+2005-03-29 02:23  jeffd
+
+	* packages/acs-tcl/tcl/test/ad-proc-test-procs.tcl: test that array
+	  pass by ref works as expected, test eval uplevel work with empty
+	  args and that only one round of eval applied
+
+2005-03-29 00:46  jeffd
+
+	* packages/acs-tcl/tcl/install-procs.tcl: fix docs for
+	  set-parameter-default
+
+2005-03-28 02:18  carlb
+
+	* packages/acs-core-docs/www/xml/install-guide/aolserver4.xml:
+	  cleaned up doc, removed references to specific aolserver versions
+	  where posible, and added needed library path variable for
+	  nsposgres
+
+2005-03-27 08:04  daveb
+
+	* packages/search/www/search.tcl: Remove ETP specific code from
+	  search package. Also trimming &quot;index&quot; from all ETP urls could
+	  quite possibly trim something uninteded. The correct course of
+	  action would be to handle this in the ETP URL service contract
+	  using file commands to get just the filename if it exactly
+	  matches index.
+
+2005-03-26 14:56  jeffd
+
+	* packages/acs-lang/tcl/lang-install-procs.tcl: fix typo in
+	  disable-locale action
+
+2005-03-26 14:55  jeffd
+
+	* packages/acs-tcl/tcl/parameter-procs.xql: wrong field name for
+	  default_value
+
+2005-03-26 06:35  jeffd
+
+	* packages/acs-subsite/www/pvt/home.tcl: fix subsite_url
+
+2005-03-26 04:30  jeffd
+
+	* packages/acs-content-repository/: acs-content-repository.info,
+	  sql/postgresql/content-item.sql,
+	  sql/postgresql/upgrade/upgrade-5.2.0d14-5.2.0d15.sql: propigate
+	  title rather than name for content_item__new, bump to d15,
+	  upgrade
+
+2005-03-25 15:59  jeffd
+
+	* packages/acs-subsite/: lib/message.adp, lib/message.tcl,
+	  www/register/account-closed.tcl, www/register/email-confirm.tcl:
+	  add a message include and change the account closed and
+	  email-confirm pages to use it
+
+2005-03-25 09:04  jeffd
+
+	* packages/acs-lang/tcl/lang-install-procs.tcl: document a bit
+	  better, add a disable-locale action
+
+2005-03-25 08:58  jeffd
+
+	* packages/acs-tcl/tcl/install-procs.tcl: add the
+	  set-default-parameter install action
+
+2005-03-25 08:49  jeffd
+
+	* packages/acs-tcl/tcl/: parameter-procs.tcl, parameter-procs.xql:
+	  add a parameter::set_default function used by teh
+	  set-parameter-default install action
+
+2005-03-24 10:37  skaufman
+
+	* packages/acs-kernel/catalog/acs-kernel.en_US.ISO-8859-1.xml: adds
+	  missing key for common_Submit
+
+2005-03-24 08:26  daveb
+
+	* packages/acs-tcl/tcl/site-nodes-procs.tcl: Allow context_id as an
+	  optional parameter to site_node::mount to allow update if a
+	  package is moved to a different site_node.
+
+2005-03-23 16:37  jeffd
+
+	* packages/acs-tcl/lib/page-error.tcl: quotehtml the error and user
+	  agent
+
+2005-03-23 14:51  skaufman
+
+	* packages/acs-templating/www/resources/lists.css: removes ugly
+	  border around sort-order arrows
+
+2005-03-23 14:21  skaufman
+
+	* packages/acs-templating/resources/lists/table.adp: border is
+	  deprecated and should not be used here
+
+2005-03-23 14:01  skaufman
+
+	* packages/acs-templating/resources/lists/table.adp: removed ugly
+	  border around sort-order arrows in listbuilder
+
+2005-03-23 13:53  leed
+
+	* packages/acs-bootstrap-installer/tcl/00-proc-procs.tcl: Callbacks
+	  no longer throw an error if -catch is specified with -impl and
+	  the chosen implementation that does not exist.
+
+2005-03-23 05:54  daveb
+
+	* packages/search/tcl/search-procs.tcl: Revert client specific code
+	  checked in.
+
+2005-03-22 18:26  daveb
+
+	* packages/search/tcl/search-procs.tcl: Add support to update
+	  acs_objects.package_id and acs_objects.title on index for search.
+	  PBS specific enhancement to support clipboard and other 5.2
+	  functionality.
+
+2005-03-21 21:53  gabrielb
+
+	* packages/acs-kernel/sql/postgresql/postgresql.sql: Fixes bug
+	  #2300.
+
+2005-03-21 16:57  jeffd
+
+	* packages/acs-subsite/: lib/user-subsites.adp,
+	  lib/user-subsites.tcl, tcl/callback-procs.tcl, www/pvt/home.adp,
+	  www/pvt/home.tcl: user subsite list
+
+2005-03-21 14:16  jeffd
+
+	* packages/acs-subsite/lib/: user-info.adp, user-info.tcl: remove
+	  the list of groups and replace with list of links to communities
+	  based on application group membership
+
+2005-03-21 14:05  jeffd
+
+	* packages/acs-kernel/acs-kernel.info: make AllowedTag match the
+	  physical markup used by RTE
+
+2005-03-21 03:59  rob
+
+	* packages/acs-kernel/sql/: oracle/acs-create.sql,
+	  postgresql/acs-create.sql: Added annotate permission as per TIP
+	  74
+
+2005-03-21 00:14  jeffd
+
+	* packages/acs-kernel/catalog/acs-kernel.en_US.ISO-8859-1.xml: add
+	  an Actions common key
+
+2005-03-20 16:15  donb
+
+	* packages/acs-automated-testing/acs-automated-testing.info: Made
+	  this auto-mounted package a singleton so it doesn't show up in
+	  the &quot;mount application&quot; select list.	There's no good reason to
+	  mount it more than once anyway that either daveb or I could come
+	  up with.
+
+2005-03-20 08:13  jeffd
+
+	* packages/acs-kernel/catalog/acs-kernel.en_US.ISO-8859-1.xml: add
+	  a common key: Permissions
+
+2005-03-20 07:58  jeffd
+
+	* packages/acs-content-repository/sql/postgresql/:
+	  content-folder.sql, content-item.sql, content-revision.sql,
+	  upgrade/upgrade-5.2.0d12-5.2.0d13.sql: fix laundry list of bugs
+	  in content repository copy code.
+
+	  duplicate version of the 11arg content_folder__new
+
+	  copy_creation_ip rather than copy__creation_ip in
+	  content_revision__copy
+
+	  content_folder__copy did not preserve context_id properly
+
+	  content_item__copy2 had a bunch of unused varaibles -- removed
+	  them.
+
+	  content_item__copy now preserves live_revision so things which
+	  copy an item with a live revision to not have to explicitly
+	  publish the new copy (which eg file storage did not do).
+
+	  content_revision__copy did an insert into acs_objects without
+	  specifying column names which breaks on a new install since the
+	  order is not as expected.
+
+2005-03-20 05:41  daveb
+
+	* packages/acs-content-repository/:
+	  tcl/test/content-keyword-test-procs.tcl,
+	  tcl/test/content-keyword-test-procs.xql,
+	  acs-content-repository.info, sql/postgresql/content-keyword.sql,
+	  sql/postgresql/upgrade/upgrade-5.2.0d13-5.2.0d14.sql: Add
+	  content_keyword__del to match oracle pl/sql.	Add
+	  define_function_args calls for content-keyword.sql.  Add basic
+	  tests for content::keyword apis.
+
+2005-03-19 17:23  jeffd
+
+	* packages/acs-tcl/tcl/test/ad-proc-test-procs.tcl: add a couple
+	  extra callbacks to make tests not fail after the first run (when
+	  the callbacks it thinks should not be defined actually are
+	  defined since we have been through once
+
+2005-03-19 16:53  daveb
+
+	* packages/acs-content-repository/tcl/keyword-procs.tcl: Fix proc
+	  name, should br cr::keyword::delete
+
+2005-03-19 16:47  jeffd
+
+	* packages/acs-tcl/: lib/actions.adp, lib/actions.tcl,
+	  tcl/navigation-callback-procs.tcl: add a
+	  navigation::package_admin callback and an implementation for
+	  forums and the lib include to generate html
+
+2005-03-19 14:57  jeffd
+
+	* packages/acs-templating/tcl/richtext-procs.tcl: daveb spotted
+	  that the quoting was wrong for the on_fail arg, \r not stripped
+
+2005-03-19 06:06  jeffd
+
+	* packages/acs-api-browser/: tcl/acs-api-documentation-procs.tcl,
+	  www/content-page-view.adp: fix markup, make @see
+	  /file/path/foo.tcl, @see /doc/db-api.html @see
+	  http://openacs.org/foo work
+
+2005-03-18 10:31  andrewg
+
+	* packages/acs-lang/sql/oracle/ad-locales.sql: Re-removing stray
+	  'end', introduced by victorg's commit.
+
+2005-03-18 10:10  jeffd
+
+	* packages/acs-subsite/www/resources/core.js,
+	  packages/acs-templating/tcl/richtext-procs.tcl,
+	  packages/acs-templating/tcl/widget-procs.tcl,
+	  www/blank-master.adp, www/blank-master.tcl: Switch to RTE for
+	  richtext html editor.
+
+2005-03-18 05:50  jeffd
+
+	* packages/acs-content-repository/sql/postgresql/:
+	  content-folder.sql, upgrade/upgrade-5.2.0d12-5.2.0d13.sql: minor
+	  fix: move_name should have been move__name
+
+2005-03-18 05:44  jeffd
+
+	* packages/acs-content-repository/: acs-content-repository.info,
+	  sql/postgresql/upgrade/upgrade-5.2.0d12-5.2.0d13.sql: upgrade to
+	  fix bug in content_folder__move and add the integer,integer
+	  version used in content_item__move; bump to 5.2.0d13.  thanks
+	  daveb
+
+2005-03-17 19:21  daveb
+
+	*
+	  packages/acs-content-repository/sql/postgresql/content-folder.sql:
+	  Add content_folder__move function that allows rename on move.
+	  Already existed on Oracle.
+
+2005-03-17 16:04  jeffd
+
+	* packages/acs-subsite/catalog/acs-subsite.en_US.ISO-8859-1.xml:
+	  speeleng error
+
+2005-03-17 05:33  jeffd
+
+	* packages/acs-subsite/tcl/subsite-procs.tcl: use parameter::get
+	  for getting SolicitPortraitP param rather than pacakge-key which
+	  breaks with multiple subsites bug 2357 patch 653 Orzenil Silva
+	  Junior
+
+2005-03-17 00:35  jeffd
+
+	* packages/search/tcl/search-procs.tcl: more error checking
+
+2005-03-17 00:33  jeffd
+
+	* packages/acs-tcl/tcl/apm-install-procs.tcl: fix string literal
+	  arg to empty_string_p
+
+2005-03-16 11:19  jeffd
+
+	* packages/acs-templating/tcl/tag-procs.tcl: &lt;if XXYYZZ in YY&gt;
+	  would return true.  this fixes it so the literal string has to be
+	  in there
+
+2005-03-16 06:14  leed
+
+	* packages/acs-tcl/tcl/install-procs.tcl: Allow package key to be
+	  specified using the package attribute as well package-key.
+
+2005-03-15 12:04  daveb
+
+	* packages/acs-bootstrap-installer/installer/index.tcl: Change form
+	  from GET to POST so password isn't logged in access log. Fix
+	  bug#1743.
+
+2005-03-14 10:03  carlb
+
+	* packages/acs-templating/www/doc/guide/index.html: fixed links and
+	  removed aD email
+
+2005-03-13 16:45  carlb
+
+	* packages/acs-subsite/catalog/acs-subsite.en_US.ISO-8859-1.xml:
+	  changed private level to privacy level
+
+2005-03-13 16:41  carlb
+
+	* packages/acs-subsite/catalog/acs-subsite.de_DE.ISO-8859-1.xml:
+	  character encoding fixes and translations
+
+2005-03-13 15:51  daveb
+
+	* packages/: acs-subsite/catalog/acs-subsite.en_US.ISO-8859-1.xml,
+	  acs-authentication/tcl/authentication-procs.tcl: Fix bug#2310
+
+2005-03-13 14:52  daveb
+
+	* packages/acs-tcl/tcl/: site-nodes-procs.tcl,
+	  site-nodes-procs.xql: Fix bug#2176, update context_id when
+	  remounting and unmounted package instance
+
+2005-03-13 14:21  donb
+
+	* packages/acs-subsite/tcl/: package-procs-oracle.xql,
+	  test/acs-subsite-procs.tcl: Bug #2274: My removal of &quot;upper()&quot;
+	  some time back broke some things, hmmm, put it back in.
+
+2005-03-12 16:59  michaels
+
+	* packages/acs-subsite/www/admin/host-node-map/: index-oracle.xql,
+	  index-postgresql.xql, index.adp, index.tcl, index.xql: templated
+	  host-node map; now uses listbuilder and ad_form
+
+2005-03-12 14:59  donb
+
+	* packages/acs-subsite/lib/subsites.xql: Jeff's &quot;anyone can be a
+	  subsite&quot; patch came complete with an extra &quot;]&quot;.  &quot;acs-subite&quot;
+	  doesn't match &quot;acs-subsite]&quot; ...
+
+2005-03-12 14:47  jeffd
+
+	* packages/acs-tcl/tcl/request-processor-procs.tcl: return
+	  recursion_count from ad_conn even if not initialized bug 1788
+
+2005-03-12 13:39  donb
+
+	* packages/acs-templating/tcl/date-procs.tcl:
+	  Modified the date type's &quot;to_sql&quot; property to return to_timestamp
+	  if the format includes minutes and seconds, to_date otherwise.
+	  In reality we should probably move to having both date and
+	  timestamp template types but for now this should work for both
+	  Oracle and PG.
+
+2005-03-12 13:38  michaels
+
+	* packages/acs-subsite/www/admin/site-map/instance-delete.tcl:
+	  fixed small redirect bug
+
+2005-03-12 13:36  michaels
+
+	* packages/acs-subsite/www/admin/site-map/: unmounted.tcl,
+	  unmounted.adp: added adp for umounted applications page
+
+2005-03-12 13:28  andrewg
+
+	* packages/acs-content-repository/sql/oracle/content-folder.sql:
+	  This is just a comment on the previous commit.  Oracle was
+	  refusing to compile the package because the specification and
+	  body were not declaring the type in an identical way.  The
+	  specification says that the package_id column is of type
+	  acs_objects.package_id%TYPE but the body previously was declaring
+	  it cr_folders.package_id%TYPE.  That wasn't good enough for
+	  Oracle.  Now the two are declaring the type the same way.
+
+2005-03-12 11:45  andrewg
+
+	* packages/acs-content-repository/sql/oracle/:
+	  content-template.sql, packages-create.sql: Bugfix.
+
+2005-03-12 11:22  andrewg
+
+	* packages/acs-content-repository/sql/oracle/: content-folder.sql,
+	  content-item.sql: Bugfix
+
+2005-03-12 11:07  daveb
+
+	* packages/acs-subsite/acs-subsite.info: Require acs-authenication
+	  so it will upgrade correctly.
+
+2005-03-11 15:51  jeffd
+
+	* packages/acs-bootstrap-installer/tcl/00-proc-procs.tcl: i am a
+	  monkey
+
+2005-03-11 15:49  leed
+
+	* packages/acs-tcl/tcl/test/ad-proc-test-procs.tcl: Added tests for
+	  ad_proc callbacks.
+
+2005-03-11 15:48  jeffd
+
+	* packages/acs-bootstrap-installer/tcl/00-proc-procs.tcl: throw
+	  error if invoking specific impl which does not exist
+
+2005-03-11 15:41  jeffd
+
+	* packages/acs-bootstrap-installer/tcl/00-proc-procs.tcl: fix empty
+	  body contract check
+
+2005-03-11 15:15  jeffd
+
+	* packages/acs-bootstrap-installer/tcl/00-proc-procs.tcl: some
+	  error checking for callback declaration, fix namespace eval
+	  warning, add an @see for the contract to each impl
+
+2005-03-11 14:37  jeffd
+
+	* packages/acs-bootstrap-installer/tcl/00-proc-procs.tcl: too listy
+	  by far
+
+2005-03-11 12:12  jeffd
+
+	* packages/acs-bootstrap-installer/tcl/00-proc-procs.tcl: Callback
+	  implmentation, see tip 79 for details
+
+2005-03-10 07:25  victorg
+
+	* packages/acs-lang/sql/: oracle/ad-locales.sql,
+	  postgresql/ad-locales.sql: There was two default locales for
+	  languages 'es' and 'zh'
+
+2005-03-10 07:22  leed
+
+	* packages/acs-tcl/tcl/site-nodes-procs.tcl: Added
+	  site_node::get_ancestors proc.
+
+2005-03-10 07:20  leed
+
+	* packages/acs-tcl/tcl/apm-install-procs.tcl: Add adp parse level
+	  to install xml parsing to allow use of multirows.
+
+2005-03-09 17:42  jeffd
+
+	* packages/: search/search.info, search/tcl/search-procs.tcl,
+	  search/www/advanced-search.adp, search/www/index.adp,
+	  search/www/search.adp, search/www/search.tcl,
+	  tsearch2-driver/tsearch2-driver.info,
+	  tsearch2-driver/tcl/tsearch2-driver-procs.tcl: subsite scoped
+	  search
+
+2005-03-09 15:40  jeffd
+
+	* packages/acs-tcl/tcl/test/file-test-procs.tcl: comment some code,
+	  check for limit :bind which breaks pg7.3
+
+2005-03-09 11:19  leed
+
+	* packages/acs-tcl/tcl/request-processor-procs.tcl: Fixed length of
+	  string calc.
+
+2005-03-09 08:24  jeffd
+
+	* packages/acs-bootstrap-installer/tcl/00-proc-procs.tcl: log a
+	  debug message for procs declared in a namespace eval rather than
+	  explicit namespace
+
+2005-03-07 19:22  daveb
+
+	* packages/tsearch2-driver/tcl/: tsearch2-driver-procs.tcl,
+	  test/tsearch2-driver-procs.tcl: Cleanup build_query proc a
+	  little. Add automated tests for build_query.
+
+2005-03-07 16:06  jeffd
+
+	* packages/acs-subsite/tcl/subsite-procs.tcl: comment out query for
+	  now since the it breaks in a transaction -- hardcode acs-subsite
+
+2005-03-07 15:48  jeffd
+
+	* packages/acs-subsite/tcl/subsite-procs.xql: missed the
+	  subsite-procs app group create query names somehow tip 76
+
+2005-03-07 15:32  jeffd
+
+	* packages/acs-subsite/lib/subsites.xql: missing close querytext
+
+2005-03-07 15:21  jeffd
+
+	* packages/acs-reference/acs-reference.info: fix lingering broken
+	  ad links
+
+2005-03-07 13:26  jeffd
+
+	* packages/acs-tcl/tcl/site-nodes-procs.tcl: another tip 76 change
+	  for hardcoded acs-subsite
+
+2005-03-07 13:10  jeffd
+
+	* packages/acs-subsite/www/permissions/perm-include.tcl: fix to use
+	  ad_conn subsite_url
+
+2005-03-07 13:02  jeffd
+
+	* packages/: acs-subsite/lib/subsites.tcl,
+	  acs-subsite/lib/subsites.xql,
+	  acs-tcl/tcl/request-processor-procs.tcl,
+	  acs-subsite/tcl/subsite-procs-oracle.xql,
+	  acs-subsite/tcl/subsite-procs-postgresql.xql,
+	  acs-subsite/tcl/subsite-procs.tcl,
+	  acs-subsite/tcl/subsite-procs.xql: first part of tip 76 --
+	  multiple packages as subsites adds a subsite::package_keys
+	  function for listing subsites, and uses it instead of hard coding
+	  acs-subsite all over
+
+2005-03-07 12:47  jeffd
+
+	* packages/search/tcl/search-procs.tcl: typo two log messages
+
+2005-03-07 07:36  jeffd
+
+	* packages/acs-kernel/catalog/acs-kernel.en_US.ISO-8859-1.xml: add
+	  a details common key
+
+2005-03-07 05:24  jeffd
+
+	* packages/search/tcl/search-procs.tcl: make the search indexer
+	  much more robust to errors in the datasource or indexing routines
+	  -- catch + emit traceback for errors
+
+2005-03-06 11:15  daveb
+
+	* packages/tsearch2-driver/tcl/tsearch2-driver-procs.tcl: Add
+	  -nocase to regsub for NOT operator at the beginnign of query
+	  string.
+
+2005-03-06 11:09  jeffd
+
+	* packages/acs-kernel/: acs-kernel.info,
+	  sql/postgresql/postgresql.sql,
+	  sql/postgresql/upgrade/upgrade-5.2.0d8-5.2.0d9.sql: add an
+	  explicit cast of proname in drop_package needed in pg8
+
+2005-03-06 10:15  jeffd
+
+	* www/robots.txt: add wildcard disallow for googlebot
+
+2005-03-04 15:09  jeffd
+
+	* packages/acs-tcl/tcl/: 00-database-procs.tcl, ds-stub-procs.tcl,
+	  request-processor-procs.tcl: stub ds procs rather than call
+	  ad_call_proc_if_defined_and_function_name_too_short
+
+2005-03-04 14:30  jeffd
+
+	* packages/acs-tcl/tcl/acs-permissions-procs.tcl: change how
+	  permission::cache_p is defined so it does not break ttrace
+
+2005-03-04 13:22  jeffd
+
+	* packages/acs-subsite/tcl/: relation-procs.tcl,
+	  relation-procs.xql: utility proc for getting related items
+
+2005-03-03 15:16  donb
+
+	* packages/acs-tcl/tcl/form-processing-procs.tcl: 1. Allow use of
+	  variables in form element names, so you can more easily build
+	  dynamic forms.  2. Relax the rules slightly so you can initialize
+	  a form without providing    a form block.
+
+2005-03-03 13:06  jeffd
+
+	* packages/acs-tcl/tcl/request-processor-init.tcl: change cache_p
+	  to cache in first call of function not in init; emit notice on
+	  registering filters and procs
+
+2005-03-03 10:17  jeffd
+
+	* tcl/zz-postload.tcl: don't rename away __is_xql
+
+2005-03-03 04:15  jeffd
+
+	* packages/acs-lang/tcl/localization-data-init.tcl: include
+	  variable define for ::lang::util::percent_match
+
+2005-03-02 18:36  donb
+
+	* packages/acs-tcl/acs-tcl.info: Needed to bump version number
+	  because I'm writing code that depends on my change to ad_form ...
+
+2005-03-02 18:35  donb
+
+	* packages/acs-tcl/tcl/form-processing-procs.tcl: Allow one to
+	  initiate an ad_form with specifying the &quot;form&quot; block, useful for
+	  building forms incrementally.
+
+2005-03-02 18:13  jader
+
+	* packages/acs-core-docs/www/xml/install-guide/software.xml: Add in
+	  Oracle 10g to software compatibility matrix.
+
+2005-03-02 14:38  miguelm
+
+	* packages/acs-subsite/lib/user-new.tcl: send return_url when an
+	  assessment is related
+
+2005-03-01 11:39  maltes
+
+	* www/resources/info.txt: Added resources directory so we can put
+	  e.g. a combined css in there
+
+2005-03-01 06:46  miguelm
+
+	* packages/acs-subsite/catalog/acs-subsite.en_US.ISO-8859-1.xml:
+	  add messages
+
+2005-03-01 05:17  jeffd
+
+	* packages/acs-tcl/tcl/text-html-procs.tcl: add an ad_unquotehtml
+	  function to invert ad_quotehtml
+
+2005-03-01 02:42  leed
+
+	* packages/acs-tcl/tcl/request-processor-procs.tcl: Removed call to
+	  subsite::package_keys
+
+2005-03-01 01:56  leed
+
+	* packages/acs-tcl/tcl/request-processor-procs.tcl: Fixed typo in
+	  [ad_conn subsite_url]
+
+2005-03-01 01:17  jeffd
+
+	* packages/acs-tcl/tcl/: request-processor-init.tcl,
+	  request-processor-procs.tcl: ad_acs_admin_id removed
+
+2005-02-28 16:01  jeffd
+
+	* packages/: acs-admin/www/apm/package-add.tcl,
+	  acs-admin/www/apm/parameter-edit.tcl,
+	  acs-admin/www/users/member-state-change.tcl,
+	  acs-admin/www/users/user-add-2.tcl,
+	  acs-admin/www/users/user-add-3.tcl,
+	  acs-admin/www/users/user-batch-add.tcl,
+	  acs-authentication/tcl/authentication-procs.tcl,
+	  acs-bootstrap-installer/tcl/40-db-query-dispatcher-procs.tcl,
+	  acs-content-repository/tcl/keyword-procs.tcl,
+	  acs-content-repository/tcl/revision-procs.tcl,
+	  acs-content-repository/tcl/test/acs-content-repository-procs.tcl,
+	  acs-reference/www/index.tcl,
+	  acs-reference/www/reference-data-list.tcl,
+	  acs-reference/www/table-detail.tcl,
+	  acs-reference/www/view-one-reference.tcl,
+	  acs-subsite/www/group-join.tcl,
+	  acs-subsite/www/admin/site-map/allow-for-view.tcl,
+	  acs-subsite/www/admin/site-map/new.tcl,
+	  acs-subsite/www/members/user-batch-add.tcl,
+	  acs-subsite/www/permissions/index.tcl,
+	  acs-subsite/www/permissions/one.tcl,
+	  acs-subsite/www/pvt/alerts.tcl,
+	  acs-subsite/www/user/portrait/comment-edit.tcl,
+	  acs-subsite/www/user/portrait/erase.tcl,
+	  acs-subsite/www/user/portrait/index.tcl,
+	  acs-subsite/www/user/portrait/upload.tcl,
+	  acs-tcl/tcl/00-database-procs.tcl,
+	  acs-tcl/tcl/acs-permissions-procs.tcl,
+	  acs-tcl/tcl/apm-file-procs.tcl, acs-tcl/tcl/security-procs.tcl,
+	  acs-tcl/tcl/text-html-procs.tcl, notifications/www/manage.tcl,
+	  notifications/www/request-new.tcl: change
+	  ad_verify_and_get_user_id to ad_conn user_id, change
+	  ad_maybe_redirect_for_registration to auth::require_login, make
+	  some db_ and dt_ function -public
+
+2005-02-28 10:25  miguelm
+
+	* packages/acs-subsite/acs-subsite.info: add parameter that
+	  contains the assessment_id of the assessment related to the
+	  registration process
+
+2005-02-28 10:24  miguelm
+
+	* packages/acs-subsite/lib/user-new.tcl: verify and redirect to the
+	  correct url if an assessment is related to the registration
+	  process, if not continue with the old process
+
+2005-02-28 10:22  miguelm
+
+	* packages/acs-subsite/www/admin/: index.adp, index.tcl: add page
+	  that allows to choose an assessment related to the registration
+	  process
+
+2005-02-27 17:29  donb
+
+	* packages/acs-tcl/: acs-tcl.info, tcl/request-processor-procs.tcl:
+	  Added ad_conn form_counter (liberated from Greenpeace Planet),
+	  which makes it easier to write javascript-enhanced widgets for
+	  the template form builder.
+
+2005-02-27 17:28  donb
+
+	* packages/acs-templating/: acs-templating.info,
+	  tcl/form-procs.tcl: Added ad_conn form_count (liberated from
+	  Greenpeace Planet work), which simplifies the writing of
+	  javascript-enhanced template form builder widgets.
+
+2005-02-27 14:45  jeffd
+
+	* packages/: acs-api-browser/tcl/acs-api-documentation-procs.tcl,
+	  acs-authentication/tcl/apm-callback-procs.tcl,
+	  acs-authentication/tcl/authentication-procs.tcl,
+	  acs-automated-testing/tcl/aa-test-procs.tcl,
+	  acs-content-repository/tcl/filter-procs.tcl,
+	  acs-lang/tcl/lang-message-procs.tcl,
+	  acs-lang/tcl/lang-util-procs.tcl, acs-lang/tcl/locale-procs.tcl,
+	  acs-lang/tcl/locale-procs.xql,
+	  acs-subsite/tcl/apm-callback-procs.tcl,
+	  acs-subsite/tcl/group-procs.tcl,
+	  acs-subsite/tcl/subsite-procs.tcl,
+	  acs-tcl/tcl/ad-functional-procs.tcl, acs-tcl/tcl/defs-procs.tcl,
+	  acs-tcl/tcl/openacs-kernel-procs.tcl,
+	  acs-tcl/tcl/parameter-procs.tcl,
+	  acs-tcl/tcl/site-node-object-map-procs.tcl,
+	  acs-tcl/tcl/test/file-test-procs.tcl,
+	  acs-templating/tcl/apm-callback-procs.tcl,
+	  acs-templating/tcl/currency-procs.tcl,
+	  acs-templating/tcl/filter-procs.tcl,
+	  acs-templating/tcl/list-procs.tcl,
+	  acs-templating/tcl/mime-procs.tcl,
+	  acs-templating/tcl/tag-procs.tcl,
+	  acs-templating/tcl/widget-procs.tcl: add proc doc to a bunch of
+	  procs, declare some things with explicit namespaces rather than
+	  in namespace eval, make some public things private
+
+2005-02-27 12:05  jeffd
+
+	* packages/: acs-content-repository/tcl/content-extlink-procs.tcl,
+	  acs-content-repository/tcl/content-extlink-procs.xql,
+	  acs-content-repository/tcl/extlink-procs.tcl,
+	  acs-subsite/tcl/application-group-procs.tcl,
+	  acs-subsite/www/admin/rel-segments/elements-display.adp,
+	  acs-subsite/www/admin/rel-segments/elements-display.tcl: remove
+	  unused .xql files, rename a couple misnamed xql files, fix
+	  elements-display.adp to not embed lots of tcl, add some interface
+	  status things
+
+2005-02-27 12:04  jeffd
+
+	* packages/acs-tcl/tcl/test/: datamodel-test-procs.tcl,
+	  file-test-procs.tcl: tweak documentation
+
+2005-02-27 11:45  donb
+
+	* packages/acs-kernel/acs-kernel.info: Somehow I managed to goober
+	  the last commit, despite having (I thought) properly resolved
+	  merge conflicts.  Oh well ...
+
+2005-02-27 11:23  donb
+
+	* packages/acs-kernel/sql/postgresql/: acs-objects-create.sql,
+	  upgrade/upgrade-5.2.0d7-5.2.0d8.sql: Realized that I only need to
+	  define function args for the most verbose form of
+	  acs_object__new, since package_instantiate_object handles default
+	  values very nicely.
+
+2005-02-27 09:38  daveb
+
+	*
+	  packages/acs-content-repository/sql/postgresql/upgrade/upgrade-5.1.5d3-5.1.5d4.sql:
+	  Move file to correct name for upgrade.
+
+2005-02-27 09:07  jeffd
+
+	* packages/:
+	  acs-authentication/catalog/acs-authentication.en_US.ISO-8859-1.xml,
+	  acs-kernel/catalog/acs-kernel.en_US.ISO-8859-1.xml,
+	  acs-lang/catalog/acs-lang.en_US.ISO-8859-1.xml,
+	  acs-subsite/catalog/acs-subsite.en_US.ISO-8859-1.xml,
+	  acs-tcl/catalog/acs-tcl.en_US.ISO-8859-1.xml,
+	  acs-templating/catalog/acs-templating.en_US.ISO-8859-1.xml,
+	  search/catalog/search.en_US.ISO-8859-1.xml: fix missing rdbms
+	  things and a few oracle or postgresisms that snuck in the wrong
+	  files
+
+2005-02-27 08:16  jeffd
+
+	* packages/acs-tcl/tcl/test/: datamodel-test-procs.tcl,
+	  doc-check-procs.tcl, file-test-procs.tcl, log-test-procs.tcl:
+	  adds test for acs_object_type internal consistency, proc
+	  documentation, xql files, named constraints, acs_attributes
+	  internal consistency
+
+2005-02-26 17:21  donb
+
+	* packages/acs-kernel/: acs-kernel.info,
+	  sql/oracle/acs-permissions-create.sql,
+	  sql/oracle/acs-relationships-create.sql,
+	  sql/oracle/groups-create.sql, sql/oracle/rel-segments-create.sql,
+	  sql/postgresql/acs-objects-create.sql,
+	  sql/postgresql/acs-permissions-create.sql,
+	  sql/postgresql/acs-relationships-create.sql,
+	  sql/postgresql/groups-create.sql,
+	  sql/postgresql/rel-segments-create.sql,
+	  sql/postgresql/upgrade/upgrade-5.2.0d7-5.2.0d8.sql: A variety of
+	  group oriented things, and finally added the definitions of
+	  acs-objects package procs in PG so that we can use
+	  package_instantiate_object and package_db_exec with them.
+
+2005-02-26 13:26  jeffd
+
+	* packages/acs-tcl/tcl/test/: acs-tcl-test-procs.tcl,
+	  file-test-procs.tcl: add a test to check the validity of all the
+	  xql files.  break out the file scan tests into a seperate file
+
+2005-02-26 11:48  jeffd
+
+	* packages/acs-kernel/sql/: oracle/upgrade/upgrade-4.6-4.6.1d1.sql,
+	  postgresql/upgrade/upgrade-4.6-4.6.1d1.sql: rename 4.6-4.6.1
+	  upgrade to not overlap 4.6.1d1-4.6.1d2
+
+2005-02-26 09:52  jeffd
+
+	* packages/: acs-admin/www/apm/bulk-intall.tcl,
+	  acs-admin/www/apm/version-generate-diffs.tcl,
+	  acs-admin/www/apm/version-generate-diffs.xql,
+	  acs-api-browser/www/package-view.tcl,
+	  acs-subsite/www/shared/1pixel.tcl,
+	  acs-tcl/tcl/00-database-procs.tcl,
+	  acs-tcl/tcl/ad-functional-procs.tcl, acs-tcl/tcl/admin-procs.tcl,
+	  acs-tcl/tcl/apm-file-procs.tcl,
+	  acs-tcl/tcl/apm-install-procs.tcl, acs-tcl/tcl/apm-procs.tcl,
+	  acs-tcl/tcl/community-core-procs.tcl,
+	  acs-tcl/tcl/deprecated-utilities-procs.tcl,
+	  acs-tcl/tcl/site-node-apm-integration-procs.tcl,
+	  acs-tcl/tcl/site-nodes-procs.tcl,
+	  acs-tcl/tcl/utilities-procs.tcl,
+	  acs-templating/tcl/acs-integration-procs.tcl,
+	  acs-templating/tcl/paginator-procs.tcl,
+	  notifications/tcl/sweep-procs.tcl: removed the remaining procs
+	  which were -deprecated -warn in 5.0 and fixed most occurances of
+	  those procs in the code
+
+2005-02-26 08:00  jeffd
+
+	* packages/: acs-lang/tcl/lang-catalog-procs.tcl,
+	  acs-lang/tcl/lang-message-procs.tcl,
+	  acs-lang/tcl/lang-util-procs.tcl,
+	  acs-lang/tcl/lang-util-procs.xql, acs-lang/tcl/locale-procs.tcl,
+	  acs-lang/tcl/localization-procs.tcl, acs-lang/www/index.tcl,
+	  acs-lang/www/locale-set.tcl, acs-lang/www/admin/batch-editor.tcl,
+	  acs-lang/www/admin/edit-description.tcl,
+	  acs-lang/www/admin/edit-localized-message.tcl,
+	  acs-lang/www/admin/export-locale-to-files.tcl,
+	  acs-lang/www/admin/import-locale-from-files.tcl,
+	  acs-lang/www/admin/index.tcl,
+	  acs-lang/www/admin/locale-delete.tcl,
+	  acs-lang/www/admin/locale-edit.tcl,
+	  acs-lang/www/admin/locale-make-default.tcl,
+	  acs-lang/www/admin/localized-message-new.tcl,
+	  acs-lang/www/admin/message-delete.tcl,
+	  acs-lang/www/admin/message-list.tcl,
+	  acs-lang/www/admin/message-search.tcl,
+	  acs-lang/www/admin/package-list.tcl,
+	  acs-lang/www/admin/test/catalog-test.tcl,
+	  acs-lang/www/admin/test/test.tcl,
+	  acs-templating/tcl/spellcheck-init.tcl: remove the acs-lang procs
+	  which were deprecated/warn in 5.0; fix lingering references to
+	  deprecated procs
+
+2005-02-25 16:24  skaufman
+
+	* packages/acs-tcl/lib/page-error.adp: fixed mismatched message_key
+	  with catalog
+
+2005-02-25 14:09  jeffd
+
+	* packages/acs-templating/resources/forms/standard.adp: Fixes bug
+	  2162 * not shown for required on select widget.
+
+2005-02-25 13:35  jeffd
+
+	* packages/acs-kernel/acs-kernel.info: remove the duplicated
+	  Allowed* tags, make the contact oct@openacs
+
+2005-02-25 09:15  victorg
+
+	* packages/acs-kernel/acs-kernel.info: Adding BugTrackerInstance
+	  Parameter. This parameter let you know into which bug-tracker
+	  instance has to be done the auto error report.
+
+2005-02-25 08:30  victorg
+
+	* packages/acs-tcl/: catalog/acs-tcl.en_US.ISO-8859-1.xml,
+	  lib/page-error.adp, lib/page-error.tcl, lib/page-error.xql,
+	  tcl/parameter-procs.tcl, tcl/request-processor-procs.tcl: Adding
+	  functionality for autosubmition of errors into de the
+	  bug-tracker.	Sending an email to the system owner when an error
+	  have occurred, detailling info like user_id, browser's user,
+	  error details, etc.
+
+2005-02-24 14:12  jeffd
+
+	* packages/acs-tcl/tcl/test/html-conversion-procs.tcl: make
+	  string_truncate reflect new behavior lars made, add test for
+	  ellipses on truncate
+
+2005-02-24 14:10  jeffd
+
+	* packages/acs-automated-testing/www/admin/: index.tcl,
+	  testcase-oracle.xql, testcase-postgresql.xql, testcase.adp,
+	  testcase.tcl: less braindamage for markup, aggregate result count
+	  in sql, filter fails only on quiet
+
+2005-02-24 11:34  jeffd
+
+	* packages/acs-content-repository/sql/postgresql/content-item.sql:
+	  set live and latest to null so delete does not violate fk
+	  constraints
+
+2005-02-24 07:22  leed
+
+	* packages/acs-tcl/tcl/request-processor-procs.tcl: Fixed
+	  vhost_package_url when the package is not mounted directly under
+	  the subsite.
+
+2005-02-24 05:41  jeffd
+
+	*
+	  packages/acs-content-repository/tcl/content-revision-procs-oracle.xql:
+	  merge change by hand because the file was manually added on head.
+
+2005-02-24 05:32  jeffd
+
+	* etc/analog.cfg, etc/config.tcl, etc/install/install.sh,
+	  etc/keepalive/keepalive-cron.sh, etc/keepalive/keepalive.sh,
+	  packages/acs-admin/www/users/password-update.adp,
+	  packages/acs-admin/www/users/password-update.tcl,
+	  packages/acs-content-repository/acs-content-repository.info,
+	  packages/acs-content-repository/sql/oracle/content-folder.sql,
+	  packages/acs-content-repository/sql/oracle/content-item.sql,
+	  packages/acs-content-repository/sql/oracle/packages-create.sql,
+	  packages/acs-content-repository/sql/oracle/upgrade/upgrade-5.1.2d6-5.1.2d7.sql,
+	  packages/acs-content-repository/sql/oracle/upgrade/upgrade-5.1.5d2-5.1.5d3.sql,
+	  packages/acs-content-repository/sql/postgresql/content-folder.sql,
+	  packages/acs-content-repository/sql/postgresql/upgrade/upgrade-5.1.2d6-5.1.2d7.sql,
+	  packages/acs-content-repository/sql/postgresql/upgrade/upgrade-5.1.4d4-5.1.4d5.sql,
+	  packages/acs-content-repository/sql/postgresql/upgrade/upgrade-5.1.5d1-5.1.5d2.sql,
+	  packages/acs-content-repository/tcl/content-folder-procs.tcl,
+	  packages/acs-content-repository/tcl/content-revision-procs.tcl,
+	  packages/acs-content-repository/tcl/filter-procs.tcl,
+	  packages/acs-content-repository/tcl/test/content-folder-test-procs.tcl,
+	  packages/acs-core-docs/www/install-full-text-search-openfts.html,
+	  packages/acs-core-docs/www/install-full-text-search-tsearch2.html,
+	  packages/acs-core-docs/www/xml/developers-guide/i18n.xml,
+	  packages/acs-core-docs/www/xml/developers-guide/permissions.xml,
+	  packages/acs-core-docs/www/xml/developers-guide/rp.xml,
+	  packages/acs-core-docs/www/xml/developers-guide/tutorial-advanced.xml,
+	  packages/acs-core-docs/www/xml/developers-guide/tutorial-db.xml,
+	  packages/acs-core-docs/www/xml/developers-guide/tutorial-pages.xml,
+	  packages/acs-core-docs/www/xml/developers-guide/tutorial.xml,
+	  packages/acs-core-docs/www/xml/engineering-standards/cvs.xml,
+	  packages/acs-core-docs/www/xml/install-guide/configuring.xml,
+	  packages/acs-core-docs/www/xml/install-guide/maintenance.xml,
+	  packages/acs-core-docs/www/xml/install-guide/openacs.xml,
+	  packages/acs-core-docs/www/xml/install-guide/other-software.xml,
+	  packages/acs-core-docs/www/xml/install-guide/postgres.xml,
+	  packages/acs-core-docs/www/xml/install-guide/recovery.xml,
+	  packages/acs-core-docs/www/xml/install-guide/upgrade.xml,
+	  packages/acs-core-docs/www/xml/kernel/apm-design.xml,
+	  packages/acs-core-docs/www/xml/kernel/ext-auth.xml,
+	  packages/acs-core-docs/www/xml/non-xml/release-notes-4-6.html,
+	  packages/acs-kernel/acs-kernel.info,
+	  packages/acs-kernel/sql/oracle/acs-objects-create.sql,
+	  packages/acs-kernel/sql/oracle/upgrade/upgrade-5.1.4-5.1.4d1.sql,
+	  packages/acs-lang/www/admin/edit-localized-message.tcl,
+	  packages/acs-service-contract/acs-service-contract.info,
+	  packages/acs-service-contract/tcl/implementation-procs.tcl,
+	  packages/acs-service-contract/tcl/implementation-procs.xql,
+	  packages/acs-subsite/lib/login.adp,
+	  packages/acs-subsite/www/admin/site-map/index.adp,
+	  packages/acs-subsite/www/permissions/perm-include-oracle.xql,
+	  packages/acs-subsite/www/permissions/perm-include-postgresql.xql,
+	  packages/acs-subsite/www/site-map/index.tcl,
+	  packages/acs-tcl/tcl/apm-procs.tcl,
+	  packages/acs-tcl/tcl/apm-procs.xql,
+	  packages/acs-tcl/tcl/utilities-procs.tcl,
+	  packages/acs-templating/resources/forms/blue.adp,
+	  packages/acs-templating/resources/forms/coddo.adp,
+	  packages/acs-templating/resources/forms/configuration.adp,
+	  packages/acs-templating/resources/forms/grid.adp,
+	  packages/acs-templating/resources/forms/plain.adp,
+	  packages/acs-templating/resources/forms/plainest.adp,
+	  packages/acs-templating/resources/forms/tiny-plain.adp,
+	  packages/acs-templating/resources/forms/wizard.adp,
+	  packages/acs-templating/resources/lists/table.adp,
+	  packages/acs-templating/tcl/paginator-procs.tcl,
+	  packages/acs-templating/tcl/parse-procs.tcl,
+	  packages/acs-templating/tcl/tag-procs.tcl,
+	  packages/acs-templating/tcl/widget-procs.tcl,
+	  packages/notifications/notifications.info, www/blank-master.adp,
+	  www/site-master.adp: commit to HEAD of merge of changes on
+	  oacs-5-1 branch between tags jcd-merge-5-1-20050111 and
+	  jcd-merge-5-1-20050224
+
+2005-02-24 03:16  jeffd
+
+	* packages/acs-tcl/tcl/utilities-procs.tcl: add a bit more docs to
+	  ad_get_tcl_call_stack
+
+2005-02-24 03:13  jeffd
+
+	* packages/acs-templating/resources/forms/standard.adp: form errors
+	  for fields with an empty label would not highlight or show a
+	  required mark -- fixed
+
+2005-02-24 03:10  jeffd
+
+	* packages/acs-subsite/www/permissions/: one-oracle.xql,
+	  one-postgresql.xql, one.adp, one.tcl: show permissions granted to
+	  public on mainsite (used to be excluded on the query which made
+	  understanding the permissions quite difficult)
+
+2005-02-24 03:01  jeffd
+
+	* packages/acs-subsite/catalog/acs-subsite.en_US.ISO-8859-1.xml:
+	  add a cannot remove permission msg
+
+2005-02-23 05:14  jeffd
+
+	* packages/acs-subsite/tcl/subsite-procs.tcl: add
+	  subsite::util::packages which returns a list of package_id;s in
+	  the subsite containing the passed node_id
+
+2005-02-23 03:52  leed
+
+	* packages/acs-content-repository/sql/: oracle/content-create.sql,
+	  postgresql/content-create.sql: Page root and template root
+	  registered as magic objects.
+
+2005-02-23 02:07  jeffd
+
+	* packages/acs-kernel/sql/: oracle/acs-create.sql,
+	  oracle/apm-create.sql,
+	  oracle/upgrade/upgrade-5.2.0d1-5.2.0d2.sql,
+	  postgresql/acs-create.sql, postgresql/apm-create.sql,
+	  postgresql/upgrade/upgrade-5.2.0d1-5.2.0d2.sql: set title in acs
+	  objects when creating security context root, set titles for
+	  parameters, make acs_objects.package_id on delete set null
+
+2005-02-22 12:40  jeffd
+
+	* packages/acs-kernel/sql/:
+	  oracle/upgrade/upgrade-4.6.1d1-4.6.1d2.sql,
+	  postgresql/upgrade/upgrade-4.6.1d1-4.6.1d2.sql: rename
+	  upgrade-4.6.1-4.7d.sql to upgrade-4.6.1d1-4.6.1d2.sql so the
+	  ordering of application is no longer ambiguous
+
+2005-02-22 12:20  leed
+
+	* packages/acs-tcl/tcl/install-procs.tcl: Added permission revoke
+	  action.
+
+2005-02-22 10:18  leed
+
+	* packages/acs-tcl/tcl/install-procs.tcl: resubs double slashes in
+	  url attributes
+
+2005-02-20 09:18  jeffd
+
+	* packages/search/: catalog/search.en_US.ISO-8859-1.xml,
+	  tcl/search-procs.tcl, www/advanced-search.adp, www/search.adp,
+	  www/search.tcl: more cleanup, change search sweeper to pull id's
+	  and release handle few fixes to syndication stuff
+
+2005-02-18 11:08  leed
+
+	* packages/: acs-subsite/tcl/subsite-procs-oracle.xql,
+	  acs-subsite/tcl/subsite-procs-postgresql.xql,
+	  acs-subsite/tcl/subsite-procs.tcl,
+	  acs-subsite/tcl/subsite-procs.xql,
+	  acs-tcl/tcl/request-processor-procs.tcl,
+	  acs-tcl/tcl/utilities-procs.tcl: Added elements subsite_node_id,
+	  subsite_url, vhost_subsite_url and vhost_package_url to allow
+	  includes and master templates to vhost aware server relative
+	  urls.  Added subsite::get_url to allow functions to generate
+	  vhost aware absolute urls.
+
+2005-02-18 10:36  jeffd
+
+	* packages/tsearch2-driver/tcl/tsearch2-driver-procs.tcl: fix the
+	  build_query function to be more in line with the lexer, sort by
+	  rank high to low, index title, keywords as weight A,B
+	  respectively
+
+2005-02-17 13:48  daveb
+
+	* packages/acs-core-docs/www/xml/install-guide/other-software.xml:
+	  Add tsearch2 install documentation.
+
+2005-02-17 09:18  jeffd
+
+	*
+	  packages/tsearch2-driver/sql/postgresql/tsearch2-driver-create.sql:
+	  object_id on delete cascade
+
+2005-02-17 07:12  jeffd
+
+	* packages/acs-tcl/tcl/stack-trace-procs.tcl: make the stack trace
+	  purty
+
+2005-02-17 07:12  jeffd
+
+	* packages/acs-tcl/tcl/: 00-database-procs.tcl, apm-procs.tcl: make
+	  some proc things into ad_proc, remove a couple useless debug
+	  messages, log long query times as a WARNING message in the log
+
+2005-02-17 07:11  jeffd
+
+	* packages/acs-tcl/tcl/request-processor-procs.tcl: make
+	  ad_acs_kernel_id an ad_proc first so dbqd does not complain
+
+2005-02-16 13:41  jader
+
+	* packages/acs-core-docs/www/xml/install-guide/other-software.xml:
+	  Update installation of daemontools. Description expanded for
+	  Fedora Core 3. Broken link fixed.
+
+2005-02-16 09:32  jeffd
+
+	* packages/acs-bootstrap-installer/: installer.tcl,
+	  tcl/40-db-query-dispatcher-procs.tcl: comment out db_qd_log calls
+	  as almost noone will use these anymore and some added appreciable
+	  overhead.  warn when a proc does not yield a statement name with
+	  advice about why, fix the bootstrap version of acs_kernel_id to
+	  cache
+
+2005-02-15 16:21  jeffd
+
 	* packages/acs-core-docs/www/: acs-admin.html,
 	  acs-package-dev.html, acs-plat-dev.html, analog-install.html,
 	  analog-setup.html, aolserver.html, aolserver4.html,
@@ -880,12 +12076,11 @@
 	  i18n-overview.html, i18n-requirements.html,
 	  i18n-translators.html, i18n.html, index.html,
 	  individual-programs.html, install-cvs.html,
-	  install-daemontools.html, install-full-text-search-openfts.html,
-	  install-full-text-search-tsearch2.html, install-ldap-radius.html,
-	  install-more-software.html, install-next-add-server.html,
-	  install-next-backups.html, install-next-nightly-vacuum.html,
-	  install-nsopenssl.html, install-nspam.html,
-	  install-openacs-delete-tablespace.html,
+	  install-daemontools.html, install-full-text-search.html,
+	  install-ldap-radius.html, install-more-software.html,
+	  install-next-add-server.html, install-next-backups.html,
+	  install-next-nightly-vacuum.html, install-nsopenssl.html,
+	  install-nspam.html, install-openacs-delete-tablespace.html,
 	  install-openacs-inittab.html, install-openacs-keepalive.html,
 	  install-origins.html, install-overview.html,
 	  install-pam-radius.html, install-php.html, install-qmail.html,
@@ -932,881 +12127,5885 @@
 	  upgrade-openacs-files.html, upgrade-overview.html,
 	  upgrade-supporting.html, upgrade.html, uptime.html,
 	  using-cvs-with-openacs.html, variables.html,
-	  win2k-installation.html: Generated HTML files for 5.2.3b1
+	  win2k-installation.html: regenerate the documentation -- add new
+	  files
 
-2006-04-09 15:22  donb
+2005-02-15 16:18  jeffd
 
-	* packages/acs-core-docs/www/xml/variables.ent: Version bump to
-	  5.2.3b1
+	* packages/acs-core-docs/www/xml/:
+	  developers-guide/tutorial-advanced.xml,
+	  install-guide/aolserver4.xml, install-guide/maintenance.xml,
+	  install-guide/software.xml, install-guide/upgrade.xml: fix
+	  docbook xml errors, make software.xml mention pg 8.0, 5.2
 
-2006-04-09 15:11  donb
+2005-02-15 09:27  daveb
 
-	* packages/: acs-admin/acs-admin.info,
-	  acs-api-browser/acs-api-browser.info,
-	  acs-authentication/acs-authentication.info,
-	  acs-automated-testing/acs-automated-testing.info,
-	  acs-bootstrap-installer/acs-bootstrap-installer.info,
-	  acs-content-repository/acs-content-repository.info,
-	  acs-core-docs/acs-core-docs.info, acs-kernel/acs-kernel.info,
-	  acs-lang/acs-lang.info, acs-mail/acs-mail.info,
-	  acs-messaging/acs-messaging.info,
-	  acs-reference/acs-reference.info,
-	  acs-service-contract/acs-service-contract.info,
-	  acs-tcl/acs-tcl.info, acs-templating/acs-templating.info,
-	  ref-timezones/ref-timezones.info, search/search.info: Bumped
-	  version to 5.2.3b1
+	*
+	  packages/acs-content-repository/tcl/test/content-item-test-procs.tcl:
+	  Fix content type calls to eliminate illegal chars in type name
 
-2006-04-08 18:51  donb
+2005-02-15 09:10  miguelm
 
-	* packages/acs-bootstrap-installer/bootstrap.tcl: Added check to
-	  make certain that xotcl-core is not sourced unless the xotcl
-	  aolserver module has been loaded.
+	* packages/acs-subsite/catalog/acs-subsite.en_US.ISO-8859-1.xml:
+	  adding missing messages
 
-2006-04-08 17:44  donb
+2005-02-15 08:21  andrewg
 
-	* packages/acs-subsite/acs-subsite.info: 1. Bumped version to
-	  5.2.3b1 2. Removed dependency made by Malte on acs-translations,
-	  a package that    has not been added to acs-core, and which is
-	  currently empty on HEAD    as well as the 5.2 branch.  When it
-	  does something, restore the dependency    and add the package to
-	  acs-core.
+	* packages/acs-subsite/www/admin/applications/: index-oracle.xql,
+	  index-postgresql.xql, index.tcl: level is a reserved word in
+	  Oracle.  Changing to treelevel.
 
-2006-04-07 12:58  donb
+2005-02-15 08:02  andrewg
 
-	* packages/acs-bootstrap-installer/bootstrap.tcl: Added patch to
-	  load xotcl-core packages if xotcl-core exists
+	* packages/acs-subsite/www/: admin/site-map/site-map-oracle.xql,
+	  site-map/index-oracle.xql: Adding missing view_p column
 
-2006-04-06 18:25  donb
+2005-02-14 13:56  andrewg
 
-	*
-	  packages/acs-kernel/sql/postgresql/upgrade/upgrade-5.2.2-5.2.3b1.sql:
-	  Forgot to cvs add my upgrade file ...
+	* packages/acs-subsite/www/site-map/index-oracle.xql: Oracle was
+	  complaining about joining with a CONNECT BY.	I've refactored the
+	  mask into an EXISTS clause.  Should this be handled with a
+	  'read_site_map' permission instead of the masking table?
 
-2006-04-06 18:24  donb
+2005-02-14 13:08  andrewg
 
-	* packages/acs-kernel/: acs-kernel.info,
-	  sql/postgresql/apm-create.sql: Fixed bug #2745
+	* packages/acs-tcl/tcl/html-email-procs.tcl: Look a little harder
+	  for the message body, and use only the first-encountered
+	  text/plain and text/html.
 
-2006-04-06 18:09  donb
+2005-02-14 10:17  donb
 
 	*
-	  packages/acs-content-repository/sql/postgresql/content-update.sql:
-	  Fixed "bug" #2646.  This code wasn't actually executed since the
-	  relevant table's created explicitly in another script ...
+	  packages/acs-content-repository/tcl/test/content-revision-test-procs.tcl:
+	  Dave fixed his test case ...
 
-2006-04-06 17:48  donb
+2005-02-14 09:23  donb
 
+	* packages/acs-content-repository/sql/oracle/content-type.sql:
+	  Missed one file modified by daveb in my last commit
+
+2005-02-14 04:32  jeffd
+
+	* packages/acs-tcl/tcl/exception-procs.tcl: added some @see to make
+	  ad_try less threatening
+
+2005-02-12 18:10  donb
+
+	* packages/acs-content-repository/tcl/:
+	  content-revision-procs-oracle.xql, content-revision-procs.tcl,
+	  test/content-revision-test-procs.tcl: commiting Daveb's oracle
+	  fixes ...
+
+2005-02-10 11:06  daveb
+
 	*
-	  packages/acs-content-repository/sql/postgresql/content-schedule.sql:
-	  Fixed "bug" #2747.  The code was never called and was just a stub
-	  that hadn't been ported to PG, but I removed it so future people
-	  with sharp eyes don't look at it and report the "bug" again.
+	  packages/acs-content-repository/tcl/content-revision-procs-oracle.xql:
+	  Switch to support oracle version 8.1.6
 
-2006-04-06 17:17  donb
+2005-02-09 18:45  donb
 
-	* packages/ref-timezones/sql/postgresql/: ref-timezones-create.sql,
-	  upgrade/upgrade-5.2.2-5.2.3b1.sql: Fixed bug #2748
+	* packages/acs-content-repository/tcl/content-folder-procs.tcl:
+	  Changed &quot;delete&quot; call to &quot;del&quot;, content-item tests runs without
+	  error now with Oracle.
 
-2006-04-06 17:09  donb
+2005-02-09 17:40  daveb
 
-	* packages/ref-timezones/: ref-timezones.info,
-	  sql/postgresql/ref-timezones-create.sql,
-	  sql/postgresql/upgrade/upgrade-5.2.2-5.2.3b1.sql: Fixed bug
-	  #2749.
+	* packages/acs-content-repository/tcl/:
+	  content-revision-procs-oracle.xql,
+	  content-revision-procs-postgresql.xql,
+	  content-revision-procs.tcl: Insert content as BLOB in seperate
+	  query.
 
-2006-04-04 05:38  maltes
+2005-02-09 07:21  leed
 
-	* packages/acs-content-repository/tcl/content-item-procs.tcl:
-	  Fixing file upload, storing the full filename as the title,
-	  getting rid of the problem of the regsub killing some characters
+	* packages/acs-tcl/tcl/install-procs.tcl: Make create-user work in
+	  the bootstrap install.xml (before the service contract is
+	  registered).
 
-2006-03-31 09:59  hamiltonc
+2005-02-08 09:24  andrewg
 
-	* packages/acs-bootstrap-installer/tcl/00-proc-procs.tcl: fix for
-	  bug 2843, this bug causes problems when trying to change
-	  authentication parameters
+	* packages/acs-subsite/sql/oracle/acs-subsite-create.sql:
+	  site-node-selection with an &quot;s&quot;
 
-2006-03-30 02:41  emmar
+2005-02-08 09:24  andrewg
 
-	* packages/acs-lang/catalog/acs-lang.gl_ES.ISO-8859-1.xml: fix
-	  #2829: galician-portugese lang
+	* packages/acs-subsite/sql/oracle/site-node-selection.sql: Bugfix.
 
-2006-03-30 01:41  dedsc
+2005-02-08 09:20  andrewg
 
-	* packages/acs-subsite/lib/login.tcl: fix misnamed parameter
+	* packages/acs-lang/sql/oracle/ad-locales.sql: Removed a stray
+	  'end'.
 
-2006-03-29 20:51  maltes
+2005-02-08 08:39  miguelm
 
-	* etc/backup.sh: Added vaccumdb to backup
+	* packages/acs-subsite/tcl/email-image-procs.tcl: removing *SQL*
 
-2006-03-29 03:22  emmar
+2005-02-08 03:07  leed
 
-	*
-	  packages/acs-content-repository/tcl/content-revision-procs-oracle.xql:
-	  Added missing query item_id
+	* packages/acs-tcl/tcl/security-procs.tcl: ad_get_client_property
+	  returns the default when no security session exists; ie. during
+	  install.
 
-2006-03-29 02:54  emmar
+2005-02-08 00:29  jeffd
 
-	*
-	  packages/acs-content-repository/sql/oracle/upgrade/upgrade-5.2.1d1-5.2.1d2.sql:
-	  fix content_item.new call in content_folder.new
+	* packages/acs-subsite/www/o.vuh: make missing svc contract give
+	  message rather than traceback
 
-2006-03-29 02:53  emmar
+2005-02-07 17:22  jeffd
 
-	*
-	  packages/acs-content-repository/sql/oracle/upgrade/upgrade-5.2.0b6-5.2.0b7.sql:
-	  fix #2870, #2868: upgrade script for image and content_extlink
-	  packages
+	* packages/acs-tcl/tcl/: navigation-procs.tcl,
+	  request-processor-procs.tcl: rollback the secret multisubsite
+	  stuff did not mean to commit
 
-2006-03-29 02:47  emmar
+2005-02-07 17:19  jeffd
 
-	*
-	  packages/acs-kernel/sql/oracle/upgrade/upgrade-5.2.0b9-5.2.0b10.sql:
-	  fix #2869: upgrade script for acs-data-link
+	* packages/acs-tcl/tcl/: install-procs.tcl, navigation-procs.tcl,
+	  request-processor-procs.tcl: do not try to login when creating a
+	  user from the install.xml actioninstall-procs.tcl
 
-2006-03-28 09:32  victorg
+2005-02-07 17:16  jeffd
 
-	* packages/acs-tcl/tcl/server-cluster-procs.tcl: Scheduling
-	  server_cluster_do_httpget in all servers in order to get
-	  clustering working well. Setting to true all_servers switch when
-	  scheduling server_cluster_do_httpget.
+	* packages/acs-service-contract/www/: binding-display.adp,
+	  binding-display.tcl, contract-display.tcl: add a display of a
+	  particular binding so you can easily track down the actual
+	  functions
 
-2006-03-27 15:58  donb
+2005-02-07 17:14  jeffd
 
-	* packages/acs-kernel/sql/postgresql/acs-metadata-create.sql: 1.
-	  Copy site template when cloning a community 2. Updated a bunch of
-	  dependency files
+	* packages/acs-lang/tcl/localization-procs.tcl: don't use en_US in
+	  lc_numeric if lookup fails since when acs-lang totally borked
+	  even en_US might not be there and the admin page won't display
 
-2006-03-12 14:16  victorg
+2005-02-07 15:27  jeffd
 
-	* packages/acs-lang/tcl/lang-message-procs.tcl: typo in error
-	  message.
+	* packages/acs-tcl/tcl/install-procs.tcl: value for param has to
+	  default to empty string since otherwise the empty value throws
+	  error in apm_required_attribute_value
 
-2006-03-09 09:56  roelc
+2005-02-07 15:17  jeffd
 
-	* packages/acs-kernel/catalog/acs-kernel.en_US.ISO-8859-1.xml:
-	  Added 'common_Last' and 'common_last' keys
+	* packages/acs-tcl/tcl/site-node-apm-integration-procs.tcl: throw
+	  error if no package provided and no connection
 
-2006-03-09 04:14  eduardop
+2005-02-07 14:16  leed
 
-	* packages/acs-subsite/acs-subsite.info: add dependency to
-	  acs-translations from acs-subsite
+	* packages/acs-tcl/tcl/install-procs.tcl: Added some new actions.
 
-2006-03-03 01:51  matthewg
+2005-02-07 13:56  jeffd
 
-	* packages/acs-tcl/tcl/application-data-link-procs.xql: fixing
-	  typo, application_data_link::get.linked_objects was supposed to
-	  look for object_id not package_id
+	* packages/acs-bootstrap-installer/installer.tcl: reset the ad_conn
+	  so we can use it during install
 
-2006-03-02 17:05  donb
+2005-02-07 02:30  jeffd
 
-	* packages/acs-tcl/tcl/test/acs-tcl-test-procs.tcl: Conditionalized
-	  tests of bindvar emulation so they're not run for Oracle.  Two of
-	  them don't work for Oracle (tries to do a "select" in
-	  db_exec_plsql) and since Oracle's definition of bindvar semantics
-	  defines the emulation semantics it seems silly to test if Oracle
-	  adheres to them or not :)
+	* packages/acs-templating/tcl/list-procs.tcl: add the note about
+	  using filters to propigate state varibles
 
-2006-03-01 15:17  donb
+2005-02-07 02:29  jeffd
 
-	* packages/acs-tcl/tcl/install-procs.tcl: The set-parameter
-	  procedure calls parameter::set_value, which returns the newly set
-	  value.  When a Tcl proc has no explicit return statement, as was
-	  true of set-parameter, the value of the last expression is
-	  returned.  In other words, the value of the parameter.  Which
-	  messed up the HTML sent up the pipe to the browser being used to
-	  install OpenACS.
+	* packages/acs-api-browser/tcl/acs-api-documentation-procs.tcl:
+	  tweak markup so log lists of switch docs are readable
 
-2006-02-26 20:18  michaels
+2005-02-06 10:30  jeffd
 
-	* etc/backup.sh: quote vars to ensure there are at least empty
-	  strings present when testing; use single = for string comparisons
+	* packages/acs-tcl/tcl/: object-procs-oracle.xql,
+	  object-procs-postgresql.xql: return title and package_id in
+	  acs_object::get
 
-2006-02-26 09:41  michaels
+2005-02-06 10:21  jeffd
 
-	* etc/backup.sh: add some logic to gather free disk space when the
-	  backup partition string is so long it forces df output to wrap
+	* packages/acs-templating/tcl/tag-init.tcl: save errors in includes
+	  to the ds_page_bits cache
 
-2006-02-24 07:13  daveb
+2005-02-05 10:22  maltes
 
-	* packages/acs-admin/www/install/install.tcl: Fix check for
-	  maturity procedure so maturity is shown in Installer.
+	* packages/acs-core-docs/www/xml/install-guide/: aolserver4.xml,
+	  postgres.xml: Upgraded version numbers
 
-2006-02-20 12:03  michaels
+2005-02-05 03:57  jeffd
 
-	* etc/config.tcl: backout accidental commit of my config.tcl
+	* packages/acs-subsite/www/o.vuh: handle missing or invalid object
+	  id better
 
-2006-02-20 11:39  michaels
+2005-02-05 03:53  jeffd
 
-	* etc/: backup.sh, config.tcl: change order of arguments to tar;
-	  add comment to script about getting free space from partitions
-	  with long names (i.e. logical volumes)
+	* packages/search/tcl/search-procs.tcl: use -datasource not -array
 
-2006-02-20 04:36  roelc
+2005-02-04 07:33  jeffd
 
-	* packages/acs-templating/resources/lists/table.adp: Don't display
-	  group by label if empty
+	* packages/acs-templating/tcl/parse-procs.tcl: adds support for
+	  page fragment cache stuff from developer support
 
-2006-02-19 23:36  matthewg
+2005-02-04 03:08  leed
 
-	* packages/acs-subsite/tcl/party-procs.tcl: removing typo
-	  dependence on contacts package in party::email
+	* packages/acs-tcl/tcl/install-procs.tcl: Fixed bug in mount
+	  action.  Added mount-existing action for mounting an already
+	  created package instance.
 
-2006-02-19 20:19  michaels
+2005-02-03 19:24  jeffd
 
-	* etc/backup.sh: variable misnamed in default backup script
+	* packages/acs-kernel/acs-kernel.info: allow SPAN tags
 
-2006-02-18 17:15  michaels
+2005-02-03 10:21  bdolicki
 
-	* etc/keepalive/: keepalive-config.tcl, keepalive-cron.sh,
-	  keepalive.sh: remove duplicate keepalive script and make the one
-	  that stays a little more robust (and less chatty)
+	* packages/acs-tcl/tcl/stack-trace-procs.tcl: Useful for having
+	  your catch and eat it.
 
-2006-02-17 13:19  gustafn
+2005-02-02 16:19  jeffd
 
-	* packages/acs-templating/www/resources/xinha-nightly/: dialog.js,
-	  htmlarea.css, htmlarea.js, images/fr/bold.gif,
-	  images/fr/strikethrough.gif, images/fr/underline.gif, lang/fr.js,
-	  plugins/CSS/css.js, plugins/CharacterMap/lang/ru.js,
+	* packages/acs-templating/resources/lists/table.adp: xhtml tweak
+	  for sort img
+
+2005-02-02 16:18  jeffd
+
+	*
+	  packages/acs-content-repository/sql/postgresql/content-search.sql:
+	  bind the fts contract when creating the datamodel
+
+2005-02-02 15:27  jeffd
+
+	* packages/notifications/tcl/notification-display-procs.tcl:
+	  quotehtml the sub_url since it's noquoted in the page (as an html
+	  fragment).
+
+2005-02-02 13:32  jeffd
+
+	* packages/acs-templating/tcl/tag-procs.tcl: throw an error if the
+	  nil or defined tag is given anything other than a variable
+
+2005-02-02 13:29  jeffd
+
+	* packages/search/catalog/search.en_US.ISO-8859-1.xml: remove some
+	  unused keys
+
+2005-02-02 13:24  jeffd
+
+	* packages/search/www/index.adp: GET should be get
+
+2005-02-02 13:18  jeffd
+
+	* packages/search/: search.info,
+	  catalog/search.en_US.ISO-8859-1.xml, tcl/search-procs.tcl,
+	  www/advanced-search.adp, www/index.adp, www/index.tcl,
+	  www/search.adp, www/search.tcl: fix search links, make validate
+	  as xhtml, remove crappy markup, fix some message keys. fix bug
+	  with flag for syndication
+
+2005-02-02 10:26  victorg
+
+	* www/: site-master.adp, site-master.tcl: Internationalitation for
+	  Online Members message, Your Acccount Message and Logout Message
+
+2005-02-01 13:06  jeffd
+
+	* packages/search/catalog/search.en_US.ISO-8859-1.xml: move message
+	  catalog over from 5.1 branch
+
+2005-02-01 09:09  daveb
+
+	* packages/acs-content-repository/sql/oracle/content-type.sql: Fix
+	  insert and select views for revisions and subtypes so title is
+	  not duplicated.
+
+2005-01-31 13:58  jeffd
+
+	* packages/acs-lang/tcl/lang-install-procs.tcl: functions for
+	  enabling and setting locale in the install.xml file
+
+2005-01-31 13:03  jeffd
+
+	* packages/acs-templating/: tcl/tag-init.tcl, tcl/tag-procs.tcl,
+	  tcl/util-procs.tcl, www/admin/test/include.tcl: add recognizing
+	  array variables like @xx.y.z@ as xx(y.z).  Note that the regexps
+	  show up in multiple places so any changes to the @ var regexps
+	  should be made carefully.  In particular if @x@ defined and if
+	  @x@ nil handle variables special since they can't be derefrenced
+
+2005-01-31 10:11  miguelm
+
+	* packages/acs-subsite/tcl/email-image-procs.tcl: Fixing image
+	  length
+
+2005-01-31 09:47  miguelm
+
+	* packages/acs-subsite/tcl/email-image-procs-oracle.xql: Fixing rel
+	  name
+
+2005-01-31 06:56  jeffd
+
+	* packages/acs-tcl/tcl/install-procs.tcl: add an object id= method
+	  for setting permissions in the install.xml file on explicit
+	  object ids
+
+2005-01-30 08:23  leed
+
+	* packages/acs-tcl/tcl/request-processor-procs.tcl: Fixed call to
+	  rp_debug for reporting bad filter return codes.
+
+2005-01-30 08:23  jeffd
+
+	* packages/acs-subsite/www/resources/core.js, www/blank-master.adp:
+	  changes to make htmlarea-3.0-rc3 work
+
+2005-01-30 08:13  jeffd
+
+	* packages/acs-templating/www/resources/htmlarea/: dialog.js,
+	  htmlarea.css, htmlarea.js, index.html, license.txt, popupdiv.js,
+	  popupwin.js, reference.html, release-notes.html,
+	  examples/2-areas.cgi, examples/2-areas.html,
+	  examples/character_map.html, examples/context-menu.html,
+	  examples/core.html, examples/css.html, examples/custom.css,
+	  examples/dynamic.css, examples/dynamic_css.html,
+	  examples/empty.html, examples/full-page.html,
+	  examples/fully-loaded.html, examples/index.html,
+	  examples/list-type.html, examples/remove-font-tags.html,
+	  examples/spell-checker.html, examples/table-operations.html,
+	  examples/test.cgi, images/ed_about.gif,
+	  images/ed_align_center.gif, images/ed_align_justify.gif,
+	  images/ed_align_left.gif, images/ed_align_right.gif,
+	  images/ed_blank.gif, images/ed_charmap.gif,
+	  images/ed_color_bg.gif, images/ed_color_fg.gif,
+	  images/ed_copy.gif, images/ed_custom.gif, images/ed_cut.gif,
+	  images/ed_format_bold.gif, images/ed_format_italic.gif,
+	  images/ed_format_strike.gif, images/ed_format_sub.gif,
+	  images/ed_format_sup.gif, images/ed_format_underline.gif,
+	  images/ed_help.gif, images/ed_hr.gif, images/ed_html.gif,
+	  images/ed_image.gif, images/ed_indent_less.gif,
+	  images/ed_indent_more.gif, images/ed_killword.gif,
+	  images/ed_left_to_right.gif, images/ed_list_bullet.gif,
+	  images/ed_list_num.gif, images/ed_paste.gif, images/ed_print.gif,
+	  images/ed_redo.gif, images/ed_right_to_left.gif,
+	  images/ed_rmformat.gif, images/ed_save.gif,
+	  images/ed_show_border.gif, images/ed_splitcel.gif,
+	  images/ed_undo.gif, images/fullscreen_maximize.gif,
+	  images/fullscreen_minimize.gif, lang/b5.js, lang/ch.js,
+	  lang/cz.js, lang/da.js, lang/de.js, lang/ee.js, lang/el.js,
+	  lang/en.js, lang/es.js, lang/fi.js, lang/fr.js, lang/gb.js,
+	  lang/he.js, lang/hu.js, lang/it.js, lang/ja-euc.js,
+	  lang/ja-jis.js, lang/ja-sjis.js, lang/ja-utf8.js, lang/lt.js,
+	  lang/lv.js, lang/nb.js, lang/nl.js, lang/no.js, lang/pl.js,
+	  lang/pt_br.js, lang/ro.js, lang/ru.js, lang/se.js, lang/si.js,
+	  lang/vn.js, plugins/CSS/css.js, plugins/CSS/lang/en.js,
+	  plugins/CharacterMap/character-map.js,
+	  plugins/CharacterMap/img/ed_charmap.gif,
+	  plugins/CharacterMap/lang/de.js, plugins/CharacterMap/lang/en.js,
+	  plugins/CharacterMap/popups/select_character.html,
 	  plugins/ContextMenu/context-menu.js,
-	  plugins/Equation/equation.js, plugins/FindReplace/lang/ru.js,
-	  plugins/FullPage/full-page.js, plugins/FullScreen/lang/ru.js,
-	  plugins/GetHtml/get-html.js, plugins/ImageManager/config.inc.php,
-	  plugins/ImageManager/editor.php,
-	  plugins/ImageManager/editorFrame.php,
-	  plugins/ImageManager/image-manager.js,
-	  plugins/ImageManager/images.php,
-	  plugins/ImageManager/manager.php,
-	  plugins/ImageManager/resizer.php,
-	  plugins/ImageManager/thumbs.php,
-	  plugins/ImageManager/Classes/Files.php,
-	  plugins/ImageManager/Classes/GD.php,
-	  plugins/ImageManager/Classes/IM.php,
-	  plugins/ImageManager/Classes/ImageEditor.php,
-	  plugins/ImageManager/Classes/ImageManager.php,
-	  plugins/ImageManager/Classes/NetPBM.php,
-	  plugins/ImageManager/Classes/Thumbnail.php,
-	  plugins/ImageManager/Classes/Transform.php,
-	  plugins/ImageManager/assets/dialog.js,
-	  plugins/ImageManager/assets/editor.js,
-	  plugins/ImageManager/assets/editorFrame.js,
-	  plugins/ImageManager/assets/imagelist.css,
-	  plugins/ImageManager/assets/images.js,
-	  plugins/ImageManager/assets/manager.js,
-	  plugins/ImageManager/assets/popup.js,
-	  plugins/ImageManager/lang/ru.js, plugins/ListType/lang/ru.js,
-	  plugins/OacsFs/lang/empty,
-	  plugins/OacsFs/popups/file-selector.tcl,
-	  plugins/PasteText/popups/paste_text.html,
+	  plugins/ContextMenu/menu.css, plugins/ContextMenu/lang/de.js,
+	  plugins/ContextMenu/lang/el.js, plugins/ContextMenu/lang/en.js,
+	  plugins/ContextMenu/lang/fr.js, plugins/ContextMenu/lang/he.js,
+	  plugins/ContextMenu/lang/nl.js, plugins/DynamicCSS/dynamiccss.js,
+	  plugins/DynamicCSS/lang/de.js, plugins/DynamicCSS/lang/en.js,
+	  plugins/DynamicCSS/lang/fr.js, plugins/FullPage/full-page.js,
+	  plugins/FullPage/test.html, plugins/FullPage/img/docprop.gif,
+	  plugins/FullPage/lang/de.js, plugins/FullPage/lang/en.js,
+	  plugins/FullPage/lang/fr.js, plugins/FullPage/lang/he.js,
+	  plugins/FullPage/lang/ro.js,
+	  plugins/FullPage/popups/docprop.html, plugins/HtmlTidy/README,
+	  plugins/HtmlTidy/html-tidy-config.cfg,
+	  plugins/HtmlTidy/html-tidy-logic.php,
+	  plugins/HtmlTidy/html-tidy.js,
+	  plugins/HtmlTidy/img/html-tidy.gif, plugins/HtmlTidy/lang/en.js,
+	  plugins/ListType/list-type.js, plugins/ListType/lang/de.js,
+	  plugins/ListType/lang/en.js,
+	  plugins/SpellChecker/readme-tech.html,
 	  plugins/SpellChecker/spell-check-logic.cgi,
+	  plugins/SpellChecker/spell-check-style.css,
 	  plugins/SpellChecker/spell-check-ui.html,
 	  plugins/SpellChecker/spell-check-ui.js,
 	  plugins/SpellChecker/spell-checker.js,
+	  plugins/SpellChecker/img/he-spell-check.gif,
+	  plugins/SpellChecker/lang/cz.js, plugins/SpellChecker/lang/da.js,
+	  plugins/SpellChecker/lang/de.js, plugins/SpellChecker/lang/en.js,
+	  plugins/SpellChecker/lang/he.js, plugins/SpellChecker/lang/hu.js,
+	  plugins/SpellChecker/lang/it.js, plugins/SpellChecker/lang/nl.js,
+	  plugins/SpellChecker/lang/ro.js,
 	  plugins/TableOperations/table-operations.js,
+	  plugins/TableOperations/lang/cz.js,
+	  plugins/TableOperations/lang/da.js,
+	  plugins/TableOperations/lang/de.js,
+	  plugins/TableOperations/lang/el.js,
+	  plugins/TableOperations/lang/en.js,
+	  plugins/TableOperations/lang/fi.js,
 	  plugins/TableOperations/lang/fr.js,
-	  plugins/TableOperations/lang/ru.js, popups/popup.js: upgrading
-	  xinha to the current snapshot
+	  plugins/TableOperations/lang/he.js,
+	  plugins/TableOperations/lang/hu.js,
+	  plugins/TableOperations/lang/it.js,
+	  plugins/TableOperations/lang/nl.js,
+	  plugins/TableOperations/lang/no.js,
+	  plugins/TableOperations/lang/ro.js, popups/about.html,
+	  popups/blank.html, popups/custom2.html, popups/editor_help.html,
+	  popups/fullscreen.html, popups/insert_image.html,
+	  popups/insert_table.html, popups/link.html,
+	  popups/old-fullscreen.html, popups/old_insert_image.html,
+	  popups/popup.js, popups/select_color.html: pull in htmlarea
+	  3.0rc3
 
-2006-02-11 07:27  victorg
+2005-01-30 07:13  jeffd
 
-	* packages/acs-lang/: acs-lang.info,
-	  sql/oracle/upgrade/upgrade-5.2.2d1-5.2.2d2.sql,
-	  sql/oracle/upgrade/upgrade-5.2.3d1-5.2.3d2.sql,
-	  sql/postgresql/upgrade/upgrade-5.2.2d1-5.2.2d2.sql,
-	  sql/postgresql/upgrade/upgrade-5.2.3d1-5.2.3d2.sql: Fixing
-	  version from 5.2.2d2 to 5.2.3d2 ( We are releasing 5.2.3, not
-	  5.2.2 :) ). Adding correct upgrade files.
+	* packages/acs-kernel/acs-kernel.info: add the tags and attributes
+	  used by htmlarea to the set of allowed tags (Except IMG and src=
 
-2006-02-09 14:33  gustafn
+2005-01-29 10:58  jeffd
 
-	* packages/acs-tcl/tcl/request-processor-procs.tcl: compatibility
-	  update for naviserver 4.99.1 or newer
+	* packages/acs-tcl/tcl/apm-install-procs.tcl: add default ids to
+	  simplify writing install.xml scripts (ACS_KERNEL ACS_TEMPLATING
+	  ACS_AUTHENTICATION ACS_LANG and MAIN_SITE) from Lee Denision
 
-2006-02-09 12:45  maltes
+2005-01-29 10:43  jeffd
 
-	* packages/acs-lang/tcl/lang-util-procs.tcl: Added procedure to
-	  create edit url for message keys
+	* packages/acs-tcl/tcl/: defs-procs.tcl, object-procs.tcl,
+	  object-procs.xql: cache the magic object lookup and kernel id
+	  lookups since they were being called on every page causing 4 db
+	  hits
 
-2006-02-06 08:12  victorg
+2005-01-27 13:35  jeffd
 
-	* packages/acs-tcl/tcl/: 20-memoize-init.tcl, memoize-procs.tcl:
-	  Moving definition of util_memoize_flush from memoize-procs.tcl to
-	  20-memoize-init.tcl. server_cluster_httpget_from_peers proc was
-	  not defined when loading memoize procs. This issue is related to
-	  bug #2396.
+	* packages/acs-tcl/tcl/: security-procs.tcl, utilities-procs.tcl:
+	  fix links to old ad bboard posts.
 
-2006-02-04 09:42  daveb
+2005-01-27 08:20  leed
 
-	* packages/acs-content-repository/tcl/revision-procs.tcl: Allow png
-	  to be uploaded as images
+	* packages/acs-tcl/tcl/install-procs.tcl: Fixed error when package
+	  is already mounted at a location.
 
-2006-02-01 13:32  victorg
+2005-01-26 14:45  lars
 
-	* packages/acs-lang/: acs-lang.info, sql/oracle/ad-locales.sql,
-	  sql/oracle/upgrade/upgrade-5.2.2d1-5.2.2d2.sql,
-	  sql/postgresql/ad-locales.sql,
-	  sql/postgresql/upgrade/upgrade-5.2.2d1-5.2.2d2.sql: Adding
-	  locales: es_CO, ind_ID, bg_BG, pa_IN
+	* packages/acs-tcl/tcl/utilities-procs.tcl: util_user_message call
+	  in ad_returnredirect was duplicated due to an errorneous merge
 
-2006-01-30 15:48  hughb
+2005-01-26 13:07  jeffd
 
-	* packages/acs-service-contract/www/binding-uninstall-oracle.xql:
-	  Fix Oracle bug -- oracle sql was calling a function where the
-	  only API is a procedure. Could never have worked.
+	* packages/acs-bootstrap-installer/installer/install.tcl: use
+	  subsite::main_site_id to get main site id rather than query on
+	  name since name can change when running install.xml
 
-2006-01-27 08:53  maltes
+2005-01-25 16:53  jeffd
 
-	* packages/acs-tcl/: catalog/acs-tcl.de_DE.ISO-8859-1.xml,
-	  catalog/acs-tcl.en_US.ISO-8859-1.xml,
-	  tcl/community-core-procs.tcl, tcl/community-core-procs.xql:
-	  reverting. not because I think I have to but because I'm just
-	  sick of discussing this minor change for ages
+	* packages/acs-subsite/tcl/subsite-procs.tcl: trim spurious
+	  trailing . in sidebar links (fixed regexp)
 
-2006-01-26 14:19  gustafn
+2005-01-25 16:51  jeffd
 
-	* packages/acs-templating/tcl/richtext-procs.tcl: fixed format menu
-	  and tested to following cases: with/without javascript,
-	  with/without UseHtmlAreaForRichtextP, with rte and xinha
+	* packages/acs-subsite/tcl/subsite-procs.tcl: trim spurious
+	  trailing . in sidebar links
 
-2006-01-26 07:44  gustafn
+2005-01-25 16:23  jeffd
 
-	* packages/acs-templating/tcl/richtext-procs.tcl: make xinha branch
-	  working, when javascript is turned off
+	* packages/acs-tcl/tcl/: apm-install-procs.tcl, install-procs.tcl:
+	  add the community-new action for install.xml; allow value field
+	  for parameter to be defaulted to {} since otherwise you can't set
+	  a parameter to the empty string; add a -nested flag to
+	  apm::process_install_xml so that it's possible to do included
+	  install.xml's
 
-2006-01-25 17:10  gustafn
+2005-01-25 16:16  jeffd
 
-	* packages/acs-templating/tcl/richtext-procs.tcl: fixing a typo (in
-	  depreciatged code), removing the text format box for richtext,
-	  when htmlarea_p is set (this will easily lead to a content type
-	  text/enhanced, where the real content generated from the rich
-	  text widget is in HTML;  this can lead to errors in xowiki).
+	* packages/acs-subsite/www/admin/applications/: index-oracle.xql,
+	  index-postgresql.xql, index.tcl: expand children applications.
+	  this won't scale but without it you can't set parameters in
+	  applications other than those immediately under the subsite
 
-2006-01-25 06:04  maltes
+2005-01-25 15:51  jeffd
 
-	* packages/acs-tcl/tcl/application-data-link-procs.xql: Added
-	  orderby
+	* packages/acs-bootstrap-installer/: installer.tcl,
+	  installer/install.tcl: no longer redefine ad_conn in install
+	  since it's needed in some libraries in callbacks, do install.xml
+	  after admin user created, load catalogs after install.
 
-2006-01-25 06:04  maltes
+2005-01-25 15:15  jeffd
 
-	* packages/acs-tcl/tcl/: community-core-procs.tcl,
-	  community-core-procs.xql: Allow usage of an email with multiple
-	  party_ids. Should not break existing sites (as they would have
-	  broken if you have an e-mail twice in the system
+	* packages/acs-lang/catalog/acs-lang.en_GB.ISO-8859-1.xml: en_GB
+	  24h clock
 
-2006-01-25 06:03  maltes
+2005-01-23 16:58  jeffd
 
-	* packages/acs-tcl/tcl/memoize-procs.tcl: changed notice to debug
+	* packages/acs-content-repository/tcl/filter-procs.tcl: item_id
+	  should have been item_info(item_id), broke file-storage/view
 
-2006-01-23 08:50  roelc
+2005-01-23 16:55  daveb
 
-	* packages/acs-subsite/www/resources/site-master.css: Added
-	  admin-button classes
+	* packages/acs-content-repository/tcl/content-revision-procs.tcl:
+	  Add context_id as parameter of content::revsion::new.  Fix
+	  extended attributes code to ignore acs_objects attributes as well
+	  as cr_revision.
 
-2006-01-18 09:03  hughb
+2005-01-23 16:22  jeffd
 
-	* packages/acs-content-repository/: sql/oracle/content-image.sql,
-	  sql/oracle/upgrade/upgrade-5.2.2-5.2.3d1.sql,
-	  tcl/test/content-image-test-procs.tcl: fix non-nullable package
-	  id on image (package id should be nullable and it now is)
+	* packages/acs-lang/tcl/localization-data-init.tcl: %D format
+	  (which should not be used) had month twice.
 
-2006-01-17 16:29  donb
+2005-01-23 15:16  jeffd
 
-	* packages/acs-subsite/www/admin/site-map/application-new.tcl:
-	  Fixed a bug in the code to add an application, this has been here
-	  a long time, presumably most people are adding apps from the main
-	  page.
+	* packages/acs-content-repository/: acs-content-repository.info,
+	  sql/oracle/content-create.sql,
+	  sql/oracle/upgrade/upgrade-5.2.0d11-5.2.0d12.sql,
+	  sql/postgresql/content-create.sql,
+	  sql/postgresql/upgrade/upgrade-5.2.0d11-5.2.0d12.sql: add index
+	  on cr_revisions(publish_date), upgrade bump to 5.2.0d12
 
-2006-01-16 19:46  daveb
+2005-01-22 12:25  jeffd
 
-	* packages/: acs-admin/acs-admin.info,
-	  acs-api-browser/acs-api-browser.info,
-	  acs-authentication/acs-authentication.info,
-	  acs-automated-testing/acs-automated-testing.info,
-	  acs-bootstrap-installer/acs-bootstrap-installer.info,
-	  acs-content-repository/acs-content-repository.info,
-	  acs-core-docs/acs-core-docs.info, acs-kernel/acs-kernel.info,
-	  acs-lang/acs-lang.info, acs-mail/acs-mail.info,
-	  acs-messaging/acs-messaging.info,
-	  acs-reference/acs-reference.info,
-	  acs-service-contract/acs-service-contract.info,
-	  acs-subsite/acs-subsite.info, acs-tcl/acs-tcl.info,
-	  acs-templating/acs-templating.info,
-	  ref-timezones/ref-timezones.info, search/search.info: Updating
-	  info files for 5.2.2
+	* packages/acs-kernel/sql/postgresql/: acs-create.sql,
+	  apm-create.sql: some tweaks to install on pg 8.0 -- for some
+	  reason acs__magic_object_id declared immutable breaks the install
+	  on 8.0 so make it stable
 
-2006-01-16 19:44  daveb
+2005-01-22 10:05  miguelm
 
+	* packages/acs-subsite/tcl/apm-callback-procs.tcl: removing the
+	  rel_types::new call
+
+2005-01-22 10:02  miguelm
+
+	* packages/acs-subsite/sql/postgresql/: acs-subsite-create.sql,
+	  email-image-drop.sql, email-image.sql, acs-subsite-drop.sql:
+	  changes to create the relation for emailimage
+
+2005-01-22 09:57  miguelm
+
+	* packages/acs-subsite/sql/oracle/: email-image-drop.sql,
+	  email-image.sql, acs-subsite-create.sql, acs-subsite-drop.sql:
+	  changes to create the relation for emailimage in oracle
+
+2005-01-21 12:41  daveb
+
+	* packages/acs-content-repository/tcl/: filter-procs-oracle.xql,
+	  filter-procs-postgresql.xql, filter-procs.tcl: Remove pl/sql
+	  function from where clause.
+
+2005-01-21 06:25  jeffd
+
+	* packages/acs-content-repository/tcl/: content-folder-procs.tcl,
+	  content-item-procs.tcl, content-keyword-procs.tcl,
+	  content-revision-procs.tcl, content-symlink-procs.tcl,
+	  content-type-procs.tcl, filter-procs-oracle.xql,
+	  filter-procs-postgresql.xql: some changes missed from 5.1 branch
+
+2005-01-19 08:06  miguelm
+
+	* packages/acs-subsite/www/admin/: manage-email-privacy.adp,
+	  manage-email-privacy.tcl: Changing messages
+
+2005-01-19 08:02  miguelm
+
+	* packages/acs-subsite/catalog/: acs-subsite.en_US.ISO-8859-1.xml,
+	  acs-subsite.es_ES.ISO-8859-1.xml: More messages
+
+2005-01-19 06:58  miguelm
+
+	* packages/acs-subsite/www/admin/site-map/site-map.tcl: Fixing
+	  context bar and changin buttons name
+
+2005-01-19 06:56  miguelm
+
+	* packages/acs-subsite/www/site-map/index.adp: Fixing link
+
+2005-01-19 06:52  miguelm
+
+	* packages/acs-subsite/www/site-map/: index.tcl, index.adp: Making
+	  some changes in link and display
+
+2005-01-19 04:33  lars
+
+	* packages/acs-tcl/tcl/text-html-procs.tcl: If there's no
+	  whitespace before truncate_len, then just truncate at the given
+	  index, instead of leaving us with an empty string
+
+2005-01-18 10:27  miguelm
+
+	* packages/acs-subsite/acs-subsite.info: Adding callback
+
+2005-01-18 09:08  maltes
+
+	* packages/acs-subsite/tcl/apm-callback-procs.tcl: Fixed typo
+
+2005-01-18 09:06  donb
+
+	* packages/acs-subsite/tcl/: package-procs-oracle.xql,
+	  package-procs.tcl: Fixed a CVS merge error from 5.1 ...
+
+2005-01-18 08:44  andrewg
+
+	* packages/acs-content-repository/sql/oracle/content-revision.sql:
+	  Inserting a couple of missing commas.
+
+2005-01-18 08:35  andrewg
+
+	* packages/acs-content-repository/sql/oracle/packages-create.sql:
+	  Added missing comma in content_revision package definition.
+
+2005-01-18 08:22  andrewg
+
+	* packages/acs-kernel/sql/oracle/apm-create.sql: Bugfix for
+	  apm_package.new.  Moved the insert into apm_packages up, before
+	  the update on acs_objects, to satisfy referential integrity on
+	  acs_object.package_id.
+
+2005-01-18 04:13  leed
+
+	* packages/acs-subsite/tcl/: package-procs-postgresql.xql,
+	  package-procs.tcl: Fixed duplicate package_function_p definitions
+	  and miss-named sql.
+
+2005-01-15 15:05  vivianh
+
+	* packages/acs-subsite/www/admin/site-map/site-map.adp: User
+	  site-map support
+
+2005-01-15 06:43  miguelm
+
+	* packages/acs-subsite/www/members/index.tcl: Display of email
+	  replaced with email_image proc call
+
+2005-01-14 07:35  miguelm
+
+	* packages/acs-admin/www/users/index.adp: Linkto a page to mange
+	  users email privacy level added
+
+2005-01-14 07:01  miguelm
+
+	* packages/acs-subsite/acs-subsite.info: New version that supports
+	  email substitution whith an image, and allows users to choose if
+	  they want it or not
+
+2005-01-14 06:52  miguelm
+
+	* packages/acs-subsite/www/user/: email-privacy-level.adp,
+	  email-privacy-level.tcl: Allows users to choose their emali
+	  privacy level
+
+2005-01-14 06:50  miguelm
+
+	* packages/acs-subsite/www/shared/images/at.gif: @ Symbol
+
+2005-01-14 06:49  miguelm
+
+	* packages/acs-subsite/www/shared/: send-email.adp, send-email.tcl,
+	  send-email.xql: Allows to send an email message with out showing
+	  the destinatary email
+
+2005-01-14 06:46  miguelm
+
+	* packages/acs-subsite/www/shared/email-image-bits.tcl: Shows user
+	  email-image
+
+2005-01-14 06:43  miguelm
+
+	* packages/acs-subsite/www/admin/: manage-email-privacy.adp,
+	  manage-email-privacy.tcl: Manage the PrivateEmailLevelP parameter
+	  to set the privacy level of the users email
+
+2005-01-14 06:38  miguelm
+
+	* packages/acs-subsite/tcl/: email-image-procs-oracle.xql,
+	  email-image-procs-postgresql.xql, email-image-procs.tcl,
+	  email-image-procs.xql: email-imaeg procs that support the
+	  creation of an image instead of showing the email as text
+
+2005-01-14 06:36  miguelm
+
+	* packages/acs-subsite/tcl/apm-callback-procs.tcl: Addign apm
+	  callbacks for upgrade and for install to support email-image
+
+2005-01-13 15:37  miguelm
+
+	* packages/acs-subsite/www/shared/: community-member.adp,
+	  community-member.tcl: Adding support for email-image
+
+2005-01-13 15:32  miguelm
+
+	* packages/acs-subsite/: lib/user-info.tcl, www/pvt/home.adp:
+	  Adding support for email-image
+
+2005-01-13 15:28  miguelm
+
+	* packages/acs-subsite/catalog/: acs-subsite.en_US.ISO-8859-1.xml,
+	  acs-subsite.es_ES.ISO-8859-1.xml: New messages
+
+2005-01-13 05:58  jeffd
+
+	* packages/notifications/notifications.info,
+	  packages/notifications/catalog/notifications.ar_EG.utf-8.xml,
+	  packages/notifications/catalog/notifications.ar_LB.utf-8.xml,
+	  packages/notifications/catalog/notifications.ast_ES.ISO-8859-1.xml,
+	  packages/notifications/catalog/notifications.ca_ES.ISO-8859-1.xml,
+	  packages/notifications/catalog/notifications.da_DK.ISO-8859-1.xml,
+	  packages/notifications/catalog/notifications.de_DE.ISO-8859-1.xml,
+	  packages/notifications/catalog/notifications.en_US.ISO-8859-1.xml,
+	  packages/notifications/catalog/notifications.es_ES.ISO-8859-1.xml,
+	  packages/notifications/catalog/notifications.es_GT.ISO-8859-1.xml,
+	  packages/notifications/catalog/notifications.eu_ES.ISO-8859-1.xml,
+	  packages/notifications/catalog/notifications.fi_FI.utf-8.xml,
+	  packages/notifications/catalog/notifications.fr_FR.ISO-8859-1.xml,
+	  packages/notifications/catalog/notifications.gl_ES.ISO-8859-1.xml,
+	  packages/notifications/catalog/notifications.hu_HU.utf-8.xml,
+	  packages/notifications/catalog/notifications.it_IT.ISO-8859-1.xml,
+	  packages/notifications/catalog/notifications.ko_KR.utf-8.xml,
+	  packages/notifications/catalog/notifications.ms_MY.utf-8.xml,
+	  packages/notifications/catalog/notifications.nl_NL.ISO-8859-1.xml,
+	  packages/notifications/catalog/notifications.nn_NO.ISO-8859-1.xml,
+	  packages/notifications/catalog/notifications.no_NO.ISO-8859-1.xml,
+	  packages/notifications/catalog/notifications.pl_PL.utf-8.xml,
+	  packages/notifications/catalog/notifications.pt_BR.ISO-8859-1.xml,
+	  packages/notifications/catalog/notifications.pt_PT.ISO-8859-1.xml,
+	  packages/notifications/catalog/notifications.ru_RU.utf-8.xml,
+	  packages/notifications/catalog/notifications.sv_SE.ISO-8859-1.xml,
+	  packages/notifications/catalog/notifications.zh_CN.utf-8.xml,
+	  packages/notifications/sql/oracle/upgrade/upgrade-5.1.0d2-5.1.0d3.sql,
+	  packages/notifications/tcl/notification-email-procs.tcl,
+	  packages/notifications/tcl/notification-procs.xql,
+	  packages/notifications/tcl/sweep-procs.tcl,
+	  packages/ref-timezones/ref-timezones.info,
+	  packages/search/search.info,
+	  packages/search/www/advanced-search.adp,
+	  packages/search/www/advanced-search.tcl,
+	  packages/search/www/index.adp, packages/search/www/search.adp,
+	  packages/search/www/search.tcl,
+	  packages/tsearch2-driver/sql/postgresql/upgrade/upgrade-0.4d1-0.4d2.sql,
+	  www/blank-master.adp, www/blank-master.tcl, www/site-master.adp,
+	  www/site-master.tcl: commit to HEAD of merge of changes on
+	  oacs-5-1 branch between tags jcd-merge-5-1-20040724 and
+	  jcd-merge-5-1-20050111
+
+2005-01-13 05:54  jeffd
+
+	* ChangeLog, etc/analog.cfg, etc/backup.sh, etc/config.tcl,
+	  packages/acs-admin/acs-admin.info,
+	  packages/acs-admin/lib/become.tcl,
+	  packages/acs-admin/lib/become.xql,
+	  packages/acs-admin/lib/password-update.adp,
+	  packages/acs-admin/lib/password-update.tcl,
+	  packages/acs-admin/tcl/apm-admin-init.tcl,
+	  packages/acs-admin/tcl/apm-admin-procs.tcl,
+	  packages/acs-admin/www/monitor.tcl,
+	  packages/acs-admin/www/server-restart.adp,
+	  packages/acs-admin/www/auth/authority-oracle.xql,
+	  packages/acs-admin/www/auth/authority-postgresql.xql,
+	  packages/acs-admin/www/users/become.adp,
+	  packages/acs-admin/www/users/become.tcl,
+	  packages/acs-admin/www/users/one.adp,
+	  packages/acs-admin/www/users/one.tcl,
+	  packages/acs-admin/www/users/password-update.adp,
+	  packages/acs-admin/www/users/password-update.tcl,
+	  packages/acs-api-browser/acs-api-browser.info,
+	  packages/acs-api-browser/lib/search.adp,
+	  packages/acs-api-browser/lib/search.tcl,
+	  packages/acs-authentication/acs-authentication.info,
+	  packages/acs-authentication/catalog/acs-authentication.ar_LB.utf-8.xml,
+	  packages/acs-authentication/catalog/acs-authentication.ca_ES.ISO-8859-1.xml,
+	  packages/acs-authentication/catalog/acs-authentication.da_DK.ISO-8859-1.xml,
+	  packages/acs-authentication/catalog/acs-authentication.de_DE.ISO-8859-1.xml,
+	  packages/acs-authentication/catalog/acs-authentication.en_US.ISO-8859-1.xml,
+	  packages/acs-authentication/catalog/acs-authentication.es_ES.ISO-8859-1.xml,
+	  packages/acs-authentication/catalog/acs-authentication.es_GT.ISO-8859-1.xml,
+	  packages/acs-authentication/catalog/acs-authentication.eu_ES.ISO-8859-1.xml,
+	  packages/acs-authentication/catalog/acs-authentication.fa_IR.utf-8.xml,
+	  packages/acs-authentication/catalog/acs-authentication.fr_FR.ISO-8859-1.xml,
+	  packages/acs-authentication/catalog/acs-authentication.hu_HU.utf-8.xml,
+	  packages/acs-authentication/catalog/acs-authentication.it_IT.ISO-8859-1.xml,
+	  packages/acs-authentication/catalog/acs-authentication.ms_MY.utf-8.xml,
+	  packages/acs-authentication/catalog/acs-authentication.nl_NL.ISO-8859-1.xml,
+	  packages/acs-authentication/catalog/acs-authentication.pl_PL.utf-8.xml,
+	  packages/acs-authentication/catalog/acs-authentication.pt_BR.ISO-8859-1.xml,
+	  packages/acs-authentication/catalog/acs-authentication.zh_CN.utf-8.xml,
+	  packages/acs-authentication/catalog/acs-authentication.zh_TW.utf-8.xml,
+	  packages/acs-authentication/tcl/apm-callback-procs.tcl,
+	  packages/acs-authentication/tcl/authentication-procs.tcl,
+	  packages/acs-authentication/tcl/local-procs.tcl,
+	  packages/acs-authentication/tcl/password-procs.tcl,
+	  packages/acs-authentication/www/doc/acs-authentication.htm,
+	  packages/acs-authentication/www/doc/ext-auth-install.html,
+	  packages/acs-authentication/www/doc/index.html,
+	  packages/acs-automated-testing/acs-automated-testing.info,
+	  packages/acs-bootstrap-installer/acs-bootstrap-installer.info,
+	  packages/acs-content-repository/acs-content-repository.info,
+	  packages/acs-content-repository/sql/oracle/content-create.sql,
+	  packages/acs-content-repository/sql/oracle/content-folder.sql,
+	  packages/acs-content-repository/sql/oracle/content-revision.sql,
+	  packages/acs-content-repository/sql/oracle/packages-create.sql,
+	  packages/acs-content-repository/sql/oracle/upgrade/upgrade-5.1.2d5-5.1.2d6.sql,
+	  packages/acs-content-repository/sql/oracle/upgrade/upgrade-5.1.2d6-5.1.2d7.sql,
+	  packages/acs-content-repository/sql/oracle/upgrade/upgrade-5.1.2d8-5.1.2d9.sql,
+	  packages/acs-content-repository/sql/postgresql/content-create.sql,
+	  packages/acs-content-repository/sql/postgresql/content-extlink.sql,
+	  packages/acs-content-repository/sql/postgresql/content-folder.sql,
+	  packages/acs-content-repository/sql/postgresql/content-item.sql,
+	  packages/acs-content-repository/sql/postgresql/content-revision.sql,
+	  packages/acs-content-repository/sql/postgresql/content-template.sql,
+	  packages/acs-content-repository/sql/postgresql/content-type.sql,
+	  packages/acs-content-repository/sql/postgresql/upgrade/upgrade-4.5-4.6.sql,
+	  packages/acs-content-repository/sql/postgresql/upgrade/upgrade-5.1.2d4-5.1.2d5.sql,
+	  packages/acs-content-repository/sql/postgresql/upgrade/upgrade-5.1.2d6-5.1.2d7.sql,
+	  packages/acs-content-repository/sql/postgresql/upgrade/upgrade-5.1.4d1-5.1.4d2.sql,
+	  packages/acs-content-repository/sql/postgresql/upgrade/upgrade-5.1.4d2-5.1.4d3.sql,
+	  packages/acs-content-repository/sql/postgresql/upgrade/upgrade-5.1.4d3-5.1.4d4.sql,
+	  packages/acs-content-repository/sql/postgresql/upgrade/upgrade-5.1.4d4-5.1.4d5.sql,
+	  packages/acs-content-repository/sql/postgresql/upgrade/upgrade-5.1.4d5-5.1.4d6.sql,
+	  packages/acs-content-repository/sql/postgresql/upgrade/upgrade-5.1.4d6-5.1.4d7.sql,
+	  packages/acs-content-repository/tcl/content-item-procs.xql,
+	  packages/acs-content-repository/tcl/revision-procs-oracle.xql,
+	  packages/acs-content-repository/tcl/revision-procs.tcl,
+	  packages/acs-content-repository/tcl/symlink-procs-postgresql.xql,
+	  packages/acs-core-docs/acs-core-docs.info,
+	  packages/acs-core-docs/www/files/nsd-postgres.txt,
+	  packages/acs-core-docs/www/xml/index.xml,
+	  packages/acs-core-docs/www/xml/releasing-openacs.xml,
+	  packages/acs-core-docs/www/xml/variables.ent,
+	  packages/acs-core-docs/www/xml/developers-guide/permissions.xml,
+	  packages/acs-core-docs/www/xml/developers-guide/submissions.xml,
+	  packages/acs-core-docs/www/xml/developers-guide/tutorial-advanced.xml,
+	  packages/acs-core-docs/www/xml/engineering-standards/cvs.xml,
+	  packages/acs-core-docs/www/xml/engineering-standards/docbook-primer.xml,
+	  packages/acs-core-docs/www/xml/engineering-standards/eng-standards-versioning.xml,
+	  packages/acs-core-docs/www/xml/for-everyone/release-notes.xml,
+	  packages/acs-core-docs/www/xml/install-guide/aolserver.xml,
+	  packages/acs-core-docs/www/xml/install-guide/aolserver4.xml,
+	  packages/acs-core-docs/www/xml/install-guide/maintenance.xml,
+	  packages/acs-core-docs/www/xml/install-guide/openacs.xml,
+	  packages/acs-core-docs/www/xml/install-guide/os.xml,
+	  packages/acs-core-docs/www/xml/install-guide/other-software.xml,
+	  packages/acs-core-docs/www/xml/install-guide/overview.xml,
+	  packages/acs-core-docs/www/xml/install-guide/postgres.xml,
+	  packages/acs-core-docs/www/xml/install-guide/software.xml,
+	  packages/acs-core-docs/www/xml/install-guide/upgrade.xml,
+	  packages/acs-kernel/acs-kernel.info,
+	  packages/acs-kernel/catalog/acs-kernel.ar_EG.utf-8.xml,
+	  packages/acs-kernel/catalog/acs-kernel.ar_LB.utf-8.xml,
+	  packages/acs-kernel/catalog/acs-kernel.ast_ES.ISO-8859-1.xml,
+	  packages/acs-kernel/catalog/acs-kernel.ca_ES.ISO-8859-1.xml,
+	  packages/acs-kernel/catalog/acs-kernel.da_DK.ISO-8859-1.xml,
+	  packages/acs-kernel/catalog/acs-kernel.de_DE.ISO-8859-1.xml,
+	  packages/acs-kernel/catalog/acs-kernel.en_US.ISO-8859-1.xml,
+	  packages/acs-kernel/catalog/acs-kernel.es_ES.ISO-8859-1.xml,
+	  packages/acs-kernel/catalog/acs-kernel.es_GT.ISO-8859-1.xml,
+	  packages/acs-kernel/catalog/acs-kernel.eu_ES.ISO-8859-1.xml,
+	  packages/acs-kernel/catalog/acs-kernel.fi_FI.utf-8.xml,
+	  packages/acs-kernel/catalog/acs-kernel.fr_FR.ISO-8859-1.xml,
+	  packages/acs-kernel/catalog/acs-kernel.gl_ES.ISO-8859-1.xml,
+	  packages/acs-kernel/catalog/acs-kernel.hu_HU.utf-8.xml,
+	  packages/acs-kernel/catalog/acs-kernel.it_IT.ISO-8859-1.xml,
+	  packages/acs-kernel/catalog/acs-kernel.ja_JP.utf-8.xml,
+	  packages/acs-kernel/catalog/acs-kernel.ko_KR.utf-8.xml,
+	  packages/acs-kernel/catalog/acs-kernel.ms_MY.utf-8.xml,
+	  packages/acs-kernel/catalog/acs-kernel.nl_NL.ISO-8859-1.xml,
+	  packages/acs-kernel/catalog/acs-kernel.nn_NO.ISO-8859-1.xml,
+	  packages/acs-kernel/catalog/acs-kernel.no_NO.ISO-8859-1.xml,
+	  packages/acs-kernel/catalog/acs-kernel.pl_PL.utf-8.xml,
+	  packages/acs-kernel/catalog/acs-kernel.pt_BR.ISO-8859-1.xml,
+	  packages/acs-kernel/catalog/acs-kernel.pt_PT.ISO-8859-1.xml,
+	  packages/acs-kernel/catalog/acs-kernel.ro_RO.utf-8.xml,
+	  packages/acs-kernel/catalog/acs-kernel.ru_RU.utf-8.xml,
+	  packages/acs-kernel/catalog/acs-kernel.sv_SE.ISO-8859-1.xml,
+	  packages/acs-kernel/catalog/acs-kernel.tr_TR.utf-8.xml,
+	  packages/acs-kernel/catalog/acs-kernel.zh_CN.utf-8.xml,
+	  packages/acs-kernel/catalog/acs-kernel.zh_TW.utf-8.xml,
+	  packages/acs-kernel/sql/oracle/acs-create.sql,
+	  packages/acs-kernel/sql/oracle/upgrade/upgrade-5.1.2d2-5.1.2d3.sql,
+	  packages/acs-kernel/sql/postgresql/acs-create.sql,
+	  packages/acs-kernel/sql/postgresql/upgrade/upgrade-5.1.2d2-5.1.2d3.sql,
+	  packages/acs-lang/acs-lang.info,
+	  packages/acs-lang/catalog/acs-lang.ar_EG.utf-8.xml,
+	  packages/acs-lang/catalog/acs-lang.ar_LB.utf-8.xml,
+	  packages/acs-lang/catalog/acs-lang.ast_ES.ISO-8859-1.xml,
+	  packages/acs-lang/catalog/acs-lang.ca_ES.ISO-8859-1.xml,
+	  packages/acs-lang/catalog/acs-lang.da_DK.ISO-8859-1.xml,
+	  packages/acs-lang/catalog/acs-lang.de_DE.ISO-8859-1.xml,
+	  packages/acs-lang/catalog/acs-lang.el_GR.utf-8.xml,
+	  packages/acs-lang/catalog/acs-lang.en_GB.ISO-8859-1.xml,
+	  packages/acs-lang/catalog/acs-lang.en_US.ISO-8859-1.xml,
+	  packages/acs-lang/catalog/acs-lang.es_ES.ISO-8859-1.xml,
+	  packages/acs-lang/catalog/acs-lang.es_GT.ISO-8859-1.xml,
+	  packages/acs-lang/catalog/acs-lang.eu_ES.ISO-8859-1.xml,
+	  packages/acs-lang/catalog/acs-lang.fa_IR.utf-8.xml,
+	  packages/acs-lang/catalog/acs-lang.fi_FI.utf-8.xml,
+	  packages/acs-lang/catalog/acs-lang.fr_FR.ISO-8859-1.xml,
+	  packages/acs-lang/catalog/acs-lang.gl_ES.ISO-8859-1.xml,
+	  packages/acs-lang/catalog/acs-lang.hu_HU.utf-8.xml,
+	  packages/acs-lang/catalog/acs-lang.it_IT.ISO-8859-1.xml,
+	  packages/acs-lang/catalog/acs-lang.ja_JP.utf-8.xml,
+	  packages/acs-lang/catalog/acs-lang.ko_KR.utf-8.xml,
+	  packages/acs-lang/catalog/acs-lang.ms_MY.utf-8.xml,
+	  packages/acs-lang/catalog/acs-lang.nl_NL.ISO-8859-1.xml,
+	  packages/acs-lang/catalog/acs-lang.nn_NO.ISO-8859-1.xml,
+	  packages/acs-lang/catalog/acs-lang.no_NO.ISO-8859-1.xml,
+	  packages/acs-lang/catalog/acs-lang.pl_PL.utf-8.xml,
+	  packages/acs-lang/catalog/acs-lang.pt_BR.ISO-8859-1.xml,
+	  packages/acs-lang/catalog/acs-lang.pt_PT.ISO-8859-1.xml,
+	  packages/acs-lang/catalog/acs-lang.ro_RO.utf-8.xml,
+	  packages/acs-lang/catalog/acs-lang.ru_RU.utf-8.xml,
+	  packages/acs-lang/catalog/acs-lang.sh_HR.utf-8.xml,
+	  packages/acs-lang/catalog/acs-lang.sv_SE.ISO-8859-1.xml,
+	  packages/acs-lang/catalog/acs-lang.th_TH.utf-8.xml,
+	  packages/acs-lang/catalog/acs-lang.tr_TR.utf-8.xml,
+	  packages/acs-lang/catalog/acs-lang.zh_CN.utf-8.xml,
+	  packages/acs-lang/catalog/acs-lang.zh_TW.utf-8.xml,
+	  packages/acs-lang/sql/oracle/ad-locales.sql,
+	  packages/acs-lang/sql/oracle/upgrade/upgrade-5.1.2d2-5.1.2d3.sql,
+	  packages/acs-lang/sql/postgresql/ad-locales.sql,
+	  packages/acs-lang/sql/postgresql/upgrade/upgrade-5.1.2d2-5.1.2d3.sql,
+	  packages/acs-lang/tcl/lang-util-procs.tcl,
+	  packages/acs-lang/tcl/localization-data-init.tcl,
+	  packages/acs-lang/tcl/localization-procs.tcl,
+	  packages/acs-lang/www/admin/set-system-timezone.tcl,
+	  packages/acs-mail-lite/tcl/acs-mail-lite-procs.tcl,
+	  packages/acs-messaging/acs-messaging.info,
+	  packages/acs-reference/acs-reference.info,
+	  packages/acs-service-contract/acs-service-contract.info,
+	  packages/acs-subsite/acs-subsite.info,
+	  packages/acs-subsite/catalog/acs-subsite.ar_EG.utf-8.xml,
+	  packages/acs-subsite/catalog/acs-subsite.ar_LB.utf-8.xml,
+	  packages/acs-subsite/catalog/acs-subsite.ast_ES.ISO-8859-1.xml,
+	  packages/acs-subsite/catalog/acs-subsite.ca_ES.ISO-8859-1.xml,
+	  packages/acs-subsite/catalog/acs-subsite.da_DK.ISO-8859-1.xml,
+	  packages/acs-subsite/catalog/acs-subsite.de_DE.ISO-8859-1.xml,
+	  packages/acs-subsite/catalog/acs-subsite.el_GR.utf-8.xml,
+	  packages/acs-subsite/catalog/acs-subsite.en_US.ISO-8859-1.xml,
+	  packages/acs-subsite/catalog/acs-subsite.es_ES.ISO-8859-1.xml,
+	  packages/acs-subsite/catalog/acs-subsite.es_GT.ISO-8859-1.xml,
+	  packages/acs-subsite/catalog/acs-subsite.eu_ES.ISO-8859-1.xml,
+	  packages/acs-subsite/catalog/acs-subsite.fi_FI.utf-8.xml,
+	  packages/acs-subsite/catalog/acs-subsite.fr_FR.ISO-8859-1.xml,
+	  packages/acs-subsite/catalog/acs-subsite.gl_ES.ISO-8859-1.xml,
+	  packages/acs-subsite/catalog/acs-subsite.hu_HU.utf-8.xml,
+	  packages/acs-subsite/catalog/acs-subsite.it_IT.ISO-8859-1.xml,
+	  packages/acs-subsite/catalog/acs-subsite.ja_JP.utf-8.xml,
+	  packages/acs-subsite/catalog/acs-subsite.ko_KR.utf-8.xml,
+	  packages/acs-subsite/catalog/acs-subsite.ms_MY.utf-8.xml,
+	  packages/acs-subsite/catalog/acs-subsite.nl_NL.ISO-8859-1.xml,
+	  packages/acs-subsite/catalog/acs-subsite.nn_NO.ISO-8859-1.xml,
+	  packages/acs-subsite/catalog/acs-subsite.no_NO.ISO-8859-1.xml,
+	  packages/acs-subsite/catalog/acs-subsite.pl_PL.utf-8.xml,
+	  packages/acs-subsite/catalog/acs-subsite.pt_BR.ISO-8859-1.xml,
+	  packages/acs-subsite/catalog/acs-subsite.pt_PT.ISO-8859-1.xml,
+	  packages/acs-subsite/catalog/acs-subsite.ro_RO.utf-8.xml,
+	  packages/acs-subsite/catalog/acs-subsite.ru_RU.utf-8.xml,
+	  packages/acs-subsite/catalog/acs-subsite.sh_HR.utf-8.xml,
+	  packages/acs-subsite/catalog/acs-subsite.sv_SE.ISO-8859-1.xml,
+	  packages/acs-subsite/catalog/acs-subsite.tr_TR.utf-8.xml,
+	  packages/acs-subsite/catalog/acs-subsite.zh_CN.utf-8.xml,
+	  packages/acs-subsite/catalog/acs-subsite.zh_TW.utf-8.xml,
+	  packages/acs-subsite/lib/login.adp,
+	  packages/acs-subsite/lib/login.tcl,
+	  packages/acs-subsite/sql/oracle/acs-subsite-create.sql,
+	  packages/acs-subsite/sql/oracle/acs-subsite-drop.sql,
+	  packages/acs-subsite/sql/oracle/site-node-selection-drop.sql,
+	  packages/acs-subsite/sql/oracle/site-node-selection.sql,
+	  packages/acs-subsite/sql/oracle/upgrade/upgrade-5.1.2-5.1.3.sql,
+	  packages/acs-subsite/sql/postgresql/acs-subsite-create.sql,
+	  packages/acs-subsite/sql/postgresql/acs-subsite-drop.sql,
+	  packages/acs-subsite/sql/postgresql/site-node-selection-drop.sql,
+	  packages/acs-subsite/sql/postgresql/site-node-selection.sql,
+	  packages/acs-subsite/sql/postgresql/upgrade/upgrade-5.1.2-5.1.3.sql,
+	  packages/acs-subsite/tcl/package-procs-oracle.xql,
+	  packages/acs-subsite/tcl/package-procs-postgresql.xql,
+	  packages/acs-subsite/tcl/package-procs.tcl,
+	  packages/acs-subsite/www/index.adp,
+	  packages/acs-subsite/www/admin/site-map/allow-for-view.tcl,
+	  packages/acs-subsite/www/admin/site-map/allow-for-view.xql,
+	  packages/acs-subsite/www/admin/site-map/index.adp,
+	  packages/acs-subsite/www/admin/site-map/index.tcl,
+	  packages/acs-subsite/www/admin/site-map/site-map-oracle.xql,
+	  packages/acs-subsite/www/admin/site-map/site-map-postgresql.xql,
+	  packages/acs-subsite/www/admin/site-map/site-map.adp,
+	  packages/acs-subsite/www/admin/site-map/site-map.tcl,
+	  packages/acs-subsite/www/doc/images.html,
+	  packages/acs-subsite/www/doc/index.html,
+	  packages/acs-subsite/www/permissions/grant.tcl,
+	  packages/acs-subsite/www/permissions/perm-include.adp,
+	  packages/acs-subsite/www/permissions/perm-include.tcl,
+	  packages/acs-subsite/www/pvt/hide-email.tcl,
+	  packages/acs-subsite/www/pvt/hide-email.xql,
+	  packages/acs-subsite/www/register/recover-password.tcl,
+	  packages/acs-subsite/www/resources/core.js,
+	  packages/acs-subsite/www/resources/default-master.css,
+	  packages/acs-subsite/www/resources/down.gif,
+	  packages/acs-subsite/www/resources/up.gif,
+	  packages/acs-subsite/www/resources/xml.gif,
+	  packages/acs-subsite/www/shared/community-member-oracle.xql,
+	  packages/acs-subsite/www/shared/community-member-postgresql.xql,
+	  packages/acs-subsite/www/shared/portrait.tcl,
+	  packages/acs-subsite/www/site-map/index-oracle.xql,
+	  packages/acs-subsite/www/site-map/index-postgresql.xql,
+	  packages/acs-subsite/www/site-map/index.adp,
+	  packages/acs-subsite/www/site-map/index.tcl,
+	  packages/acs-tcl/acs-tcl.info,
+	  packages/acs-tcl/catalog/acs-tcl.ar_EG.utf-8.xml,
+	  packages/acs-tcl/catalog/acs-tcl.ar_LB.utf-8.xml,
+	  packages/acs-tcl/catalog/acs-tcl.ast_ES.ISO-8859-1.xml,
+	  packages/acs-tcl/catalog/acs-tcl.ca_ES.ISO-8859-1.xml,
+	  packages/acs-tcl/catalog/acs-tcl.da_DK.ISO-8859-1.xml,
+	  packages/acs-tcl/catalog/acs-tcl.de_DE.ISO-8859-1.xml,
+	  packages/acs-tcl/catalog/acs-tcl.es_ES.ISO-8859-1.xml,
+	  packages/acs-tcl/catalog/acs-tcl.es_GT.ISO-8859-1.xml,
+	  packages/acs-tcl/catalog/acs-tcl.eu_ES.ISO-8859-1.xml,
+	  packages/acs-tcl/catalog/acs-tcl.fa_IR.utf-8.xml,
+	  packages/acs-tcl/catalog/acs-tcl.fi_FI.utf-8.xml,
+	  packages/acs-tcl/catalog/acs-tcl.fr_FR.ISO-8859-1.xml,
+	  packages/acs-tcl/catalog/acs-tcl.gl_ES.ISO-8859-1.xml,
+	  packages/acs-tcl/catalog/acs-tcl.hu_HU.utf-8.xml,
+	  packages/acs-tcl/catalog/acs-tcl.it_IT.ISO-8859-1.xml,
+	  packages/acs-tcl/catalog/acs-tcl.ja_JP.utf-8.xml,
+	  packages/acs-tcl/catalog/acs-tcl.ko_KR.utf-8.xml,
+	  packages/acs-tcl/catalog/acs-tcl.ms_MY.utf-8.xml,
+	  packages/acs-tcl/catalog/acs-tcl.nl_NL.ISO-8859-1.xml,
+	  packages/acs-tcl/catalog/acs-tcl.nn_NO.ISO-8859-1.xml,
+	  packages/acs-tcl/catalog/acs-tcl.no_NO.ISO-8859-1.xml,
+	  packages/acs-tcl/catalog/acs-tcl.pl_PL.utf-8.xml,
+	  packages/acs-tcl/catalog/acs-tcl.pt_BR.ISO-8859-1.xml,
+	  packages/acs-tcl/catalog/acs-tcl.pt_PT.ISO-8859-1.xml,
+	  packages/acs-tcl/catalog/acs-tcl.ro_RO.utf-8.xml,
+	  packages/acs-tcl/catalog/acs-tcl.ru_RU.utf-8.xml,
+	  packages/acs-tcl/catalog/acs-tcl.sh_HR.utf-8.xml,
+	  packages/acs-tcl/catalog/acs-tcl.sv_SE.ISO-8859-1.xml,
+	  packages/acs-tcl/catalog/acs-tcl.tr_TR.utf-8.xml,
+	  packages/acs-tcl/catalog/acs-tcl.zh_CN.utf-8.xml,
+	  packages/acs-tcl/catalog/acs-tcl.zh_TW.utf-8.xml,
+	  packages/acs-tcl/tcl/00-database-procs.tcl,
+	  packages/acs-tcl/tcl/acs-permissions-procs-oracle.xql,
+	  packages/acs-tcl/tcl/acs-permissions-procs-postgresql.xql,
+	  packages/acs-tcl/tcl/acs-permissions-procs.tcl,
+	  packages/acs-tcl/tcl/acs-permissions-procs.xql,
+	  packages/acs-tcl/tcl/community-core-procs.xql,
+	  packages/acs-tcl/tcl/defs-procs.tcl,
+	  packages/acs-tcl/tcl/rollout-email-procs.tcl,
+	  packages/acs-tcl/tcl/security-procs.tcl,
+	  packages/acs-tcl/tcl/site-nodes-procs.tcl,
+	  packages/acs-tcl/tcl/utilities-procs.tcl,
+	  packages/acs-templating/acs-templating.info,
+	  packages/acs-templating/catalog/acs-templating.ar_LB.utf-8.xml,
+	  packages/acs-templating/catalog/acs-templating.ca_ES.ISO-8859-1.xml,
+	  packages/acs-templating/catalog/acs-templating.da_DK.ISO-8859-1.xml,
+	  packages/acs-templating/catalog/acs-templating.de_DE.ISO-8859-1.xml,
+	  packages/acs-templating/catalog/acs-templating.en_US.ISO-8859-1.xml,
+	  packages/acs-templating/catalog/acs-templating.es_ES.ISO-8859-1.xml,
+	  packages/acs-templating/catalog/acs-templating.es_GT.ISO-8859-1.xml,
+	  packages/acs-templating/catalog/acs-templating.eu_ES.ISO-8859-1.xml,
+	  packages/acs-templating/catalog/acs-templating.fi_FI.utf-8.xml,
+	  packages/acs-templating/catalog/acs-templating.fr_FR.ISO-8859-1.xml,
+	  packages/acs-templating/catalog/acs-templating.hu_HU.utf-8.xml,
+	  packages/acs-templating/catalog/acs-templating.it_IT.ISO-8859-1.xml,
+	  packages/acs-templating/catalog/acs-templating.ko_KR.utf-8.xml,
+	  packages/acs-templating/catalog/acs-templating.ms_MY.utf-8.xml,
+	  packages/acs-templating/catalog/acs-templating.nl_NL.ISO-8859-1.xml,
+	  packages/acs-templating/catalog/acs-templating.nn_NO.ISO-8859-1.xml,
+	  packages/acs-templating/catalog/acs-templating.no_NO.ISO-8859-1.xml,
+	  packages/acs-templating/catalog/acs-templating.pt_BR.ISO-8859-1.xml,
+	  packages/acs-templating/catalog/acs-templating.pt_PT.ISO-8859-1.xml,
+	  packages/acs-templating/catalog/acs-templating.ro_RO.utf-8.xml,
+	  packages/acs-templating/catalog/acs-templating.sv_SE.ISO-8859-1.xml,
+	  packages/acs-templating/catalog/acs-templating.zh_CN.utf-8.xml,
+	  packages/acs-templating/catalog/acs-templating.zh_TW.utf-8.xml,
+	  packages/acs-templating/resources/forms/inline.adp,
+	  packages/acs-templating/resources/lists/list.adp,
+	  packages/acs-templating/resources/lists/table.adp,
+	  packages/acs-templating/tcl/acs-templating-init.tcl,
+	  packages/acs-templating/tcl/date-procs.tcl,
+	  packages/acs-templating/tcl/list-procs-oracle.xql,
+	  packages/acs-templating/tcl/list-procs-postgresql.xql,
+	  packages/acs-templating/tcl/list-procs.tcl,
+	  packages/acs-templating/tcl/paginator-procs.tcl,
+	  packages/acs-templating/tcl/parse-procs.tcl,
+	  packages/acs-templating/tcl/spellcheck-procs.tcl,
+	  packages/acs-templating/tcl/test/parse-test-procs.tcl: commit to
+	  HEAD of merge of changes on oacs-5-1 branch between tags
+	  jcd-merge-5-1-20040724 and jcd-merge-5-1-20050111
+
+2005-01-12 14:11  jader
+
+	* packages/acs-core-docs/www/xml/install-guide/: aolserver4.xml,
+	  other-software.xml: Update docs to work with Aolserver 4.09's new
+	  convention for compiling modules.
+
+2005-01-11 10:51  daveb
+
+	*
+	  packages/acs-content-repository/sql/postgresql/content-revision.sql:
+	  Properly create content_revision__del. Fixes bug#2251
+
+2005-01-06 10:48  daveb
+
+	* packages/acs-content-repository/: acs-content-repository.info,
+	  sql/postgresql/content-template.sql,
+	  sql/postgresql/upgrade/upgrade-5.2.0d10-5.2.0d11.sql: Fix define
+	  function args for content_template__new
+
+2005-01-06 08:53  daveb
+
+	* packages/acs-content-repository/tcl/content-item-procs.tcl: Fix
+	  delete procs to call pl/sql as &quot;del&quot; to work in Oracle and PG
+
+2005-01-06 08:52  daveb
+
+	* packages/acs-content-repository/: acs-content-repository.info,
+	  sql/postgresql/content-item.sql,
+	  sql/postgresql/content-revision.sql,
+	  sql/postgresql/content-template.sql,
+	  sql/postgresql/upgrade/upgrade-5.2.0d9-5.2.0d10.sql,
+	  tcl/content-template-procs.tcl: Fix __delete functions to have
+	  __del variant.
+
+2005-01-06 07:01  cesarh
+
+	* packages/acs-content-repository/tcl/content-template-procs.tcl:
+	  Adding the param {-package_id &quot;&quot;} in the function
+	  content::template::new
+
+2005-01-06 06:58  cesarh
+
+	*
+	  packages/acs-content-repository/sql/postgresql/content-template.sql:
+	  Adding the define
+	  &quot;define_function_args('content_template__new','name,parent_id,template_id,creation_date,creation_user,creation_ip,text,is_live')&quot;
+	  in the function content_template__new
+
+2005-01-05 10:10  daveb
+
+	* packages/acs-templating/tcl/parse-procs.tcl: Fix bug in
+	  array_variable_regexp_noquote that cannot recognize arrays with .
+	  in the key name such as when a formerror occurs in an element
+	  with a . in the name.
+
+2005-01-05 07:39  cesarh
+
+	* packages/acs-content-repository/sql/postgresql/content-item.sql:
+	  Fixing the params in the function
+	  content_item__set_live_revision() changing the param item_id by
+	  revision_id
+
+2004-12-30 07:31  daveb
+
+	* packages/tsearch2-driver/tcl/tsearch2-driver-procs.tcl: Fix count
+	  query to correctly count based on permissions.
+
+2004-12-30 06:26  daveb
+
+	* packages/tsearch2-driver/tcl/tsearch2-driver-procs.tcl: Fix type
+	  in permissions checking query.
+
+2004-12-30 06:10  daveb
+
+	* packages/tsearch2-driver/tcl/tsearch2-driver-procs.tcl: Add
+	  permission checking and merge default parameter for headline
+	  fucntion from oacs-5-1 branch.
+
+2004-12-29 10:39  maltes
+
+	* packages/tsearch2-driver/www/doc/index.html: Added information on
+	  how to index old content.
+
+2004-12-29 07:34  daveb
+
+	* packages/acs-content-repository/tcl/content-template-procs.tcl:
+	  Only pass in creation_date if it is not empty.
+
+2004-12-29 07:29  daveb
+
+	* packages/acs-content-repository/: acs-content-repository.info,
+	  sql/postgresql/upgrade/upgrade-5.2.0d8-5.2.0d9.sql: Fix default
+	  for creation date in cotnent_template__new
+
+2004-12-23 11:30  andrewg
+
+	* www/: robots.txt: please ignore
+
+2004-12-18 21:26  alfredw
+
+	*
+	  packages/acs-content-repository/tcl/acs-content-repository-init.tcl:
+
+	  Added braces for expr for performance / stylistic recommendation.
+
+2004-12-14 07:51  eduardop
+
+	* packages/acs-content-repository/tcl/content-type-procs.tcl: the
+	  former commit left the code broken
+
+2004-12-10 19:34  joel
+
+	* packages/acs-templating/www/resources/print.css: rudimentary
+	  print-only css file
+
+2004-12-10 08:11  daveb
+
+	* packages/tsearch2-driver/: tsearch2-driver.info,
+	  tcl/tsearch2-driver-install-procs.tcl: Add automated install
+	  process. Bump up version number.
+
+2004-12-07 09:43  alfredw
+
+	* packages/acs-content-repository/tcl/content-type-procs.tcl:
+	  Changed content::type::create_attribute and drop_attribute to the
+	  content::type::attribute::new and ::delete style.
+
+2004-12-07 00:32  alfredw
+
+	* packages/acs-content-repository/tcl/symlink-procs.tcl:
+	  deprecated procs with counterparts in content::symlink
+
+2004-12-07 00:28  alfredw
+
+	* packages/acs-content-repository/tcl/content-symlink-procs.tcl:
+	  renamed ::del to ::delete
+
+2004-12-07 00:26  alfredw
+
+	* packages/acs-content-repository/tcl/item-procs.tcl:
+	  Marked as -deprecated any procs with corresponding items in
+	  content::item
+
+2004-12-07 00:24  alfredw
+
+	* packages/acs-content-repository/tcl/content-item-procs.tcl:
+	  updated a return type
+
+2004-12-07 00:09  alfredw
+
+	* packages/acs-content-repository/tcl/content-revision-procs.tcl:
+	  renamed ::del to ::delete
+
+2004-12-07 00:07  alfredw
+
+	* packages/acs-content-repository/tcl/: content-extlink-procs.tcl,
+	  extlink-procs.tcl:
+	  Copied ::new logic to content::extlink, added deprecated tags.
+
+2004-12-06 23:53  alfredw
+
+	* packages/acs-content-repository/tcl/content-extlink-procs.tcl:
+	  renamed ::del to ::delete
+
+2004-12-06 23:50  alfredw
+
+	* packages/acs-content-repository/tcl/content-type-procs.tcl:
+	  changed create_type to ::new and drop_type to ::delete made
+	  use_context default to &quot;public&quot; rather than be required in all
+	  cases.  added return values, and @see tags
+
+2004-12-06 23:13  alfredw
+
+	* packages/acs-content-repository/tcl/content-template-procs.tcl:
+	  Added return values and a @throws value.
+
+2004-12-06 22:58  alfredw
+
+	* packages/acs-content-repository/tcl/content-keyword-procs.tcl:
+	  Added return values, changed content::keyword::del to ::delete
+
+2004-12-06 22:41  alfredw
+
+	* packages/acs-content-repository/tcl/keyword-procs.tcl:
+	  Added -deprecated flags and @see comments to procs with direct
+	  replacements in content::keyword::
+
+2004-12-06 22:23  alfredw
+
+	* packages/acs-content-repository/tcl/content-folder-procs.tcl:
+	  Added return values and other general cleanup.  .
+
+2004-12-06 04:04  timoh
+
+	* packages/acs-kernel/sql/oracle/acs-objects-create.sql: added
+	  check to prevent insert of object with empty creation_date
+
+2004-12-06 04:02  timoh
+
+	* packages/acs-content-repository/tcl/content-template-procs.tcl:
+	  added parameter package_id to template::new
+
+2004-12-06 04:02  timoh
+
+	* packages/acs-content-repository/tcl/content-type-procs.tcl: added
+	  translation of database specific column-specs to other database
+	  format
+
+2004-12-03 15:19  jader
+
+	* packages/acs-core-docs/www/xml/install-guide/other-software.xml:
+	  Put Aolserver 4 instructions before Aolserver 3 for nsopenssl.
+
+2004-12-01 11:35  jader
+
+	*
+	  packages/acs-core-docs/www/xml/developers-guide/tutorial-advanced.xml:
+	  Another small fix for mismatched tags.
+
+2004-12-01 11:23  jader
+
+	* packages/acs-core-docs/www/xml/:
+	  developers-guide/tutorial-advanced.xml,
+	  developers-guide/tutorial.xml, install-guide/openacs.xml,
+	  install-guide/upgrade.xml: Fix some broken and mismatched tags.
+
+2004-11-30 21:11  alfredw
+
+	* packages/acs-content-repository/tcl/folder-procs.tcl:
+	  Deprecated in favor of new CR TCL API.
+
+2004-11-30 13:12  jader
+
+	* packages/acs-core-docs/www/xml/install-guide/aolserver4.xml:
+	  Updated docs for Aolserver 4.09, including new (undocumented!)
+	  build process for modules.
+
+2004-11-30 03:18  peterm
+
+	* packages/acs-subsite/lib/: user-info.adp, user-info.tcl: adding
+	  the show_groups_p flag that allows you to include the basic user
+	  info edit form without the groups listing
+
+2004-11-30 03:17  peterm
+
+	* packages/acs-subsite/www/user/basic-info-update.adp: adding
+	  missing noquote in include tag
+
+2004-11-17 14:39  jader
+
+	* packages/acs-core-docs/www/xml/developers-guide/form-builder.xml:
+	  Added hint on using the currency widget.
+
+2004-11-15 17:42  jader
+
+	* packages/acs-mail-lite/tcl/acs-mail-lite-procs.tcl: Move a lot of
+	  the ns_log statements to Debug level instead of Notice.
+
+2004-11-15 09:40  jader
+
+	* packages/acs-core-docs/www/xml/:
+	  developers-guide/submissions.xml,
+	  developers-guide/tutorial-advanced.xml,
+	  install-guide/aolserver.xml, install-guide/aolserver4.xml,
+	  install-guide/maintenance.xml, install-guide/openacs.xml,
+	  install-guide/oracle.xml, install-guide/other-software.xml,
+	  install-guide/overview.xml, install-guide/postgres.xml,
+	  install-guide/recovery.xml, install-guide/red-hat.xml,
+	  install-guide/upgrade.xml: Fix bug #2156: change /tmp to /var/tmp
+
+2004-11-11 13:23  jader
+
+	*
+	  packages/acs-core-docs/www/xml/developers-guide/permissions-tediously-explained.xml:
+	  Updated docs to take out customer permissions, but still include
+	  info on privilege hierarchy.
+
+2004-11-04 15:37  jader
+
+	* packages/acs-core-docs/www/xml/install-guide/maintenance.xml:
+	  Update version info, remove extra step that is no longer
+	  necessary, because the analog configuration file is included in
+	  etc/analog.cfg
+
+2004-10-29 14:45  jader
+
+	* packages/acs-core-docs/www/xml/install-guide/: aolserver4.xml,
+	  maintenance.xml, openacs.xml: More Debian stable comments.
+
+2004-10-29 10:46  jader
+
+	* packages/acs-core-docs/www/xml/install-guide/aolserver4.xml: Add
+	  how to install tcl8.4 for debian stable users note.
+
+2004-10-29 10:30  jader
+
+	* packages/acs-core-docs/www/xml/install-guide/postgres.xml: Added
+	  in backports for debian stable notes.
+
+2004-10-28 10:35  enriquec
+
+	* packages/acs-authentication/tcl/authentication-procs.tcl: fixing
+	  typo (ref.bug#2088): datta_error -&gt; data_error
+
+2004-10-27 14:29  jader
+
+	* packages/acs-core-docs/www/xml/install-guide/software.xml: Marks
+	  postgres 7.4 as compatible with OpenACS 5 and 5.1
+
+2004-10-26 07:16  lars
+
+	* packages/acs-tcl/tcl/utilities-procs.tcl: Set the user message
+	  *before* redirecting, so the message will reliably show up on the
+	  next request
+
+2004-10-25 10:31  jader
+
+	* packages/acs-core-docs/www/xml/developers-guide/tutorial.xml:
+	  Added link to package structure from tutorial.
+
+2004-10-23 22:12  michaels
+
+	* packages/acs-templating/resources/forms/: grid.adp, wizard.adp:
+	  noquote fixes
+
+2004-10-20 13:39  timoh
+
+	* packages/acs-templating/resources/forms/standard.adp: substitued
+	  check if widget in radio checkbox with check if widget eq radio
+	  or widget eq checkbox because of bug in in-operator (only partial
+	  matching, no complete matching required)
+
+2004-10-19 17:00  jader
+
+	* packages/acs-core-docs/www/xml/install-guide/: aolserver4.xml,
+	  postgres.xml: Added comments about using backports for Debian
+	  stable.
+
+2004-10-16 09:50  tils
+
+	*
+	  packages/notifications/catalog/notifications.de_DE.ISO-8859-1.xml:
+	  Removing 'dotLRN' from the german translation that sneaked in
+	  here for some reason.
+
+2004-10-01 09:05  jader
+
+	* etc/config.tcl: Added in some commented out parameters that can
+	  be enabled on demanding sites to increase performance. From
+	  http://openacs.org/forums/message-view?message_id=202297
+
+2004-09-27 13:27  jader
+
+	* packages/acs-core-docs/www/xml/developers-guide/db-api.xml: Added
+	  section on iterating through db_multirows, courtesy of Russell
+	  Muetzelfeldt.
+
+2004-09-24 14:52  jader
+
+	*
+	  packages/acs-core-docs/www/xml/developers-guide/tutorial-advanced.xml:
+	  Add documentation on how to release a package.
+
+2004-09-23 20:04  jader
+
+	* packages/acs-core-docs/www/xml/install-guide/recovery.xml: Remove
+	  extra * from crontab in backup section.
+
+2004-09-23 11:48  jader
+
+	* packages/acs-core-docs/www/xml/install-guide/upgrade.xml: Fix
+	  path for upgrading or adding a single package.
+
+2004-09-23 11:20  jader
+
+	* packages/acs-core-docs/www/xml/install-guide/upgrade.xml: Fix a
+	  fairly serious bug in the upgrade docs which would result in
+	  importing the entire openacs CVS repository into your local CVS
+	  repository (if you have a local repository which local
+	  customizations).
+
+2004-09-23 10:58  jader
+
+	* packages/acs-core-docs/www/xml/install-guide/configuring.xml: Add
+	  link to updating your local files when installing a package.
+
+2004-09-23 09:49  jader
+
+	* packages/acs-core-docs/www/xml/install-guide/overview.xml: Added
+	  link to binary installers for evaluation purposes.
+
+2004-09-22 10:47  jader
+
+	*
+	  packages/acs-core-docs/www/xml/developers-guide/tutorial-advanced.xml:
+	  Added in a section on writing upgrade scripts.
+
+2004-09-20 12:42  jader
+
+	*
+	  packages/acs-core-docs/www/xml/developers-guide/tutorial-advanced.xml:
+	  Added a section on upgrades
+
+2004-09-17 09:46  jader
+
+	* packages/acs-core-docs/www/xml/install-guide/upgrade.xml: Added a
+	  link to documentation on how to upgrade an Oracle OpenACS 4.6.3
+	  to 5.
+
+2004-09-10 09:40  jader
+
+	* packages/acs-core-docs/www/xml/install-guide/openacs.xml: Added
+	  in more explanation about adding yourself to unix groups.
+
+2004-09-09 15:24  jader
+
+	* packages/acs-core-docs/www/xml/install-guide/aolserver4.xml:
+	  Resolves bug 2095, nsoracle.so vs ora8.so bug.
+
+2004-09-09 10:28  jader
+
+	* packages/acs-core-docs/www/xml/install-guide/: aolserver4.xml,
+	  postgres.xml, software.xml: Recommend Aolserver 4.08, Postgres
+	  7.4.5 instead of 7.4.1, minor changes to compilation of
+	  nspostgres.
+
+2004-08-31 15:36  donb
+
+	* packages/acs-content-repository/: acs-content-repository.info,
+	  sql/postgresql/content-item.sql,
+	  sql/postgresql/upgrade/upgrade-5.2.0d7-5.2.0d8.sql: Upgrade to
+	  track my earlier bug fix
+
+2004-08-29 09:50  tils
+
+	* bin/pg_7.2to7.3_upgrade_helper.pl: Sanity checks and usage
+	  output. Streams replacement data through now and doesn't require
+	  as much RAM as the size of the dump file. Improved regexps so
+	  that more (hopefully all) identifiers are found.
+
+2004-08-27 02:40  gyang
+
+	* packages/acs-content-repository/tcl/filter-procs.tcl: Changed
+	  item::get_live/best_revision in content::init to use
+	  ::item::get_live/best_revision.  The reason is that bcms
+	  introduces ::content::init, which requires a keyword argument
+	  -item_id, and this new proc is then accidentally  called by
+	  content::init because it's in the ::content namespace.
+
+2004-08-18 10:47  jader
+
+	*
+	  packages/acs-core-docs/www/xml/developers-guide/tutorial-advanced.xml:
+	  Added in Nick Carroll's edit-this-page template tutorial.
+
+2004-08-13 16:34  jader
+
+	*
+	  packages/acs-core-docs/www/xml/developers-guide/tutorial-advanced.xml:
+	  Added a section on adding parameters to your package.
+
+2004-08-13 08:58  nimam
+
+	*
+	  packages/acs-core-docs/www/xml/developers-guide/tutorial-advanced.xml:
+	  Update on HTMLArea and form names
+
+2004-08-13 03:22  nimam
+
+	*
+	  packages/acs-core-docs/www/xml/developers-guide/tutorial-advanced.xml:
+	  Added extended categories and WYSIWYG tutorial
+
+2004-08-12 11:51  josee
+
+	*
+	  packages/acs-content-repository/sql/postgresql/content-revision.sql:
+	  fixing bug with the copy_content function, moving the call to
+	  lob_copy before the update
+
+2004-08-10 21:34  joel
+
+	* packages/acs-templating/: resources/lists/table.adp,
+	  www/resources/sort-neither.png: test
+
+2004-08-04 17:09  jader
+
+	* packages/acs-core-docs/www/xml/install-guide/postgres.xml:
+	  Removed bison from the list of required docs, as per
+	  http://openacs.org/forums/message-view?message_id=196848
+
+2004-08-04 09:09  jader
+
+	* packages/acs-core-docs/www/xml/install-guide/software.xml:
+	  Applying patch 583 for bug 2044: Updates individual programs to
+	  correct version requirements. Courtesy of Eduardo Perez.
+
+2004-08-02 11:09  jader
+
+	* packages/acs-core-docs/www/xml/install-guide/aolserver4.xml:
+	  Fixes bug 1721: removed nsrewrite and spurious ln -s
+
+2004-08-02 10:44  jader
+
+	* packages/acs-core-docs/www/xml/install-guide/software.xml:
+	  Applying patch 582 for bug 2043: Aolserver 3.3oacs1 support is
+	  deprecated.
+
+2004-08-02 06:40  daveb
+
+	* packages/acs-content-repository/sql/postgresql/content-item.sql:
+	  Make sure all versions of content_item__new behave in the same
+	  way, creating a new revision if content or title is specified.
+	  Patch#580 from Dave Manginelli fixes bug#2040.
+
+2004-07-28 13:23  jader
+
+	* packages/acs-core-docs/www/xml/install-guide/upgrade.xml: Rewrote
+	  part of the upgrade files section: removing the option to import
+	  from a tarball (because packages are no longer included, so it
+	  doesn't help people upgrade packages, and because the entire
+	  section was getting confusing with too many options). In general,
+	  explained things a bit more.
+
+2004-07-27 03:49  jeffd
+
+	* packages/search/: sql/postgresql/search-create.sql,
+	  tcl/search-procs.tcl: fix a couple typos for syndication
+
+2004-07-26 06:04  jeffd
+
+	* packages/search/: search.info, sql/oracle/search-create.sql,
+	  sql/oracle/syndication-create.sql,
+	  sql/oracle/upgrade/upgrade-5.2.0d2-5.2.0d3.sql,
+	  sql/postgresql/syndication-create.sql,
+	  sql/postgresql/upgrade/upgrade-5.2.0d2-5.2.0d3.sql,
+	  tcl/search-procs.tcl: add a syndication table which holds xml
+	  fragments which can be assembled to create rss feeds
+
+2004-07-26 05:32  jeffd
+
+	* packages/acs-templating/tcl/: parse-procs.tcl, util-procs.tcl:
+	  adds the function template::adp_include which is a public
+	  interface for generating strings from adp includes instead of the
+	  private template::adp_parse -string; also docs for
+	  template::util::multirow_foreach
+
+2004-07-26 05:21  jeffd
+
+	* packages/acs-kernel/: acs-kernel.info,
+	  sql/oracle/acs-objects-create.sql,
+	  sql/oracle/upgrade/upgrade-5.2.0d6-5.2.0d7.sql,
+	  sql/postgresql/acs-objects-create.sql,
+	  sql/postgresql/upgrade/upgrade-5.2.0d6-5.2.0d7.sql: preserve
+	  last_modified when explicitly updated, replaces
+	  acs_objects_last_mod_update_tr, bump version, upgrade scripts
+
+2004-07-24 08:10  jeffd
+
+	* packages/ref-timezones/: ref-timezones.info,
+	  sql/postgresql/ref-timezones-create.sql,
+	  sql/postgresql/upgrade/upgrade-5.2.0d1-5.2.0d2.sql:
+	  timezone__get_abbrev invalid decl for p_time, bump version,
+	  upgrade
+
+2004-07-24 07:52  jeffd
+
+	* packages/acs-content-repository/: acs-content-repository.info,
+	  sql/postgresql/content-type.sql,
+	  sql/postgresql/upgrade/upgrade-5.2.0d6-5.2.0d7.sql: exception
+	  misspelled in cr_dummy_ins_del_tr; bump version, upgrade
+
+2004-07-24 07:44  jeffd
+
+	* packages/acs-kernel/: acs-kernel.info,
+	  sql/postgresql/apm-create.sql, sql/postgresql/lob.sql,
+	  sql/postgresql/postgresql.sql,
+	  sql/postgresql/upgrade/upgrade-5.2.0d5-5.2.0d6.sql: fix some bugs
+	  which break things in pg7.5; mostly syntax errors in existing
+	  procs.
+
+2004-07-24 04:48  daveb
+
+	* etc/config.tcl: Remove customized config.tcl and add just webdav
+	  configuration uri change.
+
+2004-07-24 01:34  jeffd
+
+	* etc/daemontools/run,
+	  packages/acs-authentication/tcl/authentication-procs.tcl,
+	  packages/acs-content-repository/sql/oracle/content-item.sql,
+	  packages/acs-content-repository/sql/oracle/upgrade/upgrade-5.1.2d3-5.1.2d4.sql,
+	  packages/acs-content-repository/sql/postgresql/content-type.sql,
+	  packages/acs-content-repository/sql/postgresql/upgrade/upgrade-5.1.2d1-5.1.2d2.sql,
+	  packages/acs-content-repository/sql/postgresql/upgrade/upgrade-5.1.2d2-5.1.2d3.sql,
+	  packages/acs-lang/tcl/locale-procs.tcl,
+	  packages/acs-subsite/lib/login.adp,
+	  packages/acs-subsite/lib/login.tcl,
+	  packages/acs-subsite/lib/user-new.tcl,
+	  packages/acs-subsite/tcl/subsite-procs.tcl,
+	  packages/acs-subsite/www/resources/core.js,
+	  packages/acs-subsite/www/user/portrait/upload.tcl,
+	  packages/acs-tcl/tcl/admin-procs.tcl,
+	  packages/acs-tcl/tcl/html-email-procs.tcl,
+	  packages/acs-tcl/tcl/security-procs.tcl,
+	  packages/notifications/sql/oracle/notifications-core-create.sql,
+	  packages/notifications/sql/oracle/upgrade/upgrade-5.0.0b4-5.1.0d2.sql,
+	  packages/notifications/sql/oracle/upgrade/upgrade-5.1.0d2-5.1.0d3.sql,
+	  packages/notifications/sql/postgresql/notifications-core-create.sql,
+	  packages/notifications/sql/postgresql/upgrade/upgrade-5.0.0b4-5.1.0d2.sql,
+	  packages/notifications/sql/postgresql/upgrade/upgrade-5.1.0d2-5.1.0d3.sql,
+	  packages/notifications/tcl/sweep-procs.tcl, www/blank-master.tcl:
+	  merge of changes on oacs-5-1 branch between tags
+	  jcd-merge-5-1-20040712 and jcd-merge-5-1-20040724 to HEAD
+
+2004-07-21 14:54  jader
+
+	* packages/acs-core-docs/www/xml/install-guide/configuring.xml:
+	  Added documentation on how to mount a package, how to set
+	  permissions, and how to configure parameters for a package.
+
+2004-07-21 05:15  jeffd
+
+	*
+	  packages/acs-core-docs/www/xml/developers-guide/tutorial-advanced.xml:
+	  typos in tree_sortkey examples, resolves bug 2019
+
+2004-07-20 13:51  jader
+
+	* etc/config.tcl: Added a ns_section where it was missing for
+	  nsopenssl support
+
+2004-07-20 08:19  jvdongen
+
+	* packages/acs-content-repository/: acs-content-repository.info,
+	  sql/postgresql/content-item.sql,
+	  sql/postgresql/upgrade/upgrade-5.2.0d5-5.2.0d6.sql: Fixed CR part
+	  of bug #1953
+
+2004-07-14 17:18  jader
+
+	* packages/acs-core-docs/www/xml/install-guide/configuring.xml:
+	  Added a section on installing packages, and stubs for configuring
+	  and mounting packages.
+
+2004-07-14 15:02  jader
+
+	* packages/acs-core-docs/www/xml/install-guide/upgrade.xml: Fixed
+	  lots of minor errors. Reformatted and rewrote part of the
+	  introduction to the section on upgrading files.
+
+2004-07-14 02:00  jeffd
+
+	* packages/acs-mail-lite/tcl/acs-mail-lite-procs.tcl: turn
+	  extraheaders back into an ns_set for calling ns_sendmail, don't
+	  use ns_sendmail unless acs-rollout-support is redefining
+	  ns_sendmail
+
+2004-07-12 13:32  jader
+
+	* etc/config.tcl: Partial fix for bug 1975: unable to login on
+	  non-standard ssl ports.
+
+2004-07-12 07:49  jeffd
+
+	* ChangeLog, packages/acs-admin/www/developer.adp,
+	  packages/acs-api-browser/acs-api-browser.info,
+	  packages/acs-authentication/acs-authentication.info,
+	  packages/acs-authentication/tcl/apm-callback-procs.tcl,
+	  packages/acs-authentication/tcl/authentication-procs.tcl,
+	  packages/acs-authentication/tcl/local-procs.tcl,
+	  packages/acs-authentication/tcl/password-procs.tcl,
+	  packages/acs-automated-testing/acs-automated-testing.info,
+	  packages/acs-bootstrap-installer/acs-bootstrap-installer.info,
+	  packages/acs-content-repository/acs-content-repository.info,
+	  packages/acs-content-repository/sql/oracle/upgrade/upgrade-5.1.1d2-5.1.1d3.sql,
+	  packages/acs-content-repository/sql/postgresql/upgrade/upgrade-5.1.1d2-5.1.1d3.sql,
+	  packages/acs-content-repository/tcl/filter-procs.tcl,
+	  packages/acs-core-docs/acs-core-docs.info,
+	  packages/acs-core-docs/www/xml/engineering-standards/eng-standards-versioning.xml,
+	  packages/acs-core-docs/www/xml/for-everyone/release-notes.xml,
+	  packages/acs-core-docs/www/xml/install-guide/maintenance.xml,
+	  packages/acs-kernel/acs-kernel.info,
+	  packages/acs-kernel/sql/oracle/groups-body-create.sql,
+	  packages/acs-kernel/sql/oracle/upgrade/upgrade-5.1.2d1-5.1.2d2.sql,
+	  packages/acs-kernel/sql/postgresql/groups-body-create.sql,
+	  packages/acs-kernel/sql/postgresql/upgrade/upgrade-5.1.2d1-5.1.2d2.sql,
+	  packages/acs-lang/acs-lang.info,
+	  packages/acs-messaging/acs-messaging.info,
+	  packages/acs-reference/acs-reference.info,
+	  packages/acs-service-contract/acs-service-contract.info,
+	  packages/acs-subsite/tcl/attribute-procs.tcl,
+	  packages/acs-subsite/www/register/account-closed.tcl,
+	  packages/acs-tcl/tcl/html-email-procs.tcl,
+	  packages/acs-tcl/tcl/request-processor-procs.tcl,
+	  packages/acs-templating/resources/lists/list.adp,
+	  packages/acs-templating/resources/lists/table.adp,
+	  packages/acs-templating/tcl/currency-procs.tcl,
+	  packages/acs-templating/tcl/date-procs.tcl,
+	  packages/notifications/notifications.info,
+	  packages/ref-timezones/ref-timezones.info, www/blank-master.adp,
+	  www/site-master.adp: merge of changes on oacs-5-1 branch between
+	  tags jcd-merge-5-1-20040628 and jcd-merge-5-1-20040712 to HEAD
+
+2004-07-12 04:12  jeffd
+
+	* packages/acs-tcl/tcl/: apm-install-procs-oracle.xql,
+	  apm-install-procs-postgresql.xql, apm-install-procs.tcl,
+	  text-html-procs.tcl, test/acs-tcl-test-procs.tcl: add an
+	  apm_version_sortable public function, add a test which checks the
+	  db upgrade scripts are well ordered.
+
+2004-07-11 12:11  jvdongen
+
+	* packages/acs-content-repository/tcl/filter-procs.tcl: Fixed bug
+	  #1985 with patch #562
+
+2004-07-08 11:22  jader
+
+	* etc/config.tcl: Added comment that you can increase minthreads
+	  and maxthreads and defaulttimeout on higher performance boxes.
+
+2004-07-08 07:19  jeffd
+
+	* packages/acs-tcl/tcl/: apm-install-procs.tcl, apm-procs.tcl: get
+	  the before-upgrade and before-install callbacks directly from the
+	  .info file since they won't be correct in the db; resolves bug
+	  1963
+
+2004-07-06 12:57  jeffd
+
+	* packages/acs-templating/tcl/date-procs.tcl: fixes
+	  template::util::date::unpack so it does not require the variabe
+	  to be named date and just work by coincidence. resolves bug 1824
+
+2004-07-06 12:04  jader
+
+	* packages/acs-core-docs/www/xml/install-guide/maintenance.xml: SSL
+	  docs didn't describe editing the etc/daemontools/run file
+
+2004-07-06 11:08  jeffd
+
+	* packages/notifications/www/doc/index.adp: add the original
+	  openforce notifications docs resolves bug 573, 592
+
+2004-07-05 09:28  jeffd
+
+	* packages/acs-tcl/tcl/test/acs-tcl-test-procs.tcl: add a test to
+	  validate the .info files all parse and have no duplicate params
+	  or mismatched package keys
+
+2004-07-05 07:58  jeffd
+
+	* packages/: acs-bootstrap-installer/installer.tcl,
+	  acs-tcl/tcl/apm-install-procs.tcl, acs-tcl/tcl/install-procs.tcl:
+	  Adds a public interface apm::process_install_xml to use
+	  install.xml files subsequent to the bootstrap, change bootstrap
+	  to use the provided api, adds install::xml namespace + functions
+	  to support the various xml stanzas (such as set-parameter or
+	  set-join-policy) and a clean extension mechanism via functions in
+	  the install::xml::action:: namespace.  Thanks to Lee Denison for
+	  cleaning up and extending the existing install functionality.
+
+2004-07-05 07:24  jeffd
+
 	* packages/acs-core-docs/www/: acs-admin.html, aolserver.html,
-	  aolserver4.html, automated-testing-best-practices.html,
-	  backup-recovery.html, bootstrap-acs.html, complete-install.html,
-	  credits.html, cvs-guidelines.html, db-api-detailed.html,
-	  db-api.html, eng-standards-constraint-naming.html,
-	  eng-standards-filenaming.html, eng-standards-plsql.html,
-	  eng-standards-versioning.html, filename.html, form-builder.html,
-	  index.html, individual-programs.html, install-daemontools.html,
-	  install-next-add-server.html, install-next-nightly-vacuum.html,
-	  install-qmail.html, install-steps.html, mac-installation.html,
-	  maintenance-web.html, object-identity.html, objects.html,
-	  openacs-unpack.html, openacs.html, oracle.html, packages.html,
-	  parties.html, permissions.html, postgres.html,
-	  programming-with-aolserver.html, psgml-for-emacs.html,
-	  psgml-mode.html, release-notes-4-5.html,
-	  release-notes-4-6-2.html, release-notes-4-6-3.html,
-	  release-notes-4-6.html, release-notes.html,
-	  releasing-openacs-core.html, request-processor.html,
-	  requirements-template.html, security-notes.html,
-	  style-guide.html, subsites.html, tcl-doc.html, templates.html,
-	  tutorial-database.html, tutorial-etp-templates.html,
+	  backup-recovery.html, cvs-tips.html, db-api.html,
+	  docbook-primer.html, eng-standards-versioning.html,
+	  ext-auth-requirements.html, form-builder.html, high-avail.html,
+	  how-do-I.html, i18n-convert.html, index.html, install-cvs.html,
+	  install-daemontools.html, install-full-text-search.html,
+	  install-next-add-server.html, install-openacs-keepalive.html,
+	  install-qmail.html, install-redhat.html, install-steps.html,
+	  ix01.html, maint-performance.html, maintenance-deploy.html,
+	  objects.html, openacs.html, packages.html,
+	  permissions-tediously-explained.html, postgres.html,
+	  psgml-for-emacs.html, release-notes.html,
+	  tutorial-css-layout.html, tutorial-cvs.html,
+	  tutorial-database.html, tutorial-debug.html,
+	  tutorial-distribute.html, tutorial-html-email.html,
 	  tutorial-newpackage.html, tutorial-pages.html,
-	  unix-installation.html, upgrade-4.5-to-4.6.html, variables.html,
-	  win2k-installation.html, xml/variables.ent: Updateing
-	  documentation for 5.2.2
+	  upgrade-4.5-to-4.6.html, upgrade-4.6.3-to-5.html,
+	  upgrade-5-0-dot.html, upgrade-openacs-files.html,
+	  upgrade-overview.html, upgrade.html, variables.html: regen html
+	  docs
 
-2006-01-16 19:41  daveb
+2004-07-05 07:20  jeffd
 
-	* ChangeLog: Update ChangeLog for 5.2.2
+	* packages/acs-core-docs/www/xml/install-guide/maintenance.xml: fix
+	  a couple little markup glitches
 
-2006-01-16 18:42  daveb
+2004-07-05 06:25  olah
 
-	* packages/acs-templating/tcl/richtext-procs.tcl: Fix richtext to
-	  show Format widget on no RTE or no javascript.
+	* packages/acs-tcl/tcl/request-processor-procs.tcl: Changed
+	  ad_register_filter so that it registers the filter immediately in
+	  case it is called after server-initialization is completed. This
+	  makes it suitable as a drop-in replacement for
+	  ns_register_filter.
 
-2006-01-16 10:59  daveb
+2004-07-04 04:19  jeffd
 
-	* packages/acs-core-docs/www/: aolserver.html, aolserver4.html,
+	* packages/acs-content-repository/tcl/filter-procs.tcl: missing )
+	  for $content(mime_type breaks generated templates resolves bug
+	  1952
+
+2004-07-03 14:10  daveb
+
+	* packages/tsearch2-driver/tcl/tsearch2-driver-procs.tcl: Add
+	  checking for ! with no other modifer in query expression.
+
+2004-07-03 13:18  daveb
+
+	* packages/tsearch2-driver/tcl/tsearch2-driver-procs.tcl: Add
+	  boolean support to query builder.
+
+2004-07-02 07:10  jeffd
+
+	*
+	  packages/acs-content-repository/sql/postgresql/content-folder.sql:
+	  bad quoting of string literal in plpgsql functions
+
+2004-07-01 13:15  donb
+
+	*
+	  packages/acs-kernel/sql/postgresql/upgrade/upgrade-5.1.1d1-5.1.1d2.sql:
+	  Committing re-added upgrade file
+
+2004-07-01 13:13  jader
+
+	* packages/acs-core-docs/www/xml/install-guide/maintenance.xml:
+	  Added more detail into the Deployment with CVS section. Still
+	  rough.
+
+2004-07-01 10:17  daveb
+
+	* packages/tsearch2-driver/tcl/tsearch2-driver-procs.tcl: Remove
+	  ts2_ from function calls. The wrapper functions don't exist.
+
+2004-07-01 10:15  jeffd
+
+	* packages/acs-content-repository/tcl/: content-folder-procs.tcl,
+	  test/content-item-test-procs.tcl,
+	  test/content-revision-test-procs.tcl: add a test for is_empty,
+	  untabify the test files, fix some var_list problems
+
+2004-07-01 09:45  jeffd
+
+	* packages/acs-content-repository/tcl/: content-folder-procs.tcl,
+	  content-item-procs.tcl: some tweaks for content-item funcs, make
+	  them return package_exec_plsql return val, move had a bug
+
+2004-07-01 09:33  jeffd
+
+	* packages/acs-content-repository/: acs-content-repository.info,
+	  sql/postgresql/content-extlink.sql,
+	  sql/postgresql/content-folder.sql,
+	  sql/postgresql/content-item.sql,
+	  sql/postgresql/content-revision.sql,
+	  sql/postgresql/content-symlink.sql,
+	  sql/postgresql/content-template.sql,
+	  sql/postgresql/content-type.sql,
+	  sql/postgresql/upgrade/upgrade-5.2.0d4-5.2.0d5.sql,
+	  tcl/content-item-procs.tcl: add define_function_args definitions
+	  for most functions, bump to 5.2.0d5, upgrade script
+
+2004-07-01 06:04  jeffd
+
+	* packages/acs-authentication/tcl/authority-procs.tcl: the sequence
+	  for authority_id should be acs_object_id_seq not
+	  auth_authority_id_seq (which does not exist) (from 5.1)
+
+2004-07-01 05:47  jeffd
+
+	* packages/acs-tcl/tcl/test/acs-tcl-test-procs.tcl: check for
+	  unnamed constraints on postgres
+
+2004-07-01 04:29  jeffd
+
+	* packages/acs-kernel/sql/oracle/: apm-create.sql,
+	  authentication-create.sql: name constraints
+
+2004-07-01 04:29  jeffd
+
+	* packages/acs-kernel/sql/postgresql/: apm-create.sql,
+	  authentication-create.sql, lob.sql: name constraints and make
+	  lob_data.lob_id on delete cascade
+
+2004-07-01 04:02  jeffd
+
+	*
+	  packages/acs-content-repository/sql/postgresql/content-create.sql:
+	  name the cr_revisions_lob_fk constraint in cr_revisions
+
+2004-07-01 04:00  jeffd
+
+	* packages/acs-tcl/tcl/request-processor-init.tcl: add a debug to
+	  log registering filters
+
+2004-06-30 13:04  andrewg
+
+	*
+	  packages/acs-kernel/sql/oracle/upgrade/upgrade-5.1.1d1-5.1.1d2.sql:
+	  Update to apm package body in v1.26.2.1 of apm-create.sql,to
+	  include a bugfix/simplication to the cursor in
+	  apm.register_parameter.
+
+2004-06-30 11:20  donb
+
+	* packages/acs-kernel/sql/postgresql/apm-create.sql: Ported
+	  Andrew's Oracle patch to register parameter.
+
+2004-06-30 04:48  jeffd
+
+	* packages/acs-automated-testing/www/admin/index.adp: banding on
+	  table, right align numbers, don't width 100pct the per package
+	  one since it's too wide that way
+
+2004-06-30 00:40  joela
+
+	* packages/acs-core-docs/www/: tutorial-caching.html,
+	  xml/developers-guide/tutorial-advanced.xml: added list wrapper to
+	  caching example
+
+2004-06-29 08:50  joela
+
+	* packages/acs-core-docs/www/: acs-package-dev.html,
+	  aolserver.html, aolserver4.html,
 	  automated-testing-best-practices.html, backup-recovery.html,
-	  bootstrap-acs.html, credits.html, cvs-guidelines.html,
-	  db-api-detailed.html, db-api.html,
+	  bootstrap-acs.html, credits.html, cvs-tips.html,
+	  db-api-detailed.html, db-api.html, docbook-primer.html,
 	  eng-standards-constraint-naming.html,
 	  eng-standards-filenaming.html, eng-standards-plsql.html,
-	  eng-standards-versioning.html, filename.html, form-builder.html,
-	  individual-programs.html, install-next-nightly-vacuum.html,
-	  install-steps.html, mac-installation.html, maintenance-web.html,
+	  eng-standards-versioning.html, ext-auth-requirements.html,
+	  filename.html, form-builder.html, i18n-convert.html, index.html,
+	  install-next-nightly-vacuum.html, install-steps.html,
+	  mac-installation.html, maintenance-web.html,
 	  object-identity.html, objects.html, openacs.html, oracle.html,
-	  packages.html, parties.html, permissions.html, postgres.html,
-	  programming-with-aolserver.html, psgml-mode.html,
+	  packages.html, parties.html,
+	  permissions-tediously-explained.html, permissions.html,
+	  postgres.html, programming-with-aolserver.html, psgml-mode.html,
 	  release-notes-4-5.html, release-notes-4-6-2.html,
 	  release-notes-4-6-3.html, release-notes-4-6.html,
 	  release-notes.html, releasing-openacs-core.html,
 	  request-processor.html, requirements-template.html,
 	  security-notes.html, style-guide.html, subsites.html,
-	  tcl-doc.html, templates.html, tutorial-database.html,
-	  tutorial-etp-templates.html, tutorial-pages.html,
+	  tcl-doc.html, templates.html, tutorial-advanced.html,
+	  tutorial-caching.html, tutorial-css-layout.html,
+	  tutorial-cvs.html, tutorial-database.html,
+	  tutorial-distribute.html, tutorial-future-topics.html,
+	  tutorial-pages.html, tutorial-schedule-procs.html,
 	  unix-installation.html, variables.html, win2k-installation.html,
-	  xml/releasing-openacs.xml: Update documentation
+	  xml/developers-guide/tutorial-advanced.xml: added advanced
+	  tutorial notes on caching and on scheduled procs
 
-2006-01-16 10:47  daveb
+2004-06-29 03:17  jeffd
 
-	* packages/: acs-admin/acs-admin.info,
-	  acs-api-browser/acs-api-browser.info,
-	  acs-authentication/acs-authentication.info,
-	  acs-automated-testing/acs-automated-testing.info,
-	  acs-bootstrap-installer/acs-bootstrap-installer.info,
-	  acs-content-repository/acs-content-repository.info,
-	  acs-core-docs/acs-core-docs.info, acs-kernel/acs-kernel.info,
-	  acs-lang/acs-lang.info, acs-mail/acs-mail.info,
-	  acs-messaging/acs-messaging.info,
-	  acs-reference/acs-reference.info,
-	  acs-service-contract/acs-service-contract.info,
-	  acs-subsite/acs-subsite.info, acs-tcl/acs-tcl.info,
-	  acs-templating/acs-templating.info,
-	  ref-timezones/ref-timezones.info, search/search.info: Update
-	  release date
+	* etc/config.tcl,
+	  packages/acs-authentication/catalog/acs-authentication.ar_LB.utf-8.xml,
+	  packages/acs-authentication/catalog/acs-authentication.da_DK.ISO-8859-1.xml,
+	  packages/acs-authentication/catalog/acs-authentication.es_ES.ISO-8859-1.xml,
+	  packages/acs-authentication/catalog/acs-authentication.es_GT.ISO-8859-1.xml,
+	  packages/acs-authentication/catalog/acs-authentication.fa_IR.utf-8.xml,
+	  packages/acs-authentication/catalog/acs-authentication.nl_NL.ISO-8859-1.xml,
+	  packages/acs-authentication/catalog/acs-authentication.pl_PL.utf-8.xml,
+	  packages/acs-authentication/catalog/acs-authentication.zh_CN.utf-8.xml,
+	  packages/acs-content-repository/acs-content-repository.info,
+	  packages/acs-content-repository/sql/oracle/content-folder.sql,
+	  packages/acs-content-repository/sql/oracle/content-item.sql,
+	  packages/acs-content-repository/sql/oracle/upgrade/upgrade-4.6.2-4.6.3.sql,
+	  packages/acs-content-repository/sql/postgresql/content-folder.sql,
+	  packages/acs-content-repository/sql/postgresql/content-item.sql,
+	  packages/acs-content-repository/tcl/filter-procs.tcl,
+	  packages/acs-content-repository/tcl/revision-procs.tcl,
+	  packages/acs-kernel/acs-kernel.info,
+	  packages/acs-kernel/catalog/acs-kernel.ar_EG.utf-8.xml,
+	  packages/acs-kernel/catalog/acs-kernel.ar_LB.utf-8.xml,
+	  packages/acs-kernel/catalog/acs-kernel.da_DK.ISO-8859-1.xml,
+	  packages/acs-kernel/catalog/acs-kernel.en_US.ISO-8859-1.xml,
+	  packages/acs-kernel/catalog/acs-kernel.es_ES.ISO-8859-1.xml,
+	  packages/acs-kernel/catalog/acs-kernel.es_GT.ISO-8859-1.xml,
+	  packages/acs-kernel/catalog/acs-kernel.nl_NL.ISO-8859-1.xml,
+	  packages/acs-kernel/catalog/acs-kernel.pl_PL.utf-8.xml,
+	  packages/acs-kernel/catalog/acs-kernel.ro_RO.utf-8.xml,
+	  packages/acs-kernel/catalog/acs-kernel.zh_CN.utf-8.xml,
+	  packages/acs-kernel/sql/oracle/apm-create.sql,
+	  packages/acs-kernel/sql/postgresql/upgrade/upgrade-5.0d2-5.0d3.sql,
+	  packages/acs-lang/acs-lang.info,
+	  packages/acs-lang/catalog/acs-lang.ar_EG.utf-8.xml,
+	  packages/acs-lang/catalog/acs-lang.ar_LB.utf-8.xml,
+	  packages/acs-lang/catalog/acs-lang.da_DK.ISO-8859-1.xml,
+	  packages/acs-lang/catalog/acs-lang.de_DE.ISO-8859-1.xml,
+	  packages/acs-lang/catalog/acs-lang.en_US.ISO-8859-1.xml,
+	  packages/acs-lang/catalog/acs-lang.es_ES.ISO-8859-1.xml,
+	  packages/acs-lang/catalog/acs-lang.es_GT.ISO-8859-1.xml,
+	  packages/acs-lang/catalog/acs-lang.fa_IR.utf-8.xml,
+	  packages/acs-lang/catalog/acs-lang.fi_FI.utf-8.xml,
+	  packages/acs-lang/catalog/acs-lang.nl_NL.ISO-8859-1.xml,
+	  packages/acs-lang/catalog/acs-lang.ro_RO.utf-8.xml,
+	  packages/acs-lang/catalog/acs-lang.th_TH.utf-8.xml,
+	  packages/acs-lang/catalog/acs-lang.zh_CN.utf-8.xml,
+	  packages/acs-lang/sql/oracle/ad-locales.sql,
+	  packages/acs-lang/sql/oracle/upgrade/upgrade-5.1.1d1-5.1.1d2.sql,
+	  packages/acs-lang/sql/postgresql/ad-locales.sql,
+	  packages/acs-lang/sql/postgresql/upgrade/upgrade-5.1.1d1-5.1.1d2.sql,
+	  packages/acs-lang/tcl/lang-util-procs-oracle.xql,
+	  packages/acs-lang/tcl/lang-util-procs-postgresql.xql,
+	  packages/acs-lang/tcl/locale-procs.tcl,
+	  packages/acs-lang/www/admin/message-list.adp,
+	  packages/acs-lang/www/admin/message-list.tcl,
+	  packages/acs-lang/www/admin/message-usage-include.tcl,
+	  packages/acs-service-contract/www/index.tcl,
+	  packages/acs-subsite/acs-subsite.info,
+	  packages/acs-subsite/catalog/acs-subsite.ar_EG.utf-8.xml,
+	  packages/acs-subsite/catalog/acs-subsite.ar_LB.utf-8.xml,
+	  packages/acs-subsite/catalog/acs-subsite.da_DK.ISO-8859-1.xml,
+	  packages/acs-subsite/catalog/acs-subsite.es_ES.ISO-8859-1.xml,
+	  packages/acs-subsite/catalog/acs-subsite.es_GT.ISO-8859-1.xml,
+	  packages/acs-subsite/catalog/acs-subsite.nl_NL.ISO-8859-1.xml,
+	  packages/acs-subsite/catalog/acs-subsite.ro_RO.utf-8.xml,
+	  packages/acs-subsite/catalog/acs-subsite.zh_CN.utf-8.xml,
+	  packages/acs-subsite/tcl/subsite-procs.tcl,
+	  packages/acs-subsite/www/admin/parties/new.tcl,
+	  packages/acs-subsite/www/admin/users/new.tcl,
+	  packages/acs-subsite/www/user/portrait/index.adp,
+	  packages/acs-tcl/catalog/acs-tcl.ar_EG.utf-8.xml,
+	  packages/acs-tcl/catalog/acs-tcl.ar_LB.utf-8.xml,
+	  packages/acs-tcl/catalog/acs-tcl.es_GT.ISO-8859-1.xml,
+	  packages/acs-tcl/catalog/acs-tcl.fa_IR.utf-8.xml,
+	  packages/acs-tcl/catalog/acs-tcl.ro_RO.utf-8.xml,
+	  packages/acs-tcl/catalog/acs-tcl.zh_CN.utf-8.xml,
+	  packages/acs-tcl/tcl/acs-permissions-procs.tcl,
+	  packages/acs-tcl/tcl/admin-init.tcl,
+	  packages/acs-tcl/tcl/rollout-email-init.tcl,
+	  packages/acs-tcl/tcl/rollout-email-procs.tcl,
+	  packages/acs-tcl/tcl/security-procs.tcl,
+	  packages/acs-tcl/tcl/text-html-procs.tcl,
+	  packages/acs-templating/catalog/acs-templating.ar_LB.utf-8.xml,
+	  packages/acs-templating/catalog/acs-templating.da_DK.ISO-8859-1.xml,
+	  packages/acs-templating/catalog/acs-templating.es_ES.ISO-8859-1.xml,
+	  packages/acs-templating/catalog/acs-templating.es_GT.ISO-8859-1.xml,
+	  packages/acs-templating/catalog/acs-templating.nl_NL.ISO-8859-1.xml,
+	  packages/acs-templating/catalog/acs-templating.ro_RO.utf-8.xml,
+	  packages/acs-templating/catalog/acs-templating.zh_CN.utf-8.xml,
+	  packages/acs-templating/tcl/date-procs.tcl,
+	  packages/acs-templating/tcl/spellcheck-init.tcl,
+	  packages/notifications/notifications.info,
+	  packages/notifications/catalog/notifications.ar_EG.utf-8.xml,
+	  packages/notifications/catalog/notifications.ar_LB.utf-8.xml,
+	  packages/notifications/catalog/notifications.en_US.ISO-8859-1.xml,
+	  packages/notifications/catalog/notifications.es_GT.ISO-8859-1.xml,
+	  packages/notifications/catalog/notifications.zh_CN.utf-8.xml,
+	  packages/notifications/sql/oracle/notifications-package-create.sql,
+	  packages/notifications/sql/postgresql/notifications-package-create.sql,
+	  packages/notifications/tcl/apm-callback-procs.tcl,
+	  packages/notifications/tcl/delivery-method-procs.tcl,
+	  packages/notifications/tcl/notification-email-procs.tcl,
+	  packages/notifications/tcl/notification-procs-oracle.xql,
+	  packages/notifications/tcl/notification-procs-postgresql.xql,
+	  packages/notifications/tcl/notification-procs.tcl,
+	  packages/notifications/tcl/notification-request-procs-oracle.xql,
+	  packages/notifications/tcl/notification-request-procs-postgresql.xql,
+	  packages/notifications/tcl/notification-request-procs.tcl,
+	  packages/notifications/tcl/sweep-procs.tcl: merge of changes on
+	  oacs-5-1 branch between tags jcd-merge-5-1-20040517 and
+	  jcd-merge-5-1-20040628 to HEAD
 
-2006-01-16 10:45  daveb
+2004-06-28 12:35  leed
 
-	* readme.txt: Update version number
+	* packages/acs-subsite/tcl/: group-procs.tcl, group-procs.xql:
+	  Added get_rel_segment accessor function.
 
-2006-01-16 10:41  daveb
+2004-06-28 08:41  juny
 
-	* ChangeLog: New changelog
+	* packages/acs-content-repository/: acs-content-repository.info,
+	  sql/postgresql/upgrade/upgrade-5.2.0d3-5.2.0d4.sql,
+	  tcl/content-folder-procs.tcl, tcl/content-item-procs.tcl: minor
+	  bug fixes: corrected list that is passed on package_exec_plsql
+	  -var_list, added definition of some plsql procs, added
+	  content::item::copy, bump up for version needed
 
-2006-01-16 10:24  daveb
+2004-06-28 07:30  daveb
 
-	* packages/acs-core-docs/www/files/update-info.sh: Add example
-	  script to update info files for release.
+	* packages/tsearch2-driver/sql/postgresql/:
+	  tsearch2-driver-create.sql, tsearch2-driver-drop.sql: Rename
+	  create and drop scripts so they work.
 
-2006-01-16 00:44  maltes
+2004-06-27 23:34  jeffd
 
-	* packages/acs-tcl/lib/page-error.tcl: Uncommented the whole line
-	  as it caused errors. We should not log the error messages if we
-	  are not sending emails anyway...
+	* packages/acs-subsite/tcl/package-procs-postgresql.xql: revert the
+	  1.12 - 1.13 change, breaks adding group types and rel types (and
+	  other autogenerated plpgsql)
+	  http://openacs.org/forums/message-view?message_id=190202, bug
+	  1893
 
-2006-01-15 16:17  donb
+2004-06-27 17:10  daveb
 
-	* packages/: acs-content-repository/sql/oracle/content-keyword.sql,
-	  acs-content-repository/sql/oracle/packages-create.sql,
-	  acs-content-repository/sql/oracle/upgrade/upgrade-5.2.0a1-5.2.0a2.sql,
-	  acs-content-repository/sql/oracle/upgrade/upgrade-5.2.0d16-5.2.0d17.sql,
-	  acs-content-repository/sql/oracle/upgrade/upgrade-5.2.1d1-5.2.1d2.sql,
-	  acs-kernel/sql/oracle/upgrade/upgrade-5.2.0d1-5.2.0d2.sql,
-	  acs-kernel/sql/oracle/upgrade/upgrade-5.2.1d1-5.2.1d2.sql: Fixed
-	  5.1-&gt;5.2 upgrade, all content repository tests now pass.
+	* packages/acs-content-repository/tcl/content-item-procs.tcl: Fix
+	  content::item::update to correctly extract the attributes from
+	  within the list.
 
-2006-01-12 10:25  daveb
+2004-06-27 12:01  daveb
 
-	* packages/acs-content-repository/sql/oracle/: content-folder.sql,
-	  content-item.sql, upgrade/upgrade-5.2.1d1-5.2.1d2.sql: Remove
-	  code that guesses package_id based on parent_id
+	* packages/acs-content-repository/tcl/content-revision-procs.tcl:
+	  Make item_id required for content::revision::new
 
-2006-01-12 10:23  daveb
+2004-06-27 08:42  joela
 
-	* packages/acs-content-repository/sql/postgresql/:
-	  content-folder.sql, content-item.sql,
-	  upgrade/upgrade-5.2.1d1-5.2.1d2.sql: Remove code that guesses
-	  package_id based on parent_id. In almost all cases this will
-	  return null anyway.
+	* packages/acs-tcl/tcl/utilities-procs.tcl: added days capability
+	  to mode 1 of age_pretty
 
-2006-01-11 19:20  dedsc
+2004-06-26 10:06  jeffd
 
+	* packages/acs-content-repository/tcl/content-permission-procs.tcl:
+	  typo in namespace and in sql package name
+
+2004-06-26 05:58  jeffd
+
+	* packages/acs-core-docs/www/xml/developers-guide/db-api.xml: fix
+	  the bad example of a db_foreach inside a db_transaction with a db
+	  call inside.	Remove some dated ACS 3.x references
+
+2004-06-26 05:44  jeffd
+
+	* packages/acs-admin/www/cache/: show-util-memoize.adp,
+	  show-util-memoize.tcl: overquoted value in util_memoize cache
+	  search
+
+2004-06-24 09:20  olah
+
+	* packages/acs-kernel/sql/postgresql/apm-create.sql: Looks like
+	  someone snuck in a little 'x' too much.
+
+2004-06-24 08:05  jeffd
+
+	* packages/acs-kernel/sql/oracle/: apm-create.sql,
+	  upgrade/upgrade-5.2.0d3-5.2.0d4.sql: make the
+	  apm_package_version_attr version_id on delete cascade, otherwise
+	  deleting packages fails (forgot oracle file)
+
+2004-06-24 08:03  jeffd
+
+	* packages/acs-kernel/sql/:
+	  oracle/upgrade/upgrade-5.2.0d3-5.2.0d4.sql,
+	  postgresql/apm-create.sql,
+	  postgresql/upgrade/upgrade-5.2.0d3-5.2.0d4.sql: make the
+	  apm_package_version_attr version_id on delete cascade, otherwise
+	  deleting packages fails
+
+2004-06-24 03:44  joela
+
+	* packages/acs-core-docs/www/: acs-admin.html,
+	  acs-package-dev.html, aolserver.html, aolserver4.html,
+	  automated-testing-best-practices.html, backup-recovery.html,
+	  bootstrap-acs.html, credits.html, cvs-tips.html,
+	  db-api-detailed.html, db-api.html, docbook-primer.html,
+	  eng-standards-constraint-naming.html,
+	  eng-standards-filenaming.html, eng-standards-plsql.html,
+	  eng-standards-versioning.html, ext-auth-requirements.html,
+	  filename.html, form-builder.html, high-avail.html, how-do-I.html,
+	  i18n-convert.html, index.html, install-cvs.html,
+	  install-daemontools.html, install-full-text-search.html,
+	  install-next-nightly-vacuum.html, install-openacs-keepalive.html,
+	  install-qmail.html, install-redhat.html, install-steps.html,
+	  ix01.html, mac-installation.html, maint-performance.html,
+	  maintenance-deploy.html, maintenance-web.html,
+	  object-identity.html, objects.html, openacs.html, oracle.html,
+	  packages.html, parties.html,
+	  permissions-tediously-explained.html, permissions.html,
+	  postgres.html, programming-with-aolserver.html,
+	  psgml-for-emacs.html, psgml-mode.html, release-notes-4-5.html,
+	  release-notes-4-6-2.html, release-notes-4-6-3.html,
+	  release-notes-4-6.html, release-notes.html,
+	  releasing-openacs-core.html, request-processor.html,
+	  requirements-template.html, security-notes.html,
+	  style-guide.html, subsites.html, tcl-doc.html, templates.html,
+	  tutorial-advanced.html, tutorial-css-layout.html,
+	  tutorial-cvs.html, tutorial-database.html, tutorial-debug.html,
+	  tutorial-distribute.html, tutorial-newpackage.html,
+	  tutorial-pages.html, tutorial-vuh.html, unix-installation.html,
+	  upgrade-4.5-to-4.6.html, upgrade-4.6.3-to-5.html,
+	  upgrade-5-0-dot.html, upgrade-openacs-files.html,
+	  upgrade-overview.html, upgrade.html, variables.html,
+	  win2k-installation.html, files/dotlrn-style-1.html,
+	  files/dotlrn-style-2.html, images/dotlrn-style-1.png,
+	  images/dotlrn-style-2.png, images/dotlrn-style-3.png,
+	  xml/developers-guide/tutorial-advanced.xml: added tutorial
+	  section on css layout
+
+2004-06-24 02:42  jeffd
+
+	* packages/acs-core-docs/www/: acs-admin.html,
+	  acs-package-dev.html, aolserver.html, backup-recovery.html,
+	  cvs-tips.html, docbook-primer.html,
+	  eng-standards-versioning.html, ext-auth-requirements.html,
+	  form-builder.html, high-avail.html, how-do-I.html,
+	  i18n-convert.html, index.html, install-cvs.html,
+	  install-daemontools.html, install-full-text-search.html,
+	  install-openacs-keepalive.html, install-qmail.html,
+	  install-redhat.html, install-steps.html, ix01.html,
+	  maint-performance.html, maintenance-deploy.html, objects.html,
+	  openacs.html, packages.html,
+	  permissions-tediously-explained.html, postgres.html,
+	  profile-code.html, psgml-for-emacs.html, release-notes.html,
+	  tutorial-advanced.html, tutorial-cvs.html,
+	  tutorial-database.html, tutorial-debug.html,
+	  tutorial-distribute.html, tutorial-future-topics.html,
+	  tutorial-hierarchical.html, tutorial-html-email.html,
+	  tutorial-newpackage.html, tutorial-pages.html, tutorial-vuh.html,
+	  upgrade-4.5-to-4.6.html, upgrade-4.6.3-to-5.html,
+	  upgrade-5-0-dot.html, upgrade-openacs-files.html,
+	  upgrade-overview.html, upgrade.html, variables.html: regen html
+	  docs, add the html email tutorial file.
+
+2004-06-24 02:01  jeffd
+
+	* packages/acs-core-docs/www/xml/developers-guide/: packages.xml,
+	  tutorial-advanced.xml: fix a missing /sect1 in tutorial-advanced
+	  and shuffle around and bring up to date the package file details.
+	  Mention callbacks in the package creation list
+
+2004-06-23 22:35  jader
+
+	* packages/acs-core-docs/www/xml/install-guide/upgrade.xml:
+	  Modified a few locations that had older 4.6 references.
+
+2004-06-23 22:01  jader
+
+	* packages/acs-core-docs/www/xml/install-guide/upgrade.xml: Fixed
+	  formatting for one of the examples.
+
+2004-06-23 21:58  jader
+
+	* packages/acs-core-docs/www/xml/install-guide/upgrade.xml:
+	  Clarified that upgrades can be done to 5.1 as well as 5.0
+
+2004-06-23 17:52  jader
+
+	*
+	  packages/acs-core-docs/www/xml/developers-guide/tutorial-advanced.xml:
+	  Took out an extra line that wasn't used by the acs_mail_lite
+	  section.
+
+2004-06-23 16:35  jader
+
+	*
+	  packages/acs-core-docs/www/xml/developers-guide/tutorial-advanced.xml:
+	  Added a section on sending HTML email from acs-mail-lite.
+
+2004-06-23 11:27  olah
+
+	* www/site-master.tcl: Using site_node::get_package_url to check
+	  for mounted curriculum instances, now that it is implemented with
+	  an nsv of url keyed by package key. Lars added this back in mars
+	  and I hadn't noticed ...
+
+2004-06-23 10:25  jader
+
+	* packages/acs-tcl/tcl/text-html-procs.tcl: Added more description
+	  on how to correctly use the ad_html_text_convert proc.  Added an
+	  example.
+
+2004-06-23 06:37  jeffd
+
+	* packages/acs-tcl/tcl/site-nodes-procs.tcl:
+	  site_node::get_children -all should be about 2-3x as fast which
+	  should be a win on installations with lots of site nodes (i.e.
+	  dotlrn)
+
+2004-06-22 05:53  joela
+
+	* packages/acs-core-docs/www/: acs-admin.html,
+	  acs-package-dev.html, acs-plat-dev.html, analog-install.html,
+	  analog-setup.html, aolserver.html, aolserver4.html,
+	  apm-design.html, apm-requirements.html, automated-backup.html,
+	  automated-testing-best-practices.html, backup-recovery.html,
+	  backups-with-cvs.html, bootstrap-acs.html, complete-install.html,
+	  configuring-new-site.html, credits.html, cvs-tips.html,
+	  database-management.html, db-api-detailed.html, db-api.html,
+	  dev-guide.html, doc-standards.html, docbook-primer.html,
+	  eng-standards-constraint-naming.html,
+	  eng-standards-filenaming.html, eng-standards-plsql.html,
+	  eng-standards-versioning.html, eng-standards.html,
+	  ext-auth-requirements.html, filename.html, for-everyone.html,
+	  form-builder.html, general-documents.html, groups-design.html,
+	  groups-requirements.html, high-avail.html, how-do-I.html,
+	  i18n-convert.html, i18n-design.html, i18n-introduction.html,
+	  i18n-overview.html, i18n-requirements.html,
+	  i18n-translators.html, i18n.html, index.html,
+	  individual-programs.html, install-cvs.html,
+	  install-daemontools.html, install-full-text-search.html,
+	  install-more-software.html, install-next-add-server.html,
+	  install-next-backups.html, install-next-nightly-vacuum.html,
+	  install-nsopenssl.html, install-nspam.html,
+	  install-openacs-delete-tablespace.html,
+	  install-openacs-inittab.html, install-openacs-keepalive.html,
+	  install-origins.html, install-overview.html, install-php.html,
+	  install-qmail.html, install-redhat.html, install-resources.html,
+	  install-squirrelmail.html, install-ssl.html, install-steps.html,
+	  install-tclwebtest.html, ix01.html, kernel-doc.html,
+	  kernel-overview.html, mac-installation.html,
+	  maint-performance.html, maintenance-deploy.html,
+	  maintenance-web.html, nxml-mode.html, object-identity.html,
+	  object-system-design.html, object-system-requirements.html,
+	  objects.html, openacs-overview.html, openacs-unpack.html,
+	  openacs.html, oracle.html, os-install.html, os-security.html,
+	  packages.html, parties.html, permissions-design.html,
+	  permissions-requirements.html,
+	  permissions-tediously-explained.html, permissions.html,
+	  postgres.html, profile-code.html,
+	  programming-with-aolserver.html, psgml-for-emacs.html,
+	  psgml-mode.html, release-notes-4-5.html,
+	  release-notes-4-6-2.html, release-notes-4-6-3.html,
+	  release-notes-4-6.html, release-notes.html,
+	  releasing-openacs-core.html, releasing-openacs.html,
+	  releasing-package.html, remote-postgres.html,
+	  request-processor.html, requirements-template.html,
+	  rp-design.html, rp-requirements.html, security-design.html,
+	  security-notes.html, security-requirements.html,
+	  snapshot-backup.html, style-guide.html, subsites-design.html,
+	  subsites-requirements.html, subsites.html, tcl-doc.html,
+	  templates.html, tutorial-admin-pages.html,
+	  tutorial-advanced.html, tutorial-categories.html,
+	  tutorial-comments.html, tutorial-cvs.html,
+	  tutorial-database.html, tutorial-debug.html,
+	  tutorial-distribute.html, tutorial-future-topics.html,
+	  tutorial-newpackage.html, tutorial-notifications.html,
+	  tutorial-pages.html, tutorial-specs.html, tutorial-vuh.html,
+	  tutorial.html, unix-installation.html, update-repository.html,
+	  update-translations.html, upgrade-4.5-to-4.6.html,
+	  upgrade-4.6.3-to-5.html, upgrade-5-0-dot.html,
+	  upgrade-openacs-files.html, upgrade-overview.html,
+	  upgrade-supporting.html, upgrade.html, uptime.html,
+	  variables.html, win2k-installation.html,
+	  xml/engineering-standards/eng-standards-versioning.xml: added
+	  notes on upgrade numbering
+
+2004-06-18 11:21  jeffd
+
+	* packages/acs-kernel/sql/postgresql/: acs-create-2.sql,
+	  acs-create.sql, acs-drop.sql, acs-install.sql,
+	  acs-kernel-create.sql, acs-kernel-drop.sql, acs-logs-create.sql,
+	  acs-metadata-create.sql, acs-metadata-drop.sql,
+	  acs-objects-create.sql, acs-objects-drop.sql,
+	  acs-permissions-create.sql, acs-permissions-drop.sql,
+	  acs-relationships-create.sql, acs-relationships-drop.sql,
+	  apm-create.sql, community-core-create.sql,
+	  community-core-drop.sql, groups-create.sql, groups-drop.sql,
+	  journal-create.sql, journal-drop.sql, rel-constraints-create.sql,
+	  rel-constraints-drop.sql, rel-segments-body-create.sql,
+	  rel-segments-create.sql, rel-segments-drop.sql,
+	  security-create.sql, security-drop.sql, site-nodes-create.sql,
+	  site-nodes-drop.sql, utilities-create.sql, utilities-drop.sql:
+	  fix the static cvs-id tags
+
+2004-06-18 08:48  gyang
+
+	* packages/acs-core-docs/www/xml/install-guide/aolserver4.xml:
+	  Changed AOLserver 4 compilation instructions to specify that
+	  users should check out Tcl 8.4.6 rather than 8.4.5.
+
+2004-06-18 08:43  gyang
+
+	* packages/acs-core-docs/www/xml/install-guide/aolserver4.xml:
+	  Changed AOLserver 4 compilation instructions to specify that
+	  users should check out nsoracle 2.7 (tag v2_7) rather than the
+	  HEAD version of nsoracle.
+
+2004-06-18 05:26  jeffd
+
+	* packages/acs-core-docs/www/xml/kernel/groups-requirements.xml:
+	  reformat the whole section. no change in content
+
+2004-06-18 04:59  jeffd
+
+	* packages/acs-core-docs/www/xml/: Makefile, fo.xsl,
+	  developers-guide/i18n.xml: cols wrong in i18n overview table, put
+	  ulinks in footnotes for pdf
+
+2004-06-18 02:52  jeffd
+
+	* packages/acs-core-docs/www/xml/install-guide/software.xml:
+	  commited wrong fix.  This one fixes  Version Compatibility Matrix
+
+2004-06-18 02:46  jeffd
+
+	* packages/acs-core-docs/www/xml/install-guide/software.xml: fix
+	  the Version Compatibility Matrix table
+
+2004-06-17 04:22  maltes
+
+	*
+	  packages/acs-kernel/sql/postgresql/upgrade/upgrade-5.2.0d1-5.2.0d2.sql:
+	  TYPO: should read parameter, not paramer
+
+2004-06-16 07:17  andrewg
+
+	*
+	  packages/acs-mail-lite/sql/oracle/upgrade/acs-mail-lite-upgrade-0.1d-0.2a.sql:
+	  fixing alter table syntax for Oracle; this fix committed
+	  initially on the 5.1 branch
+
+2004-06-15 18:34  donb
+
+	* packages/acs-tcl/tcl/: apm-procs-oracle.xql, apm-procs.tcl,
+	  apm-procs.xql: Filled the parameter cache with default values
+	  tagged with package_id 0 rather than NULL to fit with the
+	  apm_package_id_from_key's default value for package_id when
+	  there's no instance available (can't really use null because
+	  &quot;package_id = NULL&quot; is always false in SQL).
+
+2004-06-15 09:25  andrewg
+
+	*
+	  packages/acs-kernel/sql/oracle/upgrade/upgrade-5.0.0b4-5.0.0b5.sql:
+	  Merging fix from oacs-5-1 branch onto HEAD
+
+2004-06-15 09:22  andrewg
+
+	* packages/acs-tcl/tcl/site-nodes-procs.tcl: Fixed a scalability
+	  problem in site_node::update_cache; fix merged in from 5.1 branch
+
+2004-06-14 05:27  jeffd
+
+	* packages/acs-subsite/www/o.vuh: object redirect mechanism
+
+2004-06-13 11:44  daveb
+
+	* packages/acs-content-repository/tcl/: content-extlink-procs.tcl,
+	  content-item-procs.tcl, content-keyword-procs.tcl,
+	  content-permission-procs.tcl, content-revision-procs.tcl,
+	  content-symlink-procs.tcl, content-template-procs.tcl,
+	  content-type-procs.tcl: Fix var_list to be a list of lists.
+
+2004-06-12 14:31  rocaelh
+
+	* packages/acs-tcl/tcl/00-database-procs.tcl: better comments for
+	  the -dbn stuff
+
+2004-06-12 07:27  maltes
+
+	* etc/keepalive/keepalive-cron.sh: Added keepalive-cron.sh to be
+	  used in a cron environment, where root does not get an email
+	  every two minutes
+
+2004-06-12 07:26  maltes
+
+	* etc/keepalive/keepalive.sh: Changed path information, so
+	  keepalive.sh can work outside a shell
+
+2004-06-12 04:04  maltes
+
+	* packages/acs-core-docs/www/xml/install-guide/aolserver4.xml:
+	  Changed to use latest AOLserver (40r5). Fixed small
+	  inconsistency.
+
+2004-06-11 15:44  jader
+
+	* packages/acs-mail-lite/acs-mail-lite.info: Bumping version number
+	  so new package is made available with rollout fixes, including
+	  better support for multiple addresses in the To: field.
+
+2004-06-11 15:33  jader
+
+	* packages/acs-mail-lite/tcl/acs-mail-lite-procs.tcl: Handles
+	  multiple email addresses in the to headers better.
+
+2004-06-11 14:47  jader
+
+	* packages/acs-mail-lite/tcl/acs-mail-lite-procs.tcl: Added a
+	  comment that I'm unsure if the send proc handles multiple to
+	  addresses correctly.
+
+2004-06-11 03:17  jeffd
+
+	* packages/acs-core-docs/www/: acs-admin.html,
+	  acs-package-dev.html, acs-plat-dev.html, analog-install.html,
+	  analog-setup.html, aolserver.html, aolserver4.html,
+	  apm-design.html, apm-requirements.html, automated-backup.html,
+	  automated-testing-best-practices.html, backup-recovery.html,
+	  backups-with-cvs.html, bootstrap-acs.html, complete-install.html,
+	  configuring-new-site.html, credits.html, cvs-tips.html,
+	  database-management.html, db-api-detailed.html, db-api.html,
+	  dev-guide.html, doc-standards.html, docbook-primer.html,
+	  eng-standards-constraint-naming.html,
+	  eng-standards-filenaming.html, eng-standards-plsql.html,
+	  eng-standards-versioning.html, eng-standards.html,
+	  ext-auth-requirements.html, filename.html, for-everyone.html,
+	  form-builder.html, general-documents.html, groups-design.html,
+	  groups-requirements.html, high-avail.html, how-do-I.html,
+	  i18n-convert.html, i18n-design.html, i18n-introduction.html,
+	  i18n-overview.html, i18n-requirements.html,
+	  i18n-translators.html, i18n.html, index.html,
+	  individual-programs.html, install-cvs.html,
+	  install-daemontools.html, install-full-text-search.html,
+	  install-more-software.html, install-next-add-server.html,
+	  install-next-backups.html, install-next-nightly-vacuum.html,
+	  install-nsopenssl.html, install-nspam.html,
+	  install-openacs-delete-tablespace.html,
+	  install-openacs-inittab.html, install-openacs-keepalive.html,
+	  install-origins.html, install-overview.html, install-php.html,
+	  install-qmail.html, install-redhat.html, install-resources.html,
+	  install-squirrelmail.html, install-ssl.html, install-steps.html,
+	  install-tclwebtest.html, ix01.html, kernel-doc.html,
+	  kernel-overview.html, mac-installation.html,
+	  maint-performance.html, maintenance-deploy.html,
+	  maintenance-web.html, nxml-mode.html, object-identity.html,
+	  object-system-design.html, object-system-requirements.html,
+	  objects.html, openacs-overview.html, openacs-unpack.html,
+	  openacs.html, oracle.html, os-install.html, os-security.html,
+	  packages.html, parties.html, permissions-design.html,
+	  permissions-requirements.html,
+	  permissions-tediously-explained.html, permissions.html,
+	  postgres.html, profile-code.html,
+	  programming-with-aolserver.html, psgml-for-emacs.html,
+	  psgml-mode.html, release-notes-4-5.html,
+	  release-notes-4-6-2.html, release-notes-4-6-3.html,
+	  release-notes-4-6.html, release-notes.html,
+	  releasing-openacs-core.html, releasing-openacs.html,
+	  releasing-package.html, remote-postgres.html,
+	  request-processor.html, requirements-template.html,
+	  rp-design.html, rp-requirements.html, security-design.html,
+	  security-notes.html, security-requirements.html,
+	  snapshot-backup.html, style-guide.html, subsites-design.html,
+	  subsites-requirements.html, subsites.html, tcl-doc.html,
+	  templates.html, tutorial-admin-pages.html,
+	  tutorial-advanced.html, tutorial-categories.html,
+	  tutorial-comments.html, tutorial-cvs.html,
+	  tutorial-database.html, tutorial-debug.html,
+	  tutorial-distribute.html, tutorial-future-topics.html,
+	  tutorial-hierarchical.html, tutorial-newpackage.html,
+	  tutorial-notifications.html, tutorial-pages.html,
+	  tutorial-specs.html, tutorial-vuh.html, tutorial.html,
+	  unix-installation.html, update-repository.html,
+	  update-translations.html, upgrade-4.5-to-4.6.html,
+	  upgrade-4.6.3-to-5.html, upgrade-5-0-dot.html,
+	  upgrade-openacs-files.html, upgrade-overview.html,
+	  upgrade-supporting.html, upgrade.html, uptime.html,
+	  variables.html, win2k-installation.html: regenerated docs,
+	  removed a couple of deprecated files, add a new one
+
+2004-06-11 03:13  jeffd
+
+	* packages/acs-core-docs/www/xml/: developers-guide/i18n.xml,
+	  developers-guide/submissions.xml,
+	  developers-guide/tutorial-advanced.xml,
+	  developers-guide/tutorial-db.xml,
+	  developers-guide/tutorial-debug.xml,
+	  developers-guide/tutorial-pages.xml, for-everyone/acs-faq.xml,
+	  install-guide/aolserver4.xml, install-guide/configuring.xml,
+	  install-guide/maintenance.xml, install-guide/oracle.xml,
+	  install-guide/other-software.xml, install-guide/recovery.xml,
+	  install-guide/upgrade.xml: clean up xml so the docs (more or
+	  less) validate
+
+2004-06-10 15:56  jader
+
+	* packages/acs-mail-lite/: acs-mail-lite.info,
+	  tcl/acs-mail-lite-procs.tcl: Fixes rollout support, bug #1895.
+
+2004-06-10 10:06  rocaelh
+
+	* packages/: acs-authentication/acs-authentication.info,
+	  acs-authentication/tcl/authentication-procs.tcl,
+	  acs-subsite/lib/login.adp, acs-subsite/lib/login.tcl,
+	  acs-subsite/lib/user-new.tcl: adding allow/disallow
+	  self-register, by Hector Amado hr_amado@galileo.edu
+
+2004-06-09 18:14  daveb
+
+	* packages/acs-content-repository/tcl/test/:
+	  content-item-test-procs.tcl, content-revision-test-procs.tcl:
+	  Initital tests for CR Tcl API.
+
+2004-06-09 18:13  daveb
+
+	* packages/acs-content-repository/tcl/: content-extlink-procs.tcl,
+	  content-folder-procs.tcl, content-item-procs.tcl,
+	  content-keyword-procs.tcl, content-permission-procs.tcl,
+	  content-revision-procs.tcl, content-symlink-procs.tcl,
+	  content-template-procs.tcl, content-type-procs.tcl: Adding
+	  preliminary Tcl API. See TIP#67. Thanks to Jeff Davis for the
+	  script that converted the pl/sql procedures to tcl procedures.
+
+2004-06-09 13:58  jader
+
+	* etc/config.tcl: Added in nsopenssl support for Aolserver 4.
+
+2004-06-09 09:59  jader
+
+	* packages/acs-content-repository/www/doc/: index.html,
+	  tutorial.html: Added in tutorial from rubick.com to content
+	  repository documents, so other developers can change it or
+	  improve it.
+
+2004-06-08 10:06  joela
+
+	* packages/acs-lang/lib/: change-locale-bar.adp,
+	  change-locale-bar.tcl: improved the logic in the change locales
+	  includelet
+
+2004-06-07 19:01  jader
+
+	* packages/acs-mail-lite/acs-mail-lite.info: Bumped the version
+	  number so existing installs can benefit from a fix Jeff made
+	  weeks ago that breaks acs-mail-lite from working.
+
+2004-06-07 17:51  jader
+
+	* packages/acs-mail-lite/tcl/acs-mail-lite-procs.tcl: Applied patch
+	  #529 (hope that's alright): Patch to correct problems regarding
+	  sendmail procedure in acs-mail-lite-procs.tcl. This should fix
+	  bug #1888.
+
+2004-06-06 13:31  daveb
+
+	*
+	  packages/tsearch2-driver/sql/postgresql/tsearch2-driver-package-create.sql:
+	  Remove set_curcfg from create.sql. Created wrapper functions for
+	  to_tsvector and to_tsquery to call set_curcfg each time.
+
+2004-06-06 13:29  daveb
+
+	* packages/tsearch2-driver/tcl/tsearch2-driver-procs.tcl: Fix
+	  search proc to return correct count and properly use limit and
+	  offset so pagination of search results works.
+
+2004-06-06 13:03  daveb
+
+	* packages/tsearch2-driver/tcl/tsearch2-driver-procs.tcl: Use
+	  'default' tsearch2 configuration. It should be a parameter
+	  eventually.  Pass configuration name into tsvector and tsquery
+
+2004-06-06 10:29  daveb
+
+	* packages/tsearch2-driver/: tcl/tsearch2-driver-install-procs.tcl,
+	  tcl/tsearch2-driver-procs.tcl, www/doc/index.html: Workaround
+	  namespace eval problem in AOLserver 3.  Add search
+	  FtsEngineDriver paramter to documentation.
+
+2004-06-06 02:00  jeffd
+
+	* packages/acs-tcl/tcl/sql-statement-procs.tcl: add an ad_library
+	  call, mark functions public
+
+2004-06-06 01:59  jeffd
+
+	* packages/acs-tcl/tcl/ad-functional-procs.tcl: quote expr things,
+	  make some things public that were not categorized
+
+2004-06-05 19:28  donb
+
+	* packages/acs-subsite/tcl/: package-procs-oracle.xql,
+	  package-procs-postgresql.xql, package-procs.tcl: Made
+	  package_exec_plsql work for Oracle procedures ...
+
+2004-06-05 18:41  daveb
+
+	* packages/tsearch2-driver/www/doc/index.html: Adding very basic
+	  documentation, but this package is still very basic itself.
+
+2004-06-05 18:33  daveb
+
+	* packages/tsearch2-driver/: tsearch2-driver.info,
+	  tcl/tsearch2-driver-install-procs.tcl,
+	  tcl/tsearch2-driver-procs.tcl: Adding tsearch2 search engine
+	  driver. Needs work, but will actually index content.
+
+2004-06-05 07:08  daveb
+
+	* packages/acs-content-repository/tcl/: filter-procs-oracle.xql,
+	  filter-procs-postgresql.xql, filter-procs.tcl: Add optional
+	  revision parameter to content::init. Defaults to live revision.
+
+2004-06-04 07:58  joela
+
+	* etc/config.tcl: changed ServerPeerVerify to false on AlfredW's
+	  suggestion
+
+2004-06-04 06:54  joela
+
+	* packages/acs-core-docs/www/xml/releasing-openacs.xml: added notes
+	  on how to rebuild repository automatically
+
+2004-06-03 15:35  jader
+
+	* etc/backup.sh: Fix bug where = was used for assignment instead of
+	  comparison.
+
+2004-06-02 13:54  jader
+
 	* packages/acs-content-repository/sql/postgresql/content-type.sql:
-	  fix content_type__refresh_view to do a lowercase when selecting
-	  table_name. this was in the upgrade script for 5.2.0a1 to 5.2.0a2
-	  but didn't find it's way here
+	  Fix for bug #1799. Bug in content_type__drop_attribute.
 
-2006-01-08 22:32  carlb
+2004-06-02 12:46  jader
 
-	* packages/acs-authentication/www/doc/: ext-auth-install.html,
-	  ext-auth-ldap-install.html, ext-auth-pam-install.html,
-	  index.html, xml/install.xml: initial add of LDAP/Active Directory
-	  authN documentation
+	* packages/acs-core-docs/www/xml/developers-guide/form-builder.xml:
+	  Added more information on how to use the -on_refresh section on
+	  ad_form
 
-2006-01-08 18:52  daveb
+2004-06-01 18:36  jader
 
-	* packages/: acs-admin/acs-admin.info,
+	* packages/acs-kernel/acs-kernel.info: Added additional explanation
+	  as to what Privacy Control actually does.
+
+2004-06-01 15:54  donb
+
+	* packages/acs-content-repository/: sql/oracle/content-folder.sql,
+	  sql/oracle/content-item.sql, sql/oracle/content-test.sql,
+	  sql/oracle/packages-create.sql,
+	  sql/postgresql/content-folder.sql,
+	  sql/postgresql/content-item.sql, sql/postgresql/content-test.sql,
+	  www/doc/api/folder.html, www/doc/api/item.html: Changed CR
+	  &quot;rename&quot; procs to &quot;edit_name&quot; to avoid issues with Oracle 9.2
+	  (and changed PG for consistency)
+
+2004-05-28 15:36  jader
+
+	* packages/acs-core-docs/www/xml/developers-guide/form-builder.xml:
+	  Added documentation on how to use Javascript and the
+	  __refreshing_p variable, also added a section on how to
+	  troubleshoot forms using Jerry's trick that displays all the
+	  values of all form elements.
+
+2004-05-26 11:14  jader
+
+	* packages/acs-kernel/acs-kernel.info: By default, switched to not
+	  allow all HTML tags. This is per a discussion on IRC:
+	  http://openacs.org/irc/log/2004-05-26
+
+2004-05-26 10:59  jader
+
+	* packages/acs-tcl/tcl/00-database-procs.tcl: See:
+	  http://openacs.org/forums/message-view?message_id=186200 Changed
+	  comment for when using more than 1 database.
+
+2004-05-26 00:56  joela
+
+	* packages/acs-core-docs/www/: files/create-new-catalog.sh,
+	  xml/developers-guide/i18n.xml: added script from Rocael for
+	  cloning locale catalogs; notes on plural
+
+2004-05-25 08:22  andrewg
+
+	* packages/acs-templating/tcl/tag-init.tcl: Added hooks for
+	  adp-revealing code when developer support is installed on the
+	  system
+
+2004-05-25 08:19  andrewg
+
+	* packages/acs-templating/tcl/parse-procs.tcl: Reverting to version
+	  1.30, moving new adp-revealing developer support code to
+	  tag-init.tcl where the checks run more efficiently (once per
+	  thread after startup instead of once per view per template ) and
+	  the inserted markup doesn't break the DOM.
+
+2004-05-21 10:03  jader
+
+	* packages/acs-tcl/tcl/site-nodes-procs.tcl: Added a @see
+	  site_node::get_children in site_node::get_package_url, and a
+	  description of when to use get_children.
+
+2004-05-21 09:19  jader
+
+	* packages/acs-tcl/tcl/site-nodes-procs.tcl: Clarify that
+	  get_package_url returns the first URL if it is mounted in more
+	  than one location.
+
+2004-05-21 04:00  joela
+
+	* packages/acs-admin/www/apm/build-repository.tcl: using renamed
+	  function for maturity name
+
+2004-05-21 02:38  peterm
+
+	* packages/: acs-admin/www/install/install.tcl,
+	  acs-tcl/tcl/apm-install-procs.tcl: Showing maturity on the
+	  package install page. Renaming apm_maturity_int_to_text to
+	  apm::package_version::attributes::maturity_int_to_text (in
+	  namespace where it belongs)
+
+2004-05-21 02:24  joela
+
+	* packages/acs-tcl/: acs-tcl.info,
+	  catalog/acs-tcl.en_US.ISO-8859-1.xml, tcl/apm-install-procs.tcl:
+	  added package maturity text internationalization; incremented
+	  version so new keys are detected
+
+2004-05-21 01:52  joela
+
+	* packages/acs-admin/www/apm/: build-repository.tcl,
+	  repository-channel-index.adp: adding Maturity and license support
+	  to repository builder
+
+2004-05-20 11:54  rocaelh
+
+	* packages/acs-mail-lite/tcl/acs-mail-lite-procs-oracle.xql: bad
+	  writte &lt;fullquery&gt; fixed
+
+2004-05-19 11:52  jeffd
+
+	* packages/acs-admin/www/apm/package-add-2.tcl: pass array into
+	  apm_package_install_version, bash maturity to 0 (needs to be
+	  fixed)
+
+2004-05-19 11:49  jeffd
+
+	* packages/acs-tcl/tcl/apm-install-procs.tcl: sort the attribute
+	  names so the xml always comes out in the same way
+
+2004-05-19 05:19  jeffd
+
+	* packages/acs-core-docs/www/xml/install-guide/other-software.xml:
+	  add a note on dealing with tsearch not found in libdir, from
+	  thread http://openacs.org/forums/message-view?message_id=129170
+	  by Jason Macleod
+
+2004-05-18 09:43  rocaelh
+
+	* packages/acs-tcl/tcl/30-xml-utils-procs.tcl: xpath wrapper
+	  function
+
+2004-05-18 09:43  rocaelh
+
+	* packages/acs-tcl/tcl/utilities-procs.tcl: attribute of a child
+	  node function
+
+2004-05-17 08:14  jeffd
+
+	* etc/config.tcl, packages/acs-admin/acs-admin.info,
+	  packages/acs-admin/www/apm/index.tcl,
+	  packages/acs-admin/www/install/install-3.tcl,
+	  packages/acs-api-browser/acs-api-browser.info,
+	  packages/acs-api-browser/tcl/acs-api-documentation-procs.tcl,
+	  packages/acs-authentication/acs-authentication.info,
+	  packages/acs-authentication/catalog/acs-authentication.en_US.ISO-8859-1.xml,
+	  packages/acs-authentication/tcl/authentication-procs.tcl,
+	  packages/acs-automated-testing/acs-automated-testing.info,
+	  packages/acs-bootstrap-installer/acs-bootstrap-installer.info,
+	  packages/acs-content-repository/acs-content-repository.info,
+	  packages/acs-content-repository/sql/oracle/content-folder.sql,
+	  packages/acs-content-repository/sql/oracle/content-item.sql,
+	  packages/acs-content-repository/sql/postgresql/content-create.sql,
+	  packages/acs-content-repository/sql/postgresql/content-item.sql,
+	  packages/acs-content-repository/sql/postgresql/content-search.sql,
+	  packages/acs-content-repository/sql/postgresql/upgrade/upgrade-5.1.1d1-5.1.1d2.sql,
+	  packages/acs-content-repository/tcl/revision-procs.tcl,
+	  packages/acs-core-docs/acs-core-docs.info,
+	  packages/acs-kernel/acs-kernel.info,
+	  packages/acs-kernel/catalog/acs-kernel.ast_ES.ISO-8859-1.xml,
+	  packages/acs-kernel/catalog/acs-kernel.ch_zh.utf-8.xml,
+	  packages/acs-kernel/catalog/acs-kernel.da_DK.ISO-8859-1.xml,
+	  packages/acs-kernel/catalog/acs-kernel.de_DE.ISO-8859-1.xml,
+	  packages/acs-kernel/catalog/acs-kernel.en_US.ISO-8859-1.xml,
+	  packages/acs-kernel/catalog/acs-kernel.es_ES.ISO-8859-1.xml,
+	  packages/acs-kernel/catalog/acs-kernel.fi_FI.utf-8.xml,
+	  packages/acs-kernel/catalog/acs-kernel.fr_FR.ISO-8859-1.xml,
+	  packages/acs-kernel/catalog/acs-kernel.gl_ES.ISO-8859-1.xml,
+	  packages/acs-kernel/catalog/acs-kernel.hu_HU.utf-8.xml,
+	  packages/acs-kernel/catalog/acs-kernel.it_IT.ISO-8859-1.xml,
+	  packages/acs-kernel/catalog/acs-kernel.ja_JP.utf-8.xml,
+	  packages/acs-kernel/catalog/acs-kernel.ko_KR.utf-8.xml,
+	  packages/acs-kernel/catalog/acs-kernel.nl_NL.ISO-8859-1.xml,
+	  packages/acs-kernel/catalog/acs-kernel.nn_NO.ISO-8859-1.xml,
+	  packages/acs-kernel/catalog/acs-kernel.no_NO.ISO-8859-1.xml,
+	  packages/acs-kernel/catalog/acs-kernel.pl_PL.utf-8.xml,
+	  packages/acs-kernel/catalog/acs-kernel.pt_BR.ISO-8859-1.xml,
+	  packages/acs-kernel/catalog/acs-kernel.pt_PT.ISO-8859-1.xml,
+	  packages/acs-kernel/catalog/acs-kernel.ru_RU.utf-8.xml,
+	  packages/acs-kernel/catalog/acs-kernel.sv_SE.ISO-8859-1.xml,
+	  packages/acs-kernel/catalog/acs-kernel.tr_TR.utf-8.xml,
+	  packages/acs-kernel/catalog/acs-kernel.zh_TW.utf-8.xml,
+	  packages/acs-kernel/sql/postgresql/upgrade/upgrade-4.6.3-4.6.4.sql,
+	  packages/acs-kernel/sql/postgresql/upgrade/upgrade-5.0.0b3-5.0.0b4.sql,
+	  packages/acs-kernel/sql/postgresql/upgrade/upgrade-5.0d2-5.0d3.sql,
+	  packages/acs-lang/acs-lang.info,
+	  packages/acs-lang/catalog/acs-lang.ast_ES.ISO-8859-1.xml,
+	  packages/acs-lang/catalog/acs-lang.ch_zh.utf-8.xml,
+	  packages/acs-lang/catalog/acs-lang.da_DK.ISO-8859-1.xml,
+	  packages/acs-lang/catalog/acs-lang.de_DE.ISO-8859-1.xml,
+	  packages/acs-lang/catalog/acs-lang.el_GR.utf-8.xml,
+	  packages/acs-lang/catalog/acs-lang.en_GB.ISO-8859-1.xml,
+	  packages/acs-lang/catalog/acs-lang.es_ES.ISO-8859-1.xml,
+	  packages/acs-lang/catalog/acs-lang.fi_FI.utf-8.xml,
+	  packages/acs-lang/catalog/acs-lang.fr_FR.ISO-8859-1.xml,
+	  packages/acs-lang/catalog/acs-lang.gl_ES.ISO-8859-1.xml,
+	  packages/acs-lang/catalog/acs-lang.hu_HU.utf-8.xml,
+	  packages/acs-lang/catalog/acs-lang.it_IT.ISO-8859-1.xml,
+	  packages/acs-lang/catalog/acs-lang.ja_JP.utf-8.xml,
+	  packages/acs-lang/catalog/acs-lang.ko_KR.utf-8.xml,
+	  packages/acs-lang/catalog/acs-lang.nl_NL.ISO-8859-1.xml,
+	  packages/acs-lang/catalog/acs-lang.nn_NO.ISO-8859-1.xml,
+	  packages/acs-lang/catalog/acs-lang.no_NO.ISO-8859-1.xml,
+	  packages/acs-lang/catalog/acs-lang.pl_PL.utf-8.xml,
+	  packages/acs-lang/catalog/acs-lang.pt_BR.ISO-8859-1.xml,
+	  packages/acs-lang/catalog/acs-lang.pt_PT.ISO-8859-1.xml,
+	  packages/acs-lang/catalog/acs-lang.ru_RU.utf-8.xml,
+	  packages/acs-lang/catalog/acs-lang.sh_HR.utf-8.xml,
+	  packages/acs-lang/catalog/acs-lang.sv_SE.ISO-8859-1.xml,
+	  packages/acs-lang/catalog/acs-lang.tr_TR.utf-8.xml,
+	  packages/acs-lang/catalog/acs-lang.zh_TW.utf-8.xml,
+	  packages/acs-lang/www/admin/batch-editor.adp,
+	  packages/acs-lang/www/admin/edit-description.adp,
+	  packages/acs-lang/www/admin/edit-localized-message.adp,
+	  packages/acs-lang/www/admin/edit-localized-message.tcl,
+	  packages/acs-messaging/acs-messaging.info,
+	  packages/acs-reference/acs-reference.info,
+	  packages/acs-service-contract/acs-service-contract.info,
+	  packages/acs-subsite/acs-subsite.info,
+	  packages/acs-subsite/catalog/acs-subsite.ast_ES.ISO-8859-1.xml,
+	  packages/acs-subsite/catalog/acs-subsite.ch_zh.utf-8.xml,
+	  packages/acs-subsite/catalog/acs-subsite.da_DK.ISO-8859-1.xml,
+	  packages/acs-subsite/catalog/acs-subsite.de_DE.ISO-8859-1.xml,
+	  packages/acs-subsite/catalog/acs-subsite.el_GR.utf-8.xml,
+	  packages/acs-subsite/catalog/acs-subsite.en_US.ISO-8859-1.xml,
+	  packages/acs-subsite/catalog/acs-subsite.es_ES.ISO-8859-1.xml,
+	  packages/acs-subsite/catalog/acs-subsite.fi_FI.utf-8.xml,
+	  packages/acs-subsite/catalog/acs-subsite.fr_FR.ISO-8859-1.xml,
+	  packages/acs-subsite/catalog/acs-subsite.gl_ES.ISO-8859-1.xml,
+	  packages/acs-subsite/catalog/acs-subsite.hu_HU.utf-8.xml,
+	  packages/acs-subsite/catalog/acs-subsite.it_IT.ISO-8859-1.xml,
+	  packages/acs-subsite/catalog/acs-subsite.ja_JP.utf-8.xml,
+	  packages/acs-subsite/catalog/acs-subsite.ko_KR.utf-8.xml,
+	  packages/acs-subsite/catalog/acs-subsite.nl_NL.ISO-8859-1.xml,
+	  packages/acs-subsite/catalog/acs-subsite.nn_NO.ISO-8859-1.xml,
+	  packages/acs-subsite/catalog/acs-subsite.no_NO.ISO-8859-1.xml,
+	  packages/acs-subsite/catalog/acs-subsite.pl_PL.utf-8.xml,
+	  packages/acs-subsite/catalog/acs-subsite.pt_BR.ISO-8859-1.xml,
+	  packages/acs-subsite/catalog/acs-subsite.pt_PT.ISO-8859-1.xml,
+	  packages/acs-subsite/catalog/acs-subsite.ru_RU.utf-8.xml,
+	  packages/acs-subsite/catalog/acs-subsite.sh_HR.utf-8.xml,
+	  packages/acs-subsite/catalog/acs-subsite.sv_SE.ISO-8859-1.xml,
+	  packages/acs-subsite/catalog/acs-subsite.tr_TR.utf-8.xml,
+	  packages/acs-subsite/catalog/acs-subsite.zh_TW.utf-8.xml,
+	  packages/acs-subsite/lib/login.adp,
+	  packages/acs-subsite/lib/subsites.tcl,
+	  packages/acs-subsite/sql/postgresql/attribute.sql,
+	  packages/acs-subsite/www/admin/site-map/application-new.adp,
+	  packages/acs-subsite/www/members/member-invite.adp,
+	  packages/acs-subsite/www/members/user-batch-add-2.tcl,
+	  packages/acs-subsite/www/register/account-closed.tcl,
+	  packages/acs-subsite/www/resources/http.png,
+	  packages/acs-subsite/www/resources/profile-16.png,
+	  packages/acs-subsite/www/shared/community-member.adp,
+	  packages/acs-tcl/acs-tcl.info,
+	  packages/acs-tcl/catalog/acs-tcl.ast_ES.ISO-8859-1.xml,
+	  packages/acs-tcl/catalog/acs-tcl.ch_zh.utf-8.xml,
+	  packages/acs-tcl/catalog/acs-tcl.da_DK.ISO-8859-1.xml,
+	  packages/acs-tcl/catalog/acs-tcl.de_DE.ISO-8859-1.xml,
+	  packages/acs-tcl/catalog/acs-tcl.en_US.ISO-8859-1.xml,
+	  packages/acs-tcl/catalog/acs-tcl.es_ES.ISO-8859-1.xml,
+	  packages/acs-tcl/catalog/acs-tcl.fi_FI.utf-8.xml,
+	  packages/acs-tcl/catalog/acs-tcl.fr_FR.ISO-8859-1.xml,
+	  packages/acs-tcl/catalog/acs-tcl.gl_ES.ISO-8859-1.xml,
+	  packages/acs-tcl/catalog/acs-tcl.hu_HU.utf-8.xml,
+	  packages/acs-tcl/catalog/acs-tcl.it_IT.ISO-8859-1.xml,
+	  packages/acs-tcl/catalog/acs-tcl.ja_JP.utf-8.xml,
+	  packages/acs-tcl/catalog/acs-tcl.ko_KR.utf-8.xml,
+	  packages/acs-tcl/catalog/acs-tcl.nl_NL.ISO-8859-1.xml,
+	  packages/acs-tcl/catalog/acs-tcl.nn_NO.ISO-8859-1.xml,
+	  packages/acs-tcl/catalog/acs-tcl.no_NO.ISO-8859-1.xml,
+	  packages/acs-tcl/catalog/acs-tcl.pl_PL.utf-8.xml,
+	  packages/acs-tcl/catalog/acs-tcl.pt_BR.ISO-8859-1.xml,
+	  packages/acs-tcl/catalog/acs-tcl.pt_PT.ISO-8859-1.xml,
+	  packages/acs-tcl/catalog/acs-tcl.ru_RU.utf-8.xml,
+	  packages/acs-tcl/catalog/acs-tcl.sh_HR.utf-8.xml,
+	  packages/acs-tcl/catalog/acs-tcl.sv_SE.ISO-8859-1.xml,
+	  packages/acs-tcl/catalog/acs-tcl.tr_TR.utf-8.xml,
+	  packages/acs-tcl/catalog/acs-tcl.zh_TW.utf-8.xml,
+	  packages/acs-tcl/lib/progress-bar.adp,
+	  packages/acs-tcl/tcl/00-database-procs.tcl,
+	  packages/acs-tcl/tcl/defs-procs.tcl,
+	  packages/acs-templating/acs-templating.info,
+	  packages/acs-templating/catalog/acs-templating.ch_zh.utf-8.xml,
+	  packages/acs-templating/catalog/acs-templating.da_DK.ISO-8859-1.xml,
+	  packages/acs-templating/catalog/acs-templating.de_DE.ISO-8859-1.xml,
+	  packages/acs-templating/catalog/acs-templating.en_US.ISO-8859-1.xml,
+	  packages/acs-templating/catalog/acs-templating.es_ES.ISO-8859-1.xml,
+	  packages/acs-templating/catalog/acs-templating.fi_FI.utf-8.xml,
+	  packages/acs-templating/catalog/acs-templating.fr_FR.ISO-8859-1.xml,
+	  packages/acs-templating/catalog/acs-templating.hu_HU.utf-8.xml,
+	  packages/acs-templating/catalog/acs-templating.it_IT.ISO-8859-1.xml,
+	  packages/acs-templating/catalog/acs-templating.ko_KR.utf-8.xml,
+	  packages/acs-templating/catalog/acs-templating.nl_NL.ISO-8859-1.xml,
+	  packages/acs-templating/catalog/acs-templating.nn_NO.ISO-8859-1.xml,
+	  packages/acs-templating/catalog/acs-templating.no_NO.ISO-8859-1.xml,
+	  packages/acs-templating/catalog/acs-templating.pt_BR.ISO-8859-1.xml,
+	  packages/acs-templating/catalog/acs-templating.sv_SE.ISO-8859-1.xml,
+	  packages/acs-templating/catalog/acs-templating.zh_TW.utf-8.xml,
+	  packages/acs-templating/resources/lists/list.adp,
+	  packages/acs-templating/resources/lists/table.adp,
+	  packages/acs-templating/tcl/acs-templating-init.tcl,
+	  packages/acs-templating/tcl/form-procs.tcl,
+	  packages/acs-templating/tcl/list-procs.tcl,
+	  packages/acs-templating/tcl/tag-init.tcl,
+	  packages/notifications/catalog/notifications.nl_NL.ISO-8859-1.xml,
+	  packages/notifications/catalog/notifications.nn_NO.ISO-8859-1.xml,
+	  packages/ref-timezones/ref-timezones.info,
+	  packages/search/search.info, www/site-master.tcl: merge changes
+	  on oacs-5-1 branch to head, changes between jcd-merge-20040420
+	  and jcd-merge-5-1-20040517 were merged, head pre changes is
+	  jcd-merge-pre-20040517 and post is jcd-merge-post-20040517
+
+2004-05-16 02:16  joela
+
+	* packages/acs-lang/lib/change-locale-bar.tcl: fixed locale
+	  includelet to correctly build return_url
+
+2004-05-14 07:10  joela
+
+	* packages/acs-core-docs/www/xml/: releasing-openacs.xml,
+	  developers-guide/cvs.xml, developers-guide/tutorial-advanced.xml,
+	  developers-guide/tutorial-db.xml,
+	  developers-guide/tutorial-debug.xml,
+	  developers-guide/tutorial-pages.xml,
+	  developers-guide/tutorial.xml, install-guide/aolserver4.xml,
+	  install-guide/configuring.xml,
+	  install-guide/database-maintenance.xml,
+	  install-guide/maintenance.xml, install-guide/openacs.xml,
+	  install-guide/os.xml, install-guide/other-software.xml,
+	  install-guide/overview.xml, install-guide/postgres.xml,
+	  install-guide/recovery.xml, install-guide/upgrade.xml: replaced
+	  service0 with bash var
+
+2004-05-14 06:53  dirkg
+
+	* packages/acs-core-docs/www/xml/install-guide/oracle.xml: Added
+	  link to Oracle on Linux FAQ that publically lists certified Linux
+	  distros for Oracle.
+
+2004-05-14 06:28  joela
+
+	* packages/acs-core-docs/www/xml/install-guide/: maintenance.xml,
+	  oracle.xml: added Dirk's notes and new links on Oracle perf and
+	  certified setup
+
+2004-05-14 05:52  dirkg
+
+	* packages/acs-core-docs/www/xml/install-guide/oracle.xml: Added
+	  useful links, statspack and autotrace installation instructions
+	  etc. Needs to be worked over, revised and reviewed by Joel.
+
+2004-05-14 03:59  jeffd
+
+	* packages/acs-templating/resources/lists/table.adp: add the title
+	  for sorting to the currently sorted by column, set sort graphic
+	  alt to empty (title already on the text link), remove a class
+	  list where not needed
+
+2004-05-14 03:54  jeffd
+
+	* packages/acs-tcl/tcl/text-html-procs.tcl: add some output to help
+	  diagnose error in ad_parse_html_attributes_upvar
+
+2004-05-14 03:17  jeffd
+
+	* packages/search/: search.info,
+	  sql/postgresql/search-packages-create.sql,
+	  sql/postgresql/upgrade/upgrade-5.2.0d1-5.2.0d2.sql,
+	  tcl/search-procs-oracle.xql, tcl/search-procs.tcl,
+	  tcl/search-procs.xql: Put functions into a search:: namespace and
+	  make most private.  Add a search::queue and search::dequeue
+	  command define_function_args/package_exec_plsql to avoid db
+	  specific xql files.  unset datasource when finished with it.
+	  bump to 5.2.0d2 + postgresql upgrade script.
+
+2004-05-13 13:24  jader
+
+	*
+	  packages/acs-core-docs/www/xml/developers-guide/tutorial-advanced.xml:
+	  The categories section was duplicated twice, with the second one
+	  not coming through correctly because there was not an id= tag for
+	  it. I took out the second one. I think that's the correct one to
+	  take out. Also, the section on hierarchical queries did not have
+	  an id attribute, so I added it in.
+
+2004-05-13 12:47  jader
+
+	* packages/acs-templating/www/resources/forms.css: Internet
+	  Explorer does not left align the widgets by default, which gives
+	  it a behavior at odds with all the other browsers I've tested on
+	  (Safari, Mozilla, etc). This is a small change that left aligns
+	  widgets by default in all forms, which looks much better,
+	  especially on larger forms.
+
+2004-05-11 00:58  joela
+
+	* packages/acs-lang/: lib/change-locale-bar.tcl,
+	  www/change-locale-include.tcl: removed page_contract from
+	  includelet so it works when included in another page with a
+	  conflicting contract; improved logic for when to show list of
+	  locales
+
+2004-05-10 14:42  jader
+
+	* packages/acs-core-docs/www/xml/install-guide/upgrade.xml: Fixed
+	  spelling mistake, last commit incorrectly put my fix on the 'cd'
+	  line instead of the cvs line. (thanks for catching this, Jeff)
+
+2004-05-10 10:59  joela
+
+	* www/site-master.adp:	changed template to use new locale switcher
+
+2004-05-10 10:58  joela
+
+	* packages/acs-lang/: catalog/acs-lang.da_DK.ISO-8859-1.xml,
+	  catalog/acs-lang.de_DE.ISO-8859-1.xml,
+	  catalog/acs-lang.en_US.ISO-8859-1.xml,
+	  catalog/acs-lang.es_ES.ISO-8859-1.xml, lib/change-locale-bar.adp,
+	  lib/change-locale-bar.tcl: added locale-switching includelet and
+	  a few translations to enable testing
+
+2004-05-09 08:33  joela
+
+	* packages/search/search.info: incremented version number so that
+	  catalog gets loaded
+
+2004-05-09 08:32  joela
+
+	* packages/search/: catalog/search.en_US.ISO-8859-1.xml,
+	  lib/search.adp, lib/search.tcl: added search includelet;
+	  internationalized it.  depends on acs-kernel.common_search, which
+	  is on the translation server and should be in 5.1.1
+
+2004-05-09 07:57  joela
+
+	* packages/acs-lang/: catalog/acs-lang.en_US.ISO-8859-1.xml,
+	  www/change-locale-include.tcl, www/index.adp, www/locale-set.tcl,
+	  lib/conflict-link.adp, lib/messages-to-translate.adp:
+	  internationalized end-user-visible bits of acs-lang
+
+2004-05-09 06:48  joela
+
+	* packages/acs-lang/www/: change-locale-include.tcl,
+	  change-locale-include.xql: localized the list of locales in
+	  Change Locale dialog
+
+2004-05-07 15:10  jader
+
+	* packages/acs-core-docs/www/xml/install-guide/upgrade.xml: The tip
+	  syntax for cvs was wrong
+
+2004-05-07 10:29  jeffd
+
+	* packages/acs-mail-lite/www/doc/index.html: messed up html tag in
+	  main doc page
+
+2004-05-07 09:49  jader
+
+	* packages/acs-core-docs/www/xml/install-guide/upgrade.xml: Added
+	  in -kk to the cvs checkout, which prevents tons of conflicts in
+	  CVS
+
+2004-05-07 08:17  jeffd
+
+	* www/blank-master.tcl: only include the developer support css if
+	  ds_show_p true
+
+2004-05-07 05:22  jeffd
+
+	* packages/acs-templating/resources/lists/list.adp: 1. don't
+	  include javascript (now comes from core.js I think).
+
+	  2. don't create the form unless there are bulk actions
+
+	  3. remove spurious table tags.
+
+	  4. make the list row container a div rather than a P tag.
+
+	  5. change the class name for the list row container to    be
+	  &quot;list-row odd&quot; and &quot;list-row even&quot; rather than simply list-row
+
+	  6. Include the list_properties.bulk_action_export_chunk if there
+	  are bulk actions.
+
+	  7. Add the outermost div which has class list_properties.class
+
+2004-05-07 04:31  jeffd
+
+	* www/blank-master.tcl: don't add an empty onload element to the
+	  body tag
+
+2004-05-06 19:33  carlb
+
+	* packages/acs-core-docs/www/xml/install-guide/os.xml: added aspell
+	  to the list of optional software
+
+2004-05-06 17:27  jader
+
+	* packages/acs-core-docs/www/xml/install-guide/upgrade.xml: Updated
+	  the cvs section to 5.1. Also changed one CVS command. It would
+	  import the entire openacs-4 cvs tree into your local cvs tree,
+	  which is unnecessary and annoying.
+
+2004-05-06 14:38  lars
+
+	* packages/acs-templating/: acs-templating.info,
+	  tcl/richtext-procs.tcl: Added a check for the browser's
+	  User-Agent header before using htmlArea - Default to use htmlArea
+	  for richtext widgets
+
+2004-05-06 06:01  peterm
+
+	* packages/acs-content-repository/tcl/: item-procs-oracle.xql,
+	  item-procs-postgresql.xql, item-procs.tcl: adding the
+	  item::delete PL/SQL wrapper proc
+
+2004-05-06 05:57  peterm
+
+	* packages/acs-content-repository/tcl/: folder-procs-oracle.xql,
+	  folder-procs-postgresql.xql, folder-procs.tcl: Adding
+	  folder::delete proc which is a start in having a Tcl wrapper API
+	  for the content folder PL/SQL functions like we already have for
+	  items
+
+2004-05-06 05:37  jeffd
+
+	* packages/acs-api-browser/www/content-page-view.adp: can't use
+	  regular adp variable interpolation since when displaying source
+	  you don't want to translate tags, you want to display the 'real
+	  source'
+
+2004-05-05 11:36  jader
+
+	* packages/acs-core-docs/www/xml/install-guide/upgrade.xml: Added a
+	  comment that after the upgrade, you may need to change the
+	  parameters of acs-kernel so that you can allow HREF and IMG tags.
+
+2004-05-05 05:36  joela
+
+	* packages/acs-core-docs/www/profile-code.html: added new html file
+
+2004-05-05 05:36  joela
+
+	* packages/acs-core-docs/www/: acs-admin.html,
+	  acs-package-dev.html, acs-plat-dev.html, analog-install.html,
+	  analog-setup.html, aolserver.html, aolserver4.html,
+	  apm-design.html, apm-requirements.html, automated-backup.html,
+	  automated-testing-best-practices.html, backup-recovery.html,
+	  backups-with-cvs.html, bootstrap-acs.html, complete-install.html,
+	  configuring-new-site.html, credits.html, cvs-tips.html,
+	  database-management.html, db-api-detailed.html, db-api.html,
+	  dev-guide.html, doc-standards.html, docbook-primer.html,
+	  eng-standards-constraint-naming.html,
+	  eng-standards-filenaming.html, eng-standards-plsql.html,
+	  eng-standards-versioning.html, eng-standards.html,
+	  ext-auth-requirements.html, filename.html, for-everyone.html,
+	  form-builder.html, general-documents.html, groups-design.html,
+	  groups-requirements.html, high-avail.html, how-do-I.html,
+	  i18n-convert.html, i18n-design.html, i18n-introduction.html,
+	  i18n-overview.html, i18n-requirements.html,
+	  i18n-translators.html, i18n.html, index.html,
+	  individual-programs.html, install-cvs.html,
+	  install-daemontools.html, install-full-text-search.html,
+	  install-more-software.html, install-next-add-server.html,
+	  install-next-backups.html, install-next-nightly-vacuum.html,
+	  install-nsopenssl.html, install-nspam.html,
+	  install-openacs-delete-tablespace.html,
+	  install-openacs-inittab.html, install-openacs-keepalive.html,
+	  install-origins.html, install-overview.html, install-php.html,
+	  install-qmail.html, install-redhat.html, install-resources.html,
+	  install-squirrelmail.html, install-ssl.html, install-steps.html,
+	  install-tclwebtest.html, ix01.html, kernel-doc.html,
+	  kernel-overview.html, mac-installation.html,
+	  maint-performance.html, maintenance-deploy.html,
+	  maintenance-web.html, nxml-mode.html, object-identity.html,
+	  object-system-design.html, object-system-requirements.html,
+	  objects.html, openacs-overview.html, openacs-unpack.html,
+	  openacs.html, oracle.html, os-install.html, os-security.html,
+	  packages.html, parties.html, permissions-design.html,
+	  permissions-requirements.html,
+	  permissions-tediously-explained.html, permissions.html,
+	  postgres.html, programming-with-aolserver.html,
+	  psgml-for-emacs.html, psgml-mode.html, release-notes-4-5.html,
+	  release-notes-4-6-2.html, release-notes-4-6-3.html,
+	  release-notes-4-6.html, release-notes.html,
+	  releasing-openacs-core.html, releasing-openacs.html,
+	  releasing-package.html, remote-postgres.html,
+	  request-processor.html, requirements-template.html,
+	  rp-design.html, rp-requirements.html, security-design.html,
+	  security-notes.html, security-requirements.html,
+	  snapshot-backup.html, style-guide.html, subsites-design.html,
+	  subsites-requirements.html, subsites.html, tcl-doc.html,
+	  templates.html, tutorial-admin-pages.html,
+	  tutorial-advanced.html, tutorial-categories.html,
+	  tutorial-comments.html, tutorial-cvs.html,
+	  tutorial-database.html, tutorial-debug.html,
+	  tutorial-distribute.html, tutorial-future-topics.html,
+	  tutorial-newpackage.html, tutorial-notifications.html,
+	  tutorial-pages.html, tutorial-specs.html, tutorial-vuh.html,
+	  tutorial.html, unix-installation.html, update-repository.html,
+	  update-translations.html, upgrade-4.5-to-4.6.html,
+	  upgrade-4.6.3-to-5.html, upgrade-5-0-dot.html,
+	  upgrade-openacs-files.html, upgrade-overview.html,
+	  upgrade-supporting.html, upgrade.html, uptime.html,
+	  variables.html, win2k-installation.html, xml/openacs.xsl: changed
+	  comment link on bottom of pages to reflect new, permanent path
+	  /doc/current
+
+2004-05-04 13:49  andrewg
+
+	* packages/acs-templating/tcl/parse-procs.tcl: Added a developer
+	  support hook to adp_parse to support 'ADP reveal mode'
+
+2004-05-01 21:41  gabrielb
+
+	* packages/acs-mail-lite/tcl/acs-mail-lite-procs-postgresql.xql:
+	  This fixes date arithmetic, &quot;insert into ... select&quot; column order
+	  mismatch, and concatenation syntax error in acs-mail-lite. Bug
+	  1719, patch 489. Gabriel Burca.
+
+2004-05-01 01:36  jeffd
+
+	* packages/acs-content-repository/sql/postgresql/content-type.sql:
+	  second occurance of bug 1738 version match on OS X problem
+
+2004-04-30 15:49  jader
+
+	* packages/acs-subsite/www/members/member-invite.tcl: Fix typo:
+	  inivite to invite
+
+2004-04-29 08:41  jeffd
+
+	* packages/acs-content-repository/: acs-content-repository.info,
+	  sql/oracle/upgrade/upgrade-5.2.0d2-5.2.0d3.sql,
+	  sql/postgresql/content-create.sql,
+	  sql/postgresql/upgrade/upgrade-5.2.0d2-5.2.0d3.sql: cascade
+	  deletes for table cr_folder_type_map when folder or content_type
+	  are deleted
+
+2004-04-29 08:37  jeffd
+
+	*
+	  packages/acs-content-repository/sql/postgresql/upgrade/upgrade-5.2.0d2-5.2.0d3.sql:
+	  missed the pg upgrade script for cascade delete on root folder
+	  map table
+
+2004-04-29 08:28  jeffd
+
+	* packages/acs-subsite/www/permissions/: perm-include-oracle.xql,
+	  perm-include-postgresql.xql: change the perm-include page to use
+	  acs_object_party_privilege_map rather than
+	  acs_permission.permission_p which should be substantially faster
+
+2004-04-29 01:29  peterm
+
+	* etc/keepalive/keepalive.sh: removing absolute path to wget as it
+	  may vary from server to server
+
+2004-04-28 14:41  jeffd
+
+	* www/: blank-master.adp, site-master.adp: add a type to the js
+	  included, put title at the very top before the meta generator
+	  tag, don't emit an empty ul in the footer
+
+2004-04-28 08:33  peterm
+
+	* etc/keepalive/: keepalive-config.tcl, keepalive.sh: Making
+	  keepalive time out its request to the db test page after 6
+	  seconds. Reducing number of tries to 6. Making it possible to run
+	  keepalive quite often by introducing the seconds_between_restarts
+	  parameter so that for example you can tell keepalive to never
+	  restart a server more often than every 10 minutes
+
+2004-04-27 06:30  nimam
+
+	*
+	  packages/acs-core-docs/www/xml/developers-guide/tutorial-advanced.xml:
+	  Changed the position of the link for the docbook tags
+
+2004-04-27 05:24  jeffd
+
+	* packages/acs-templating/tcl/query-procs.tcl: add
+	  template::multirow unset documentation
+
+2004-04-27 05:23  jeffd
+
+	*
+	  packages/acs-service-contract/sql/postgresql/acs-sc-packages-create.sql:
+	  return one of the names of the unimplemented op
+
+2004-04-27 05:19  jeffd
+
+	* packages/acs-kernel/catalog/acs-kernel.en_US.ISO-8859-1.xml:
+	  merge changes on 5.1 for common keys
+
+2004-04-27 05:09  jeffd
+
+	* packages/search/: tcl/search-init.tcl,
+	  tcl/search-procs-oracle.xql, tcl/search-procs.tcl,
+	  tcl/search-procs.xql, www/search.tcl: put functions in a
+	  namespace, make them private, fix small bug with handling 'seen'
+	  objid in search::indexer, get rid of useless db_transaction call,
+	  check that a driver exists before doing anything in the sched
+	  proc
+
+2004-04-27 04:16  jeffd
+
+	* packages/acs-tcl/tcl/utilities-procs.tcl: minor change to
+	  ReturnHeaders docs
+
+2004-04-27 01:01  joela
+
+	* packages/acs-core-docs/www/: tutorial-cvs.html,
+	  tutorial-database.html, tutorial-debug.html,
+	  tutorial-distribute.html, tutorial-newpackage.html,
+	  tutorial-pages.html, tutorial.html: typo fixes in tutorial
+
+2004-04-26 17:53  carlb
+
+	* packages/acs-core-docs/www/xml/developers-guide/tutorial-db.xml:
+	  tested, corrected, and updated the tutorial-db doc
+
+2004-04-26 11:50  peterm
+
+	* packages/: acs-admin/www/apm/build-repository.tcl,
+	  acs-admin/www/apm/version-edit-2.tcl,
+	  acs-admin/www/apm/version-edit.tcl,
+	  acs-admin/www/apm/version-view.tcl, acs-kernel/acs-kernel.info,
+	  acs-kernel/sql/oracle/apm-create.sql,
+	  acs-kernel/sql/oracle/upgrade/upgrade-5.2.0d3-5.2.0d4.sql,
+	  acs-kernel/sql/postgresql/apm-create.sql,
+	  acs-kernel/sql/postgresql/upgrade/upgrade-5.2.0d3-5.2.0d4.sql,
+	  acs-tcl/tcl/apm-install-procs.tcl, acs-tcl/tcl/apm-xml-procs.tcl:
+	  Adding new package version attributes maturity, license, and
+	  license_url. Introducing the concept of dynamic package version
+	  attributes so that these can be added easily in the future. The
+	  attributes are driven by a metadata spec returned by the proc
+	  apm::package_version::attributes::get_spec.The attributes are
+	  stored in the skinny table apm_package_version_attr and managed
+	  through the Tcl API in namespace
+	  apm::package_version::attributes. Changing the parse and generate
+	  info XML file procs to use the dynamic attributes. Adding the
+	  dynamic attributes to the manifest XML file as well. The
+	  attributes are editable in the APM admin UI.
+
+2004-04-26 11:23  carlb
+
+	* packages/acs-core-docs/www/xml/developers-guide/tutorial.xml:
+	  tested and updated doc
+
+2004-04-26 09:18  jader
+
+	* etc/: config.tcl, daemontools/run: Fix for bug 1766. Changes
+	  address to 0.0.0.0, and introduces a sleep in the daemontools/run
+	  file.
+
+2004-04-26 00:54  jeffd
+
+	* www/robots.txt: robots.txt had UserAgent rather than User-agent
+	  for the key, added acs-lang, acs-admin, acs-service-contract,
+	  workflow, test, and notifications to the list of disallows.
+
+2004-04-25 08:09  joela
+
+	* packages/: acs-lang/acs-lang.info, acs-admin/acs-admin.info,
 	  acs-api-browser/acs-api-browser.info,
-	  acs-authentication/acs-authentication.info,
-	  acs-automated-testing/acs-automated-testing.info,
 	  acs-bootstrap-installer/acs-bootstrap-installer.info,
 	  acs-content-repository/acs-content-repository.info,
-	  acs-core-docs/acs-core-docs.info, acs-kernel/acs-kernel.info,
-	  acs-lang/acs-lang.info, acs-mail/acs-mail.info,
-	  acs-messaging/acs-messaging.info,
-	  acs-reference/acs-reference.info,
+	  acs-kernel/acs-kernel.info, acs-messaging/acs-messaging.info,
+	  acs-reference/acs-reference.info, acs-subsite/acs-subsite.info,
+	  acs-tcl/acs-tcl.info, acs-templating/acs-templating.info,
 	  acs-service-contract/acs-service-contract.info,
-	  acs-subsite/acs-subsite.info, acs-tcl/acs-tcl.info,
-	  acs-templating/acs-templating.info,
-	  ref-timezones/ref-timezones.info, search/search.info: Update
-	  docs, bump info files for 5.2.1
+	  search/search.info,
+	  acs-automated-testing/acs-automated-testing.info,
+	  acs-authentication/acs-authentication.info: added maturity and
+	  license info
 
-2006-01-08 17:28  daveb
+2004-04-25 08:02  tracya
 
-	* packages/acs-core-docs/: acs-core-docs.info, www/aolserver.html,
-	  www/aolserver4.html, www/automated-testing-best-practices.html,
-	  www/backup-recovery.html, www/bootstrap-acs.html,
-	  www/configuring-configuring-packages.html,
-	  www/configuring-configuring-permissions.html,
-	  www/configuring-install-packages.html,
-	  www/configuring-mounting-packages.html,
-	  www/contributing-code.html, www/credits.html,
-	  www/cvs-guidelines.html, www/cvs-tips.html,
-	  www/db-api-detailed.html, www/db-api.html,
-	  www/docbook-primer.html,
-	  www/eng-standards-constraint-naming.html,
-	  www/eng-standards-filenaming.html, www/eng-standards-plsql.html,
-	  www/eng-standards-versioning.html,
-	  www/ext-auth-requirements.html, www/filename.html,
-	  www/form-builder.html, www/high-avail.html, www/how-do-I.html,
-	  www/i18n-convert.html, www/index.html,
-	  www/individual-programs.html, www/install-cvs.html,
-	  www/install-daemontools.html,
-	  www/install-full-text-search-openfts.html,
-	  www/install-full-text-search-tsearch2.html,
-	  www/install-next-nightly-vacuum.html,
-	  www/install-openacs-keepalive.html, www/install-qmail.html,
-	  www/install-redhat.html, www/install-steps.html, www/ix01.html,
-	  www/mac-installation.html, www/maint-performance.html,
-	  www/maintenance-deploy.html, www/maintenance-web.html,
-	  www/object-identity.html, www/objects.html,
-	  www/openacs-cvs-concepts.html, www/openacs.html, www/oracle.html,
-	  www/packages.html, www/parties.html,
-	  www/permissions-tediously-explained.html, www/permissions.html,
-	  www/postgres.html, www/programming-with-aolserver.html,
-	  www/psgml-for-emacs.html, www/psgml-mode.html,
-	  www/release-notes-4-5.html, www/release-notes-4-6-2.html,
-	  www/release-notes-4-6-3.html, www/release-notes-4-6.html,
-	  www/release-notes.html, www/releasing-openacs-core.html,
-	  www/request-processor.html, www/requirements-template.html,
-	  www/security-notes.html, www/style-guide.html, www/subsites.html,
-	  www/tcl-doc.html, www/templates.html,
-	  www/tutorial-css-layout.html, www/tutorial-cvs.html,
-	  www/tutorial-database.html, www/tutorial-debug.html,
-	  www/tutorial-distribute.html, www/tutorial-etp-templates.html,
-	  www/tutorial-newpackage.html, www/tutorial-pages.html,
-	  www/unix-installation.html, www/upgrade-4.5-to-4.6.html,
-	  www/upgrade-openacs-files.html, www/upgrade-overview.html,
-	  www/using-cvs-with-openacs.html, www/variables.html,
-	  www/win2k-installation.html: Regenerate docs for 5.2.1
+	* packages/acs-subsite/tcl/: package-procs.tcl: reverting - we are
+	  not quite ready yet
 
-2006-01-08 15:15  carlb
+2004-04-25 07:28  tracya
 
-	* packages/acs-core-docs/www/xml/install-guide/postgres.xml: added
-	  a note about default system path in a section that was confusing
-	  new users
+	* packages/acs-subsite/tcl/package-procs.tcl: trickling isssues
+	  with adding package_id to acs_object table
 
-2006-01-08 06:52  daveb
+2004-04-25 07:09  joela
 
-	* packages/acs-content-repository/tcl/content-item-procs.tcl:
-	  Remove dependency on ad_conn.
+	* packages/acs-core-docs/acs-core-docs.info: added license and
+	  maturity
 
-2006-01-06 23:59  maltes
+2004-04-25 04:30  janines
 
-	* packages/acs-content-repository/tcl/content-item-procs.tcl: Fixes
-	  #2771. Made sure creation_* parameters are passed on to
-	  content::revision::new
+	*
+	  packages/acs-content-repository/sql/oracle/upgrade/upgrade-4.6.1-4.6.2.sql:
+	  Fixed bug 1597 - Oracle can't handle comments on the ends of the
+	  lines
 
-2006-01-05 11:40  daveb
+2004-04-25 02:52  donb
 
-	* packages/acs-tcl/lib/page-error.tcl: Turn off emailing page
-	  errors.  Whoever added this, please, please,please! add the
-	  paramtere for this and make it off by default.
+	*
+	  packages/acs-kernel/sql/postgresql/upgrade/upgrade-5.0d2-5.0d3.sql:
+	  Applied the first patch contained in patch #397 (the other
+	  problem had previously been fixed by someone else)
 
-2006-01-05 09:43  daveb
+2004-04-25 02:32  donb
 
-	* packages/acs-kernel/acs-kernel.info: Bump version number
+	* etc/install/functions.sh: Applied Vinod Kurup's patch 491 for bug
+	  1724 - functions.sh failed if you weren't using daemontools
+	  because a newline inserted into the created file confused bash
+	  (which isn't used if you're using daemontools, therefore had not
+	  been caught by the script author).
 
-2006-01-04 16:25  donb
+2004-04-25 02:24  donb
 
 	*
-	  packages/acs-kernel/sql/oracle/upgrade/upgrade-5.2.0d9-5.2.0d10.sql:
-	  Added create or replace of apm_package to the 5.2.0 version since
-	  we've not actually bumped acs-kernel.info yet ...
+	  packages/acs-messaging/sql/postgresql/upgrade/upgrade-4.6.2-4.6.3.sql:
+	  Applied patch 394
 
-2006-01-04 12:28  daveb
+2004-04-25 01:50  donb
 
-	* packages/acs-messaging/: acs-messaging.info,
-	  sql/oracle/acs-messaging-packages.sql,
-	  sql/oracle/upgrade/upgrade-5.2.1d1-5.2.1d2.sql: Support root
-	  parent_id as -4 instead of 0. Postgresql doesn't have a default
-	  for parent_id so it doesn't get an upgrade script.
+	* packages/acs-content-repository/sql/postgresql/content-type.sql:
+	  Appled Jarrko's patch 498 for bug 1738: check for PG 7.2 failed
+	  on Mac OS X because the check string was just '%7.2%' and Mac OS
+	  X ships with darwin 7.2
 
-2006-01-04 07:51  daveb
+2004-04-23 06:28  joela
 
-	*
-	  packages/acs-content-repository/sql/postgresql/upgrade/upgrade-5.2.1d1-5.2.1d2.sql:
-	  Refresh content_revision view also, not just child types.
+	* packages/acs-core-docs/www/xml/developers-guide/i18n.xml:
+	  formatting tweaks for long lines i18n-convert.html
 
-2006-01-03 17:42  daveb
+2004-04-23 02:28  joela
 
-	* packages/acs-kernel/sql/:
-	  postgresql/upgrade/upgrade-5.2.1d1-5.2.1d2.sql,
-	  oracle/upgrade/upgrade-5.2.1d1-5.2.1d2.sql: Recreate apm package
-	  to match create scripts.
+	* etc/install/install.sh: added tcllibpath fix to install.sh, but
+	  it should come from a parameter in install.tcl
 
-2006-01-03 17:29  daveb
+2004-04-21 06:30  joela
 
-	* packages/acs-content-repository/sql/:
-	  oracle/upgrade/upgrade-5.2.0b11-5.2.0b12.sql,
-	  oracle/upgrade/upgrade-5.2.1d1-5.2.1d2.sql,
-	  postgresql/upgrade/upgrade-5.2.0b11-5.2.0b12.sql,
-	  postgresql/upgrade/upgrade-5.2.1d1-5.2.1d2.sql: Fix upgrade. Move
-	  5.2.0 stuff to 5.2.1
+	* packages/acs-core-docs/www/xml/developers-guide/i18n.xml: a few
+	  typo fixes
 
-2006-01-03 16:48  donb
+2004-04-21 06:18  joela
 
-	* packages/acs-kernel/sql/oracle/acs-relationships-create.sql:
-	  Fixed malte/timo typo that broke oracle
+	* packages/acs-core-docs/www/: i18n-convert.html,
+	  xml/developers-guide/i18n.xml: formatted Jeff and Peter's i18n
+	  tips
 
-2006-01-03 16:38  donb
+2004-04-21 02:49  joela
 
-	* packages/acs-content-repository/sql/oracle/: content-folder.sql,
-	  upgrade/upgrade-5.2.0b5-5.2.0b6.sql: More 5.2 fixes for Oracle
-	  ...
+	* packages/acs-core-docs/www/: acs-admin.html,
+	  acs-package-dev.html, aolserver.html, aolserver4.html,
+	  automated-testing-best-practices.html, backup-recovery.html,
+	  bootstrap-acs.html, complete-install.html, credits.html,
+	  cvs-tips.html, db-api-detailed.html, db-api.html, dev-guide.html,
+	  docbook-primer.html, eng-standards-constraint-naming.html,
+	  eng-standards-filenaming.html, eng-standards-plsql.html,
+	  eng-standards-versioning.html, ext-auth-requirements.html,
+	  filename.html, form-builder.html, high-avail.html, how-do-I.html,
+	  i18n-convert.html, index.html, individual-programs.html,
+	  install-cvs.html, install-daemontools.html,
+	  install-full-text-search.html, install-next-add-server.html,
+	  install-next-nightly-vacuum.html, install-nsopenssl.html,
+	  install-openacs-keepalive.html, install-qmail.html,
+	  install-redhat.html, install-steps.html, ix01.html,
+	  mac-installation.html, maint-performance.html,
+	  maintenance-deploy.html, maintenance-web.html,
+	  object-identity.html, objects.html, openacs-unpack.html,
+	  openacs.html, oracle.html, packages.html, parties.html,
+	  permissions-tediously-explained.html, permissions.html,
+	  postgres.html, programming-with-aolserver.html,
+	  psgml-for-emacs.html, psgml-mode.html, release-notes-4-5.html,
+	  release-notes-4-6-2.html, release-notes-4-6-3.html,
+	  release-notes-4-6.html, release-notes.html,
+	  releasing-openacs-core.html, request-processor.html,
+	  requirements-template.html, security-notes.html,
+	  style-guide.html, subsites.html, tcl-doc.html, templates.html,
+	  tutorial-advanced.html, tutorial-cvs.html,
+	  tutorial-database.html, tutorial-debug.html,
+	  tutorial-distribute.html, tutorial-future-topics.html,
+	  tutorial-newpackage.html, tutorial-notifications.html,
+	  tutorial-pages.html, tutorial-vuh.html, unix-installation.html,
+	  upgrade-4.5-to-4.6.html, upgrade-openacs-files.html,
+	  upgrade-overview.html, variables.html, win2k-installation.html,
+	  files/tutorial/myfirstpackage-procs.tcl,
+	  xml/developers-guide/i18n.xml,
+	  xml/developers-guide/tutorial-db.xml,
+	  xml/developers-guide/tutorial.xml,
+	  xml/install-guide/aolserver4.xml, xml/install-guide/software.xml:
+	  added more i18n notes; working tclwebtest tutorial test
 
-2006-01-03 15:10  donb
+2004-04-20 14:12  jeffd
 
-	* packages/acs-bootstrap-installer/db-init-checks-oracle.tcl:
-	  Janine's addition of a real version check for Oracle was
-	  allocating a db handle from the default pool, which we don't
-	  require in OpenACS.  I changed the test to grab a handle from the
-	  first available pool.
+	* ChangeLog, etc/analog.cfg, etc/backup.sh, etc/config.tcl,
+	  packages/acs-admin/acs-admin.info,
+	  packages/acs-admin/www/apm/version-edit-2.tcl,
+	  packages/acs-admin/www/apm/version-edit-2.xql,
+	  packages/acs-admin/www/apm/version-i18n.tcl,
+	  packages/acs-admin/www/install/index.adp,
+	  packages/acs-admin/www/install/index.tcl,
+	  packages/acs-admin/www/install/install.adp,
+	  packages/acs-admin/www/install/install.tcl,
+	  packages/acs-admin/www/users/index.adp,
+	  packages/acs-api-browser/acs-api-browser.info,
+	  packages/acs-authentication/acs-authentication.info,
+	  packages/acs-authentication/catalog/acs-authentication.en_US.ISO-8859-1.xml,
+	  packages/acs-authentication/tcl/authentication-procs.tcl,
+	  packages/acs-authentication/tcl/local-procs.tcl,
+	  packages/acs-automated-testing/acs-automated-testing.info,
+	  packages/acs-automated-testing/tcl/test/acs-automated-testing-procs.tcl,
+	  packages/acs-bootstrap-installer/acs-bootstrap-installer.info,
+	  packages/acs-content-repository/acs-content-repository.info,
+	  packages/acs-content-repository/sql/common/mime-type-data.sql,
+	  packages/acs-content-repository/sql/oracle/content-folder.sql,
+	  packages/acs-content-repository/sql/oracle/content-item.sql,
+	  packages/acs-content-repository/sql/oracle/content-revision.sql,
+	  packages/acs-content-repository/sql/oracle/upgrade/upgrade-5.0.0-5.1.0d1.sql,
+	  packages/acs-content-repository/sql/postgresql/upgrade/upgrade-5.0.0-5.1.0d1.sql,
+	  packages/acs-content-repository/tcl/revision-procs-oracle.xql,
+	  packages/acs-content-repository/tcl/revision-procs-postgresql.xql,
+	  packages/acs-content-repository/tcl/revision-procs.tcl,
+	  packages/acs-content-repository/tcl/revision-procs.xql,
+	  packages/acs-core-docs/acs-core-docs.info,
+	  packages/acs-core-docs/www/index.adp,
+	  packages/acs-core-docs/www/xml/for-everyone/release-notes.xml,
+	  packages/acs-kernel/acs-kernel.info,
+	  packages/acs-kernel/sql/oracle/acs-install.sql,
+	  packages/acs-kernel/sql/postgresql/acs-install.sql,
+	  packages/acs-lang/acs-lang.info,
+	  packages/acs-lang/catalog/acs-lang.fi_FI.utf-8.xml,
+	  packages/acs-lang/tcl/lang-message-procs.tcl,
+	  packages/acs-lang/tcl/lang-util-procs.tcl,
+	  packages/acs-lang/tcl/test/acs-lang-test-procs.tcl,
+	  packages/acs-lang/www/admin/edit-localized-message.adp,
+	  packages/acs-lang/www/admin/edit-localized-message.tcl,
+	  packages/acs-lang/www/admin/message-list.tcl,
+	  packages/acs-mail-lite/tcl/acs-mail-lite-procs-oracle.xql,
+	  packages/acs-mail-lite/tcl/acs-mail-lite-procs.tcl,
+	  packages/acs-mail-lite/tcl/acs-mail-lite-procs.xql,
+	  packages/acs-messaging/acs-messaging.info,
+	  packages/acs-reference/acs-reference.info,
+	  packages/acs-service-contract/acs-service-contract.info,
+	  packages/acs-service-contract/tcl/acs-service-contract-init.tcl,
+	  packages/acs-service-contract/tcl/acs-service-contract-procs.tcl,
+	  packages/acs-service-contract/tcl/implementation-procs.tcl,
+	  packages/acs-subsite/acs-subsite.info,
+	  packages/acs-subsite/catalog/acs-subsite.en_US.ISO-8859-1.xml,
+	  packages/acs-subsite/lib/user-info.adp,
+	  packages/acs-subsite/lib/user-new.tcl,
+	  packages/acs-subsite/tcl/application-group-procs-oracle.xql,
+	  packages/acs-subsite/tcl/group-procs.tcl,
+	  packages/acs-subsite/tcl/group-type-procs.tcl,
+	  packages/acs-subsite/tcl/subsite-procs.tcl,
+	  packages/acs-subsite/www/admin/applications/application-add.tcl,
+	  packages/acs-subsite/www/admin/rel-types/new.adp,
+	  packages/acs-subsite/www/admin/relations/add-oracle.xql,
+	  packages/acs-subsite/www/admin/relations/add-postgresql.xql,
+	  packages/acs-subsite/www/admin/relations/add.tcl,
+	  packages/acs-subsite/www/members/member-invite.adp,
+	  packages/acs-subsite/www/members/member-invite.tcl,
+	  packages/acs-subsite/www/members/user-batch-add-2.adp,
+	  packages/acs-subsite/www/members/user-batch-add-2.tcl,
+	  packages/acs-subsite/www/members/user-batch-add.adp,
+	  packages/acs-subsite/www/members/user-batch-add.tcl,
+	  packages/acs-subsite/www/members/user-new.tcl,
+	  packages/acs-subsite/www/permissions/one.tcl,
+	  packages/acs-subsite/www/register/user-join.tcl,
+	  packages/acs-subsite/www/resources/site-master.css,
+	  packages/acs-subsite/www/user/basic-info-update.tcl,
+	  packages/acs-tcl/acs-tcl.info,
+	  packages/acs-tcl/tcl/00-database-procs.tcl,
+	  packages/acs-tcl/tcl/acs-permissions-procs.tcl,
+	  packages/acs-tcl/tcl/apm-install-procs.tcl,
+	  packages/acs-tcl/tcl/apm-procs.tcl,
+	  packages/acs-tcl/tcl/community-core-procs.tcl,
+	  packages/acs-tcl/tcl/defs-procs.tcl,
+	  packages/acs-tcl/tcl/membership-rel-procs.tcl,
+	  packages/acs-tcl/tcl/site-nodes-procs.tcl,
+	  packages/acs-tcl/tcl/text-html-procs.tcl,
+	  packages/acs-tcl/tcl/utilities-init.tcl,
+	  packages/acs-tcl/tcl/utilities-procs.tcl,
+	  packages/acs-tcl/tcl/test/acs-tcl-test-procs.tcl,
+	  packages/acs-templating/acs-templating.info,
+	  packages/acs-templating/catalog/acs-templating.en_US.ISO-8859-1.xml,
+	  packages/acs-templating/resources/lists/table.adp,
+	  packages/acs-templating/tcl/date-init.tcl,
+	  packages/acs-templating/tcl/date-procs.tcl,
+	  packages/acs-templating/tcl/element-procs.tcl,
+	  packages/acs-templating/tcl/list-procs.tcl,
+	  packages/acs-templating/tcl/parse-procs.tcl,
+	  packages/acs-templating/tcl/query-procs.tcl,
+	  packages/acs-templating/tcl/util-procs.tcl,
+	  packages/acs-templating/www/doc/tagref/include.html,
+	  packages/notifications/notifications.info,
+	  packages/ref-timezones/ref-timezones.info,
+	  packages/search/search.info: merge all the changes on the
+	  oacs-5-1 and dotlrn-2-0 branches up to tag jcd-merge-20040420
 
-2006-01-03 07:05  daveb
+2004-04-20 07:08  peterm
 
-	*
-	  packages/acs-content-repository/sql/postgresql/upgrade/upgrade-5.2.0b11-5.2.0b12.sql:
-	  Recreate content_keyword__new to support package_id.	Refresh
-	  views and triggers.
+	* packages/acs-automated-testing/tcl/tclwebtest-procs.tcl: making
+	  login proc error if it fails to login user. Adding some aa_log
+	  statements to make it easier to see what's going on during a
+	  tclwebtest test case (in particular which URLs are being
+	  requested)
 
-2006-01-03 07:04  daveb
+2004-04-19 03:06  joela
 
-	*
-	  packages/acs-content-repository/sql/oracle/upgrade/upgrade-5.2.0b11-5.2.0b12.sql:
-	  Refresh views and triggers.  Recreate content keyword to support
-	  package_id parameter
+	* packages/acs-core-docs/www/xml/:
+	  install-guide/other-software.xml,
+	  developers-guide/tutorial-advanced.xml: backported typo fixes
+	  from 5.1
 
-2006-01-03 05:45  daveb
+2004-04-17 16:15  jader
 
+	* packages/acs-core-docs/www/xml/install-guide/other-software.xml:
+	  Added more troubleshooting info for Aolserver 4 and nsopenssl
+
+2004-04-16 12:03  donb
+
+	* packages/notifications/tcl/interval-procs.xql: Geraldo Morales
+	  noticed that this proc's query hardwired &quot;instant&quot; rather than
+	  using the &quot;name&quot; parameter as it obviously should ...
+
+2004-04-16 05:59  joela
+
+	* packages/acs-core-docs/www/files/openacs.txt: stripped the
+	  balance stuff from the startup script and renamed it openacs.txt
+	  from init.d
+
+2004-04-15 13:10  jader
+
+	* packages/acs-core-docs/www/xml/install-guide/other-software.xml:
+	  Added troubleshooting information for those with older info in
+	  the config.tcl files.
+
+2004-04-15 05:43  nimam
+
+	* packages/acs-lang/www/index.adp: test commit, just added an empty
+	  line
+
+2004-04-09 07:00  andrewg
+
+	* packages/acs-content-repository/sql/oracle/: content-extlink.sql,
+	  content-folder.sql, content-item.sql, content-symlink.sql,
+	  packages-create.sql: various bug fixes for package_id, title
+	  addition to acs_objects
+
+2004-04-07 17:49  jader
+
+	* packages/acs-core-docs/www/xml/developers-guide/permissions.xml:
+	  Replaced ad_permission_p with permission::permission_p
+
+2004-04-07 10:07  jader
+
+	* packages/acs-core-docs/www/xml/developers-guide/permissions.xml:
+	  Added note that ad_permission_p is deprecated and that it should
+	  use permission::permission_p. Didn't actually change it -- sorry.
+
+2004-04-07 10:03  jader
+
 	*
-	  packages/acs-content-repository/sql/postgresql/upgrade/upgrade-5.2.0b11-5.2.0b12.sql:
-	  Refresh insert views on upgrade since the definition has changed.
+	  packages/acs-core-docs/www/xml/developers-guide/tutorial-advanced.xml:
+	  Restoring my addition on profiling your code that was also
+	  somehow left out in the oacs-5-0 -&gt; HEAD transition.
 
-2006-01-02 10:02  daveb
+2004-04-07 09:59  jader
 
 	*
-	  packages/acs-kernel/sql/postgresql/upgrade/upgrade-5.2.0b10-5.2.0b11.sql:
-	  Make sure beta testers also get fixed apm_package__new
+	  packages/acs-core-docs/www/xml/developers-guide/tutorial-advanced.xml:
+	  Recommitting tutorial on tree_sortkey that was somehow removed in
+	  the transition to HEAD.
 
-2006-01-02 10:00  daveb
+2004-04-06 12:50  andrewg
 
+	* packages/acs-kernel/sql/oracle/apm-create.sql: Removing
+	  acs_objects_package_id_fk constraint, which was breaking the
+	  install.  We can put it back in and have things work if we first
+	  rearrange the code in apm_package.new to perform the insert into
+	  apm_packages before the update on acs_objects.  But for now we'll
+	  do as the PG version does, which is to not define the constraint
+	  at all.
+
+2004-04-05 13:36  lars
+
+	* packages/acs-templating/acs-templating.info: Documentation ofr
+	  RefreshCache parameter
+
+2004-04-05 09:34  lars
+
+	* packages/acs-tcl/tcl/tcl-documentation-procs.tcl: - Added -form
+	  switch to ad_page_contract to let callers pass in a form ns_set
+	  specifically. This is useful when using ad_page_contract to
+	  validate includelets - Removed unused -type switch to
+	  ad_page_contract - This is a merge of the 1.18.4.1 change on
+	  dotkul branch
+
+2004-04-05 07:25  joela
+
+	* packages/acs-core-docs/www/xml/variables.ent: variables for
+	  HEAD/5.2
+
+2004-04-01 15:05  jader
+
+	* packages/acs-core-docs/www/xml/install-guide/aolserver4.xml:
+	  Added clarification that you'll need to edit nsd-postgres or
+	  nsd-oracle script with path to Aolserver if you're not using
+	  /usr/local/aolserver as the Aolserver directory.
+
+2004-04-01 14:51  jader
+
+	* packages/acs-core-docs/www/xml/install-guide/aolserver4.xml:
+	  Added in more hints for installing nspostgres.so if things go
+	  wrong.
+
+2004-04-01 12:56  jeffd
+
+	* packages/acs-tcl/tcl/: apm-procs-oracle.xql,
+	  apm-procs-postgresql.xql, apm-procs.tcl: change
+	  apm_package_url_from_id to return the first url (after finding
+	  half a dozen essentially identical queries to do that in package
+	  specific routines I think its clear it makes more sense to do
+	  that
+
+2004-04-01 06:22  jeffd
+
+	* packages/acs-content-repository/tcl/revision-procs.tcl:
+	  workaround another aolserver bug, this time with fastpath enabled
+	  ns_returnfile size 0 files fails
+
+2004-03-31 13:45  jeffd
+
+	* packages/: acs-kernel/acs-kernel.info,
+	  acs-subsite/acs-subsite.info, acs-subsite/www/index.tcl,
+	  acs-tcl/acs-tcl.info: Adds parameter IndexInternalRedirectUrl to
+	  acs-kernel, acs-subsite, bump version nubmers, modifies
+	  acs-subsite/www/index.tcl to use param, patch 413 bug 1363 Guan
+	  Yang
+
+2004-03-31 13:21  jeffd
+
+	* packages/acs-subsite/www/register/user-join.tcl: -abort flag does
+	  not seem to exist
+
+2004-03-31 04:53  jeffd
+
+	* packages/search/www/: search.adp, search.tcl: ad_script_abort if
+	  ftsdriver missing
+
+2004-03-31 04:11  peterm
+
+	* packages/acs-automated-testing/tcl/: tclwebtest-procs.tcl,
+	  test/acs-automated-testing-procs.tcl: adding a simple example
+	  tclwebtest test case that creates a test user and logs him in
+	  over HTTP, requests a web page, and then teardowns the user. In
+	  order to do this I copied over some procs from etc/install/tcl to
+	  tclwebtest-procs.tcl. The procs in etc/install/tcl should go away
+	  as we have tclwebtest fully integrated in acs-automated-testing
+
+2004-03-30 06:06  jeffd
+
+	* packages/acs-content-repository/tcl/revision-procs.tcl: send a
+	  content-length 0 header for empty files.
+
+2004-03-30 04:13  joela
+
+	* packages/acs-core-docs/www/: files/groups.dia,
+	  images/group-initial.png, images/group-model.png: added diagrams
+	  of group model
+
+2004-03-29 12:06  jeffd
+
+	* packages/acs-content-repository/sql/postgresql/:
+	  content-folder.sql, upgrade/upgrade-5.2.0d1-5.2.0d2.sql: add
+	  package_id to content_folder__new define_function_args, upgrade
+	  script
+
+2004-03-29 12:02  jeffd
+
+	* packages/acs-subsite/www/group-master.adp: propigate
+	  displayed_object_id for group-master.adp to site-master.adp
+
+2004-03-27 07:58  jeffd
+
+	* packages/acs-content-repository/: acs-content-repository.info,
+	  sql/postgresql/content-folder.sql,
+	  sql/postgresql/upgrade/upgrade-5.2.0d1-5.2.0d2.sql: fix typo in
+	  content_folder__rename, bump to 5.2.0d2, upgrade script, postgres
+	  only
+
+2004-03-27 05:32  daveb
+
+	* packages/acs-content-repository/tcl/item-procs-postgresql.xql:
+	  set_live should be set_live_revision in item::publish
+
+2004-03-27 05:23  jeffd
+
+	* packages/acs-content-repository/acs-content-repository.info:
+	  require kernel 5.2.0d2 provide 5.2.0d1acs-content-repository.info
+
+2004-03-26 06:53  jeffd
+
+	* packages/acs-tcl/tcl/defs-procs.tcl: acs_community_member_url
+	  said to see itself which disturbed me
+
+2004-03-26 03:28  joela
+
+	* packages/acs-tcl/tcl/utilities-procs.tcl: applied patch 458 to
+	  add util::word_diff
+
+2004-03-26 02:00  bdolicki
+
+	* packages/acs-templating/tcl/date-procs.tcl: Rolling back the
+	  checkin that was accidentally commited on HEAD. 1.29 is identical
+	  to 1.27.
+
+2004-03-26 01:05  bdolicki
+
+	* packages/acs-templating/tcl/date-procs.tcl: Part of this commit
+	  is fixing #1176 (just a few acs-lang strings and properly
+	  splitting the file into *-proc.tcl and *-init.tcl part).  Part of
+	  this fix (catalog file) was accidentally commited before by Joel
+
+	  The bigger part is changing load order of library files so that
+	  acs-lang-init.tcl gets loaded before all other *-init.tcl files.
+
+	  This is necessary because acs-lang is so fundamental and it is
+	  quite possible (as we have seen with the example of
+	  date-init.tcl) that there are *-init.tcl files that need
+	  translated strings.
+
+2004-03-25 13:51  jeffd
+
+	* packages/: acs-authentication/tcl/authority-procs.tcl,
+	  acs-tcl/tcl/site-nodes-procs.tcl,
+	  acs-templating/tcl/list-procs.tcl,
+	  acs-templating/tcl/widget-procs.tcl: empty_string_p fixes for
+	  head
+
+2004-03-25 13:42  jeffd
+
+	* packages/acs-content-repository/tcl/filter-procs.tcl: change
+	  functions to include namespace, fix format
+
+2004-03-25 10:09  joela
+
+	* packages/acs-core-docs/www/: i18n-convert.html,
+	  xml/developers-guide/i18n.xml: added notes on duplicate i18n keys
+
+2004-03-25 07:08  jeffd
+
+	* packages/acs-kernel/: acs-kernel.info,
+	  sql/oracle/upgrade/upgrade-5.2.0d1-5.2.0d2.sql,
+	  sql/postgresql/upgrade/upgrade-5.2.0d1-5.2.0d2.sql: bump the
+	  title, package_id tip 42  upgrade to 5.2.0d1-d2
+
+2004-03-25 04:43  jeffd
+
+	* packages/acs-subsite/www/shared/community-member.adp: propigate
+	  displayed_object_id tip 55
+
+2004-03-25 02:03  jeffd
+
+	* www/default-master.adp: propigate displayed_object_id from
+	  default-master to site-master
+
+2004-03-24 18:24  donb
+
+	* packages/acs-api-browser/tcl/acs-api-documentation-procs.tcl:
+	  Fixed bug 1516 ... though there are other regexps that bear
+	  inspection, it's clear that some of them at least won't fail for
+	  legal Tcl source.  So I just fixed this one regexp looking for
+	  spaces where spaces might not be in the source.
+
+2004-03-24 02:34  jeffd
+
+	* packages/acs-templating/tcl/parse-procs.tcl: namespace qualifier
+	  needed for ds_enabled_p
+
+2004-03-23 16:26  benb
+
+	* packages/acs-templating/tcl/tag-init.tcl: Added comment and
+	  contract tag defenitions
+
+2004-03-23 16:01  donb
+
+	* packages/acs-subsite/: lib/subsites.tcl,
+	  www/resources/site-master.css: Made the includable subsites
+	  template work (the link to register etc include the full subsite
+	  URL but the link to visit the subsite did not, which means it
+	  didn't work when included as a portlet.
+
+2004-03-23 07:37  joela
+
+	* packages/acs-core-docs/www/:
+	  files/tutorial/myfirstpackage-procs.tcl,
+	  xml/developers-guide/tutorial-debug.xml: adding notes on
+	  tclwebtest autotests
+
+2004-03-22 10:15  benb
+
+	* packages/acs-templating/tcl/tag-init.tcl: Renamed loop index in
+	  list tag to prevent collisions, which enables us to now use
+	  nested lists
+
+2004-03-22 04:46  joela
+
+	* packages/acs-core-docs/www/: aolserver.html, aolserver4.html,
+	  automated-testing-best-practices.html, backup-recovery.html,
+	  bootstrap-acs.html, credits.html, cvs-tips.html,
+	  db-api-detailed.html, db-api.html, docbook-primer.html,
+	  eng-standards-constraint-naming.html,
+	  eng-standards-filenaming.html, eng-standards-plsql.html,
+	  eng-standards-versioning.html, ext-auth-requirements.html,
+	  filename.html, form-builder.html, high-avail.html, how-do-I.html,
+	  i18n-convert.html, index.html, install-cvs.html,
+	  install-daemontools.html, install-full-text-search.html,
+	  install-next-nightly-vacuum.html, install-openacs-keepalive.html,
+	  install-qmail.html, install-redhat.html, install-steps.html,
+	  ix01.html, mac-installation.html, maint-performance.html,
+	  maintenance-deploy.html, maintenance-web.html,
+	  object-identity.html, objects.html, openacs.html, oracle.html,
+	  packages.html, parties.html,
+	  permissions-tediously-explained.html, permissions.html,
+	  postgres.html, programming-with-aolserver.html,
+	  psgml-for-emacs.html, psgml-mode.html, release-notes-4-5.html,
+	  release-notes-4-6-2.html, release-notes-4-6-3.html,
+	  release-notes-4-6.html, release-notes.html,
+	  releasing-openacs-core.html, request-processor.html,
+	  requirements-template.html, security-notes.html,
+	  style-guide.html, subsites.html, tcl-doc.html, templates.html,
+	  tutorial-cvs.html, tutorial-database.html, tutorial-debug.html,
+	  tutorial-distribute.html, tutorial-newpackage.html,
+	  tutorial-pages.html, unix-installation.html,
+	  upgrade-4.5-to-4.6.html, upgrade-openacs-files.html,
+	  upgrade-overview.html, variables.html, win2k-installation.html:
+	  added notes and pictures for i18n guide
+
+2004-03-22 04:38  joela
+
+	* packages/acs-core-docs/www/xml/: index.xml,
+	  install-guide/maintenance.xml, install-guide/other-software.xml:
+	  added notes and pictures for i18n guide
+
+2004-03-22 04:04  bdolicki
+
+	* packages/acs-core-docs/www/xml/developers-guide/i18n.xml: Tidied
+	  up and simplified the examples.
+
+2004-03-22 03:50  joela
+
+	* packages/acs-core-docs/www/: acs-admin.html,
+	  acs-package-dev.html, analog-setup.html, aolserver.html,
+	  aolserver4.html, automated-testing-best-practices.html,
+	  backup-recovery.html, bootstrap-acs.html, credits.html,
+	  cvs-tips.html, db-api-detailed.html, db-api.html,
+	  docbook-primer.html, eng-standards-constraint-naming.html,
+	  eng-standards-filenaming.html, eng-standards-plsql.html,
+	  eng-standards-versioning.html, ext-auth-requirements.html,
+	  filename.html, form-builder.html, high-avail.html,
+	  i18n-convert.html, i18n-design.html, i18n-introduction.html,
+	  i18n-overview.html, i18n-translators.html, i18n.html, index.html,
+	  install-cvs.html, install-daemontools.html,
+	  install-full-text-search.html, install-next-nightly-vacuum.html,
+	  install-nsopenssl.html, install-openacs-keepalive.html,
+	  install-qmail.html, install-redhat.html, install-ssl.html,
+	  install-steps.html, ix01.html, mac-installation.html,
+	  maint-performance.html, maintenance-deploy.html,
+	  maintenance-web.html, object-identity.html, objects.html,
+	  openacs.html, oracle.html, packages.html, parties.html,
+	  permissions-tediously-explained.html, permissions.html,
+	  postgres.html, programming-with-aolserver.html,
+	  psgml-for-emacs.html, psgml-mode.html, release-notes-4-5.html,
+	  release-notes-4-6-2.html, release-notes-4-6-3.html,
+	  release-notes-4-6.html, release-notes.html,
+	  releasing-openacs-core.html, request-processor.html,
+	  requirements-template.html, rp-design.html, security-notes.html,
+	  style-guide.html, subsites.html, tcl-doc.html, templates.html,
+	  tutorial-cvs.html, tutorial-database.html, tutorial-debug.html,
+	  tutorial-distribute.html, tutorial-newpackage.html,
+	  tutorial-notifications.html, tutorial-pages.html,
+	  tutorial-vuh.html, unix-installation.html,
+	  upgrade-4.5-to-4.6.html, upgrade-5-0-dot.html,
+	  upgrade-overview.html, upgrade-supporting.html, variables.html,
+	  win2k-installation.html: added notes and pictures for i18n guide
+
+2004-03-22 03:40  joela
+
+	* packages/acs-core-docs/www/images/: i18n-1.png, i18n-2.png,
+	  i18n-3.png, production.dia, upgrade-cvs.png: added notes and
+	  pictures for i18n guide
+
+2004-03-22 02:50  joela
+
+	* packages/acs-core-docs/www/xml/developers-guide/i18n.xml: added
+	  notes and pictures for i18n guide
+
+2004-03-19 15:31  jeffd
+
+	* packages/acs-templating/tcl/parse-procs.tcl: stupid mistake
+
+2004-03-19 04:14  jeffd
+
+	* packages/acs-templating/tcl/parse-procs.tcl: profile each .tcl
+	  and .adp page included, make ds_collection_enabled_p only check
+	  IP list once
+
+2004-03-19 02:16  jeffd
+
+	* readme.txt: update version to HEAD + warning
+
+2004-03-18 04:44  jeffd
+
+	* packages/acs-tcl/tcl/request-processor-procs.tcl: add some docs
+	  to ad_script_abort
+
+2004-03-18 04:39  joela
+
+	* packages/acs-core-docs/www/: upgrade-openacs-files.html,
+	  xml/install-guide/upgrade.xml: added work plan for production
+	  upgrade
+
+2004-03-18 04:24  jeffd
+
+	* packages/acs-subsite/tcl/package-procs.tcl: warn on value
+	  provided for non-existent arg for package_exec_plsql
+
+2004-03-18 03:14  joela
+
+	* packages/acs-core-docs/www/xml/install-guide/upgrade.xml: added
+	  notes on production upgrades
+
+2004-03-17 07:29  jeffd
+
+	* packages/acs-kernel/sql/postgresql/postgresql.sql: trim function
+	  name and args in define_function_args to avoid difficult to track
+	  down problems when calling package_plsql_exec et al
+
+2004-03-17 05:24  lars
+
+	* www/blank-master.adp: Include developer-support stylesheet if
+	  required
+
+2004-03-17 05:22  lars
+
+	* packages/acs-subsite/www/resources/site-master.css: Moved
+	  acs-developer-support stylesheet to acs-developer-support package
+
+2004-03-17 02:23  jeffd
+
+	* packages/acs-kernel/sql/postgresql/acs-objects-create.sql: minor
+	  typo prevented setting title even if provided in acs_object__new
+
+2004-03-16 19:38  daveb
+
+	* packages/acs-api-browser/tcl/acs-api-documentation-procs.tcl:
+	  Patch#448 from Benjamin Bytheway. Fixed bug#1562. Change order of
+	  arguments in string match command.
+
+2004-03-16 16:22  donb
+
+	* packages/acs-subsite/tcl/: package-procs-oracle.xql,
+	  package-procs-postgresql.xql, subsite-procs.tcl: Fixed
+	  get_pageflow_structure to correctly label the index_redirect_url
+	  as &quot;Home&quot;.
+
+2004-03-15 04:44  bdolicki
+
+	* packages/acs-subsite/lib/: user-info.adp, user-info.tcl: Showing
+	  the user in which groups he is a member.  This feature is not
+	  very useful considering that we are just showing a passive list
+	  of names.
+
+2004-03-15 03:12  bdolicki
+
+	* packages/acs-admin/www/users/: user-batch-add-2.adp,
+	  user-batch-add-2.tcl, user-batch-add.adp: Fixed variable parsing,
+	  changed syntax to &lt;first_names&gt;, &lt;last_name&gt;, added a missing
+	  noquote.
+
+2004-03-15 02:55  joela
+
+	* packages/acs-kernel/acs-kernel.info: incremented version number
+	  to 5.2.0d1
+
+2004-03-12 15:02  jader
+
+	* packages/acs-core-docs/www/xml/install-guide/upgrade.xml: The
+	  section &quot;Upgrading a custom or CVS site&quot; incorrectly said that it
+	  was not to be used if you have custom code or your code is in
+	  CVS.
+
+2004-03-12 11:19  jeffd
+
+	* packages/: acs-admin/www/apm/packages-install-3.tcl,
+	  acs-content-repository/sql/postgresql/content-folder.sql,
+	  acs-content-repository/sql/postgresql/content-image.sql,
+	  acs-content-repository/sql/postgresql/content-item.sql,
+	  acs-content-repository/sql/postgresql/content-revision.sql,
+	  acs-content-repository/sql/postgresql/content-template.sql,
+	  acs-content-repository/sql/postgresql/content-type.sql,
+	  acs-messaging/sql/postgresql/acs-messaging-packages.sql: various
+	  bug fixes for package_id, title addition to acs_objects
+
+2004-03-12 10:48  jeffd
+
+	* packages/: acs-authentication/tcl/authority-procs.tcl,
+	  acs-authentication/tcl/authority-procs.xql,
+	  acs-content-repository/sql/oracle/content-extlink.sql,
+	  acs-content-repository/sql/oracle/content-folder.sql,
+	  acs-content-repository/sql/oracle/content-image.sql,
+	  acs-content-repository/sql/oracle/content-item.sql,
+	  acs-content-repository/sql/oracle/content-keyword.sql,
+	  acs-content-repository/sql/oracle/content-revision.sql,
+	  acs-content-repository/sql/oracle/content-symlink.sql,
+	  acs-content-repository/sql/oracle/content-template.sql,
+	  acs-content-repository/sql/oracle/packages-create.sql,
+	  acs-content-repository/sql/oracle/upgrade/upgrade-5.1.0d2-5.1.0d3.sql,
+	  acs-content-repository/sql/postgresql/content-extlink.sql,
+	  acs-content-repository/sql/postgresql/content-folder.sql,
+	  acs-content-repository/sql/postgresql/content-image.sql,
+	  acs-content-repository/sql/postgresql/content-item.sql,
+	  acs-content-repository/sql/postgresql/content-keyword.sql,
+	  acs-content-repository/sql/postgresql/content-revision.sql,
+	  acs-content-repository/sql/postgresql/content-symlink.sql,
+	  acs-content-repository/sql/postgresql/content-template.sql,
+	  acs-content-repository/sql/postgresql/upgrade/upgrade-5.1.0d2-5.1.0d3.sql,
+	  acs-content-repository/tcl/extlink-procs-oracle.xql,
+	  acs-content-repository/tcl/extlink-procs-postgresql.xql,
+	  acs-content-repository/tcl/extlink-procs.tcl,
+	  acs-content-repository/tcl/keyword-procs-oracle.xql,
+	  acs-content-repository/tcl/keyword-procs-postgresql.xql,
+	  acs-content-repository/tcl/keyword-procs.tcl,
+	  acs-content-repository/tcl/revision-procs-oracle.xql,
+	  acs-content-repository/tcl/revision-procs-postgresql.xql,
+	  acs-content-repository/tcl/revision-procs.tcl,
+	  acs-content-repository/tcl/symlink-procs-oracle.xql,
+	  acs-content-repository/tcl/symlink-procs-postgresql.xql,
+	  acs-content-repository/tcl/symlink-procs.tcl,
+	  acs-kernel/sql/oracle/acs-create.sql,
+	  acs-kernel/sql/oracle/acs-objects-create.sql,
+	  acs-kernel/sql/oracle/acs-relationships-create.sql,
+	  acs-kernel/sql/oracle/apm-create.sql,
+	  acs-kernel/sql/oracle/authentication-package-create.sql,
+	  acs-kernel/sql/oracle/community-core-create.sql,
+	  acs-kernel/sql/oracle/groups-body-create.sql,
+	  acs-kernel/sql/oracle/journal-create.sql,
+	  acs-kernel/sql/oracle/rel-constraints-body-create.sql,
+	  acs-kernel/sql/oracle/rel-segments-body-create.sql,
+	  acs-kernel/sql/oracle/site-nodes-create.sql,
+	  acs-kernel/sql/postgresql/acs-create.sql,
+	  acs-kernel/sql/postgresql/acs-objects-create.sql,
+	  acs-kernel/sql/postgresql/acs-relationships-create.sql,
+	  acs-kernel/sql/postgresql/apm-create.sql,
+	  acs-kernel/sql/postgresql/authentication-package-create.sql,
+	  acs-kernel/sql/postgresql/community-core-create.sql,
+	  acs-kernel/sql/postgresql/groups-body-create.sql,
+	  acs-kernel/sql/postgresql/journal-create.sql,
+	  acs-kernel/sql/postgresql/rel-constraints-body-create.sql,
+	  acs-kernel/sql/postgresql/rel-segments-body-create.sql,
+	  acs-kernel/sql/postgresql/site-nodes-create.sql,
+	  acs-messaging/sql/oracle/acs-messaging-packages.sql,
+	  acs-messaging/sql/oracle/upgrade/upgrade-5.1.0d1-5.1.0d2.sql,
+	  acs-messaging/sql/postgresql/acs-messaging-drop.sql,
+	  acs-messaging/sql/postgresql/acs-messaging-packages.sql,
+	  acs-messaging/sql/postgresql/upgrade/upgrade-5.1.0d1-5.1.0d2.sql,
+	  acs-reference/sql/oracle/acs-reference-create.sql,
+	  acs-reference/sql/oracle/upgrade/upgrade-5.0.2-5.0.2d1.sql,
+	  acs-reference/sql/postgresql/acs-reference-create.sql,
+	  acs-service-contract/sql/oracle/acs-sc-msg-types-create.sql,
+	  acs-service-contract/sql/oracle/acs-sc-packages-create.sql,
+	  acs-service-contract/sql/oracle/upgrade/upgrade-5.1.0d1-5.1.0d2.sql,
+	  acs-service-contract/sql/postgresql/acs-sc-msg-types-create.sql,
+	  acs-service-contract/sql/postgresql/acs-sc-packages-create.sql,
+	  acs-service-contract/sql/postgresql/upgrade/upgrade-5.1.0d1-5.1.0d2.sql,
+	  acs-subsite/tcl/group-procs.tcl,
+	  acs-subsite/www/admin/rel-segments/edit.tcl,
+	  acs-tcl/tcl/acs-kernel-procs.tcl, acs-tcl/tcl/apm-procs.tcl,
+	  acs-tcl/tcl/apm-procs.xql, acs-tcl/tcl/community-core-procs.tcl,
+	  acs-tcl/tcl/community-core-procs.xql,
+	  acs-tcl/tcl/site-nodes-procs.tcl,
+	  acs-tcl/tcl/site-nodes-procs.xql: Remerge Timo's changes for tip
+	  42,43, cf tip 53
+
+2004-03-12 07:27  peterm
+
+	* packages/acs-lang/tcl/test/acs-lang-test-procs.tcl: adding the
+	  procs flag to the localize test case
+
+2004-03-12 05:44  jeffd
+
+	* readme.txt, packages/acs-admin/acs-admin.info,
+	  packages/acs-api-browser/acs-api-browser.info,
+	  packages/acs-authentication/acs-authentication.info,
+	  packages/acs-authentication/tcl/sync-procs.tcl,
+	  packages/acs-automated-testing/acs-automated-testing.info,
+	  packages/acs-bootstrap-installer/acs-bootstrap-installer.info,
+	  packages/acs-content-repository/acs-content-repository.info,
+	  packages/acs-content-repository/tcl/filter-procs.tcl,
+	  packages/acs-core-docs/acs-core-docs.info,
+	  packages/acs-core-docs/www/xml/developers-guide/i18n.xml,
+	  packages/acs-core-docs/www/xml/for-everyone/release-notes.xml,
+	  packages/acs-core-docs/www/xml/install-guide/maintenance.xml,
+	  packages/acs-core-docs/www/xml/install-guide/openacs.xml,
+	  packages/acs-kernel/acs-kernel.info,
+	  packages/acs-kernel/catalog/acs-kernel.ast_ES.ISO-8859-1.xml,
+	  packages/acs-kernel/catalog/acs-kernel.ch_zh.utf-8.xml,
+	  packages/acs-kernel/catalog/acs-kernel.da_DK.ISO-8859-1.xml,
+	  packages/acs-kernel/catalog/acs-kernel.de_DE.ISO-8859-1.xml,
+	  packages/acs-kernel/catalog/acs-kernel.en_US.ISO-8859-1.xml,
+	  packages/acs-kernel/catalog/acs-kernel.es_ES.ISO-8859-1.xml,
+	  packages/acs-kernel/catalog/acs-kernel.fi_FI.utf-8.xml,
+	  packages/acs-kernel/catalog/acs-kernel.fr_FR.ISO-8859-1.xml,
+	  packages/acs-kernel/catalog/acs-kernel.gl_ES.ISO-8859-1.xml,
+	  packages/acs-kernel/catalog/acs-kernel.hu_HU.utf-8.xml,
+	  packages/acs-kernel/catalog/acs-kernel.it_IT.ISO-8859-1.xml,
+	  packages/acs-kernel/catalog/acs-kernel.ja_JP.utf-8.xml,
+	  packages/acs-kernel/catalog/acs-kernel.ko_KR.utf-8.xml,
+	  packages/acs-kernel/catalog/acs-kernel.nl_NL.ISO-8859-1.xml,
+	  packages/acs-kernel/catalog/acs-kernel.no_NO.ISO-8859-1.xml,
+	  packages/acs-kernel/catalog/acs-kernel.pl_PL.utf-8.xml,
+	  packages/acs-kernel/catalog/acs-kernel.pt_BR.ISO-8859-1.xml,
+	  packages/acs-kernel/catalog/acs-kernel.pt_PT.ISO-8859-1.xml,
+	  packages/acs-kernel/catalog/acs-kernel.ru_RU.utf-8.xml,
+	  packages/acs-kernel/catalog/acs-kernel.sv_SE.ISO-8859-1.xml,
+	  packages/acs-kernel/catalog/acs-kernel.tr_TR.utf-8.xml,
+	  packages/acs-kernel/catalog/acs-kernel.zh_TW.utf-8.xml,
+	  packages/acs-lang/acs-lang.info,
+	  packages/acs-lang/catalog/acs-lang.ast_ES.ISO-8859-1.xml,
+	  packages/acs-lang/catalog/acs-lang.ch_zh.utf-8.xml,
+	  packages/acs-lang/catalog/acs-lang.da_DK.ISO-8859-1.xml,
+	  packages/acs-lang/catalog/acs-lang.de_DE.ISO-8859-1.xml,
+	  packages/acs-lang/catalog/acs-lang.el_GR.utf-8.xml,
+	  packages/acs-lang/catalog/acs-lang.en_GB.ISO-8859-1.xml,
+	  packages/acs-lang/catalog/acs-lang.en_US.ISO-8859-1.xml,
+	  packages/acs-lang/catalog/acs-lang.es_ES.ISO-8859-1.xml,
+	  packages/acs-lang/catalog/acs-lang.fi_FI.utf-8.xml,
+	  packages/acs-lang/catalog/acs-lang.fr_FR.ISO-8859-1.xml,
+	  packages/acs-lang/catalog/acs-lang.gl_ES.ISO-8859-1.xml,
+	  packages/acs-lang/catalog/acs-lang.hu_HU.utf-8.xml,
+	  packages/acs-lang/catalog/acs-lang.it_IT.ISO-8859-1.xml,
+	  packages/acs-lang/catalog/acs-lang.ja_JP.utf-8.xml,
+	  packages/acs-lang/catalog/acs-lang.ko_KR.utf-8.xml,
+	  packages/acs-lang/catalog/acs-lang.nl_NL.ISO-8859-1.xml,
+	  packages/acs-lang/catalog/acs-lang.no_NO.ISO-8859-1.xml,
+	  packages/acs-lang/catalog/acs-lang.pl_PL.utf-8.xml,
+	  packages/acs-lang/catalog/acs-lang.pt_BR.ISO-8859-1.xml,
+	  packages/acs-lang/catalog/acs-lang.pt_PT.ISO-8859-1.xml,
+	  packages/acs-lang/catalog/acs-lang.ru_RU.utf-8.xml,
+	  packages/acs-lang/catalog/acs-lang.sh_HR.utf-8.xml,
+	  packages/acs-lang/catalog/acs-lang.sv_SE.ISO-8859-1.xml,
+	  packages/acs-lang/catalog/acs-lang.tr_TR.utf-8.xml,
+	  packages/acs-lang/catalog/acs-lang.zh_TW.utf-8.xml,
+	  packages/acs-lang/tcl/lang-util-procs.tcl,
+	  packages/acs-lang/tcl/test/acs-lang-test-procs.tcl,
+	  packages/acs-messaging/acs-messaging.info,
+	  packages/acs-reference/acs-reference.info,
+	  packages/acs-service-contract/acs-service-contract.info,
+	  packages/acs-subsite/acs-subsite.info,
+	  packages/acs-subsite/catalog/acs-subsite.ast_ES.ISO-8859-1.xml,
+	  packages/acs-subsite/catalog/acs-subsite.ch_zh.utf-8.xml,
+	  packages/acs-subsite/catalog/acs-subsite.da_DK.ISO-8859-1.xml,
+	  packages/acs-subsite/catalog/acs-subsite.de_DE.ISO-8859-1.xml,
+	  packages/acs-subsite/catalog/acs-subsite.el_GR.utf-8.xml,
+	  packages/acs-subsite/catalog/acs-subsite.en_US.ISO-8859-1.xml,
+	  packages/acs-subsite/catalog/acs-subsite.es_ES.ISO-8859-1.xml,
+	  packages/acs-subsite/catalog/acs-subsite.fi_FI.utf-8.xml,
+	  packages/acs-subsite/catalog/acs-subsite.fr_FR.ISO-8859-1.xml,
+	  packages/acs-subsite/catalog/acs-subsite.gl_ES.ISO-8859-1.xml,
+	  packages/acs-subsite/catalog/acs-subsite.hu_HU.utf-8.xml,
+	  packages/acs-subsite/catalog/acs-subsite.it_IT.ISO-8859-1.xml,
+	  packages/acs-subsite/catalog/acs-subsite.ja_JP.utf-8.xml,
+	  packages/acs-subsite/catalog/acs-subsite.ko_KR.utf-8.xml,
+	  packages/acs-subsite/catalog/acs-subsite.nl_NL.ISO-8859-1.xml,
+	  packages/acs-subsite/catalog/acs-subsite.no_NO.ISO-8859-1.xml,
+	  packages/acs-subsite/catalog/acs-subsite.pl_PL.utf-8.xml,
+	  packages/acs-subsite/catalog/acs-subsite.pt_BR.ISO-8859-1.xml,
+	  packages/acs-subsite/catalog/acs-subsite.pt_PT.ISO-8859-1.xml,
+	  packages/acs-subsite/catalog/acs-subsite.ru_RU.utf-8.xml,
+	  packages/acs-subsite/catalog/acs-subsite.sh_HR.utf-8.xml,
+	  packages/acs-subsite/catalog/acs-subsite.sv_SE.ISO-8859-1.xml,
+	  packages/acs-subsite/catalog/acs-subsite.tr_TR.utf-8.xml,
+	  packages/acs-subsite/catalog/acs-subsite.zh_TW.utf-8.xml,
+	  packages/acs-subsite/www/index.adp,
+	  packages/acs-subsite/www/permissions/grant.tcl,
+	  packages/acs-subsite/www/resources/site-master.css,
+	  packages/acs-tcl/acs-tcl.info,
+	  packages/acs-tcl/catalog/acs-tcl.ast_ES.ISO-8859-1.xml,
+	  packages/acs-tcl/catalog/acs-tcl.ch_zh.utf-8.xml,
+	  packages/acs-tcl/catalog/acs-tcl.da_DK.ISO-8859-1.xml,
+	  packages/acs-tcl/catalog/acs-tcl.de_DE.ISO-8859-1.xml,
+	  packages/acs-tcl/catalog/acs-tcl.en_US.ISO-8859-1.xml,
+	  packages/acs-tcl/catalog/acs-tcl.es_ES.ISO-8859-1.xml,
+	  packages/acs-tcl/catalog/acs-tcl.fi_FI.utf-8.xml,
+	  packages/acs-tcl/catalog/acs-tcl.fr_FR.ISO-8859-1.xml,
+	  packages/acs-tcl/catalog/acs-tcl.gl_ES.ISO-8859-1.xml,
+	  packages/acs-tcl/catalog/acs-tcl.hu_HU.utf-8.xml,
+	  packages/acs-tcl/catalog/acs-tcl.it_IT.ISO-8859-1.xml,
+	  packages/acs-tcl/catalog/acs-tcl.ja_JP.utf-8.xml,
+	  packages/acs-tcl/catalog/acs-tcl.ko_KR.utf-8.xml,
+	  packages/acs-tcl/catalog/acs-tcl.nl_NL.ISO-8859-1.xml,
+	  packages/acs-tcl/catalog/acs-tcl.no_NO.ISO-8859-1.xml,
+	  packages/acs-tcl/catalog/acs-tcl.pl_PL.utf-8.xml,
+	  packages/acs-tcl/catalog/acs-tcl.pt_BR.ISO-8859-1.xml,
+	  packages/acs-tcl/catalog/acs-tcl.pt_PT.ISO-8859-1.xml,
+	  packages/acs-tcl/catalog/acs-tcl.ru_RU.utf-8.xml,
+	  packages/acs-tcl/catalog/acs-tcl.sh_HR.utf-8.xml,
+	  packages/acs-tcl/catalog/acs-tcl.sv_SE.ISO-8859-1.xml,
+	  packages/acs-tcl/catalog/acs-tcl.tr_TR.utf-8.xml,
+	  packages/acs-tcl/catalog/acs-tcl.zh_TW.utf-8.xml,
+	  packages/acs-tcl/tcl/security-procs.tcl,
+	  packages/acs-templating/acs-templating.info,
+	  packages/acs-templating/catalog/acs-templating.ch_zh.utf-8.xml,
+	  packages/acs-templating/catalog/acs-templating.da_DK.ISO-8859-1.xml,
+	  packages/acs-templating/catalog/acs-templating.de_DE.ISO-8859-1.xml,
+	  packages/acs-templating/catalog/acs-templating.en_US.ISO-8859-1.xml,
+	  packages/acs-templating/catalog/acs-templating.es_ES.ISO-8859-1.xml,
+	  packages/acs-templating/catalog/acs-templating.fr_FR.ISO-8859-1.xml,
+	  packages/acs-templating/catalog/acs-templating.hu_HU.utf-8.xml,
+	  packages/acs-templating/catalog/acs-templating.it_IT.ISO-8859-1.xml,
+	  packages/acs-templating/catalog/acs-templating.ko_KR.utf-8.xml,
+	  packages/acs-templating/catalog/acs-templating.nl_NL.ISO-8859-1.xml,
+	  packages/acs-templating/catalog/acs-templating.pt_BR.ISO-8859-1.xml,
+	  packages/ref-timezones/ref-timezones.info,
+	  packages/search/search.info, www/SYSTEM/security-debug.tcl: merge
+	  the changes between 5.0.3 and 5.0.4 to head
+
+2004-03-12 04:53  joela
+
+	* etc/backup.sh: fixed a few more bash bugs
+
+2004-03-12 04:36  joela
+
+	* etc/backup.sh: reduced list of default DIRECTIORIES
+
+2004-03-12 02:13  lars
+
+	* packages/acs-templating/tcl/form-procs.tcl: ad_form forms can be
+	  not completed, particularly if the target is not the same page
+	  that has the form. Reverting change to throw error. People are on
+	  their own now.
+
+2004-03-11 07:34  joela
+
+	* packages/acs-core-docs/www/: how-do-I.html,
+	  xml/install-guide/configuring.xml: added permissions sections
+
+2004-03-11 07:29  joela
+
+	* packages/acs-core-docs/www/how-do-I.html: added permissions
+	  sections
+
+2004-03-11 07:29  joela
+
+	* packages/acs-core-docs/www/xml/install-guide/configuring.xml:
+	  added permissions granting section
+
+2004-03-11 07:27  joela
+
+	* packages/acs-core-docs/www/images/: grant-perm-463.png,
+	  grant-perm-50.png: added permissions screenshots
+
+2004-03-11 01:17  joela
+
+	* packages/acs-core-docs/www/: releasing-openacs-core.html,
+	  releasing-package.html, update-translations.html: added notes and
+	  suggestions from .LRN 2.0.2 release process
+
+2004-03-11 01:16  joela
+
+	* packages/acs-core-docs/www/xml/releasing-openacs.xml: added notes
+	  and suggestions from .LRN 2.0.2 release
+
+2004-03-10 08:26  jeffd
+
+	* packages/acs-tcl/tcl/: acs-kernel-procs.tcl,
+	  request-processor-procs.tcl: define util_memoize and
+	  ad_acs_kernel_id with proc rather than ad_proc to avoid the
+	  multiple def warning bug 1466
+
+2004-03-10 05:46  joela
+
+	* packages/notifications/catalog/:
+	  notifications.nl_NL.ISO-8859-1.xml,
+	  notifications.sv_SE.ISO-8859-1.xml: added new keys
+
+2004-03-10 02:14  lars
+
+	* packages/acs-templating/tcl/form-procs.tcl: If ad_form forms
+	  aren't finished, throw an error
+
+2004-03-10 02:13  lars
+
+	* packages/acs-tcl/tcl/form-processing-procs.tcl: Added doc to
+	  ad_form about its two modes: declare and execute
+
+2004-03-09 19:49  jader
+
+	* packages/acs-core-docs/www/xml/install-guide/upgrade.xml:
+	  Clarified that if you change the port, you need to set an
+	  environmental variable PGPORT in postgres73 and each user.
+	  Otherwise, you'll get mysterious, weird errors, and waste lots of
+	  time and cuss a lot.
+
+2004-03-09 10:02  joela
+
+	* packages/: acs-lang/catalog/acs-lang.ast_ES.ISO-8859-1.xml,
+	  acs-lang/catalog/acs-lang.ch_zh.utf-8.xml,
+	  acs-lang/catalog/acs-lang.da_DK.ISO-8859-1.xml,
+	  acs-lang/catalog/acs-lang.de_DE.ISO-8859-1.xml,
+	  acs-lang/catalog/acs-lang.el_GR.utf-8.xml,
+	  acs-lang/catalog/acs-lang.en_GB.ISO-8859-1.xml,
+	  acs-lang/catalog/acs-lang.en_US.ISO-8859-1.xml,
+	  acs-lang/catalog/acs-lang.es_ES.ISO-8859-1.xml,
+	  acs-lang/catalog/acs-lang.fi_FI.utf-8.xml,
+	  acs-lang/catalog/acs-lang.fr_FR.ISO-8859-1.xml,
+	  acs-lang/catalog/acs-lang.gl_ES.ISO-8859-1.xml,
+	  acs-lang/catalog/acs-lang.hu_HU.utf-8.xml,
+	  acs-lang/catalog/acs-lang.it_IT.ISO-8859-1.xml,
+	  acs-lang/catalog/acs-lang.ja_JP.utf-8.xml,
+	  acs-lang/catalog/acs-lang.ko_KR.utf-8.xml,
+	  acs-lang/catalog/acs-lang.nl_NL.ISO-8859-1.xml,
+	  acs-lang/catalog/acs-lang.no_NO.ISO-8859-1.xml,
+	  acs-lang/catalog/acs-lang.pl_PL.utf-8.xml,
+	  acs-lang/catalog/acs-lang.pt_BR.ISO-8859-1.xml,
+	  acs-lang/catalog/acs-lang.pt_PT.ISO-8859-1.xml,
+	  acs-lang/catalog/acs-lang.ru_RU.utf-8.xml,
+	  acs-lang/catalog/acs-lang.sh_HR.utf-8.xml,
+	  acs-lang/catalog/acs-lang.sv_SE.ISO-8859-1.xml,
+	  acs-lang/catalog/acs-lang.tr_TR.utf-8.xml,
+	  acs-lang/catalog/acs-lang.zh_TW.utf-8.xml,
+	  acs-kernel/catalog/acs-kernel.ast_ES.ISO-8859-1.xml,
+	  acs-kernel/catalog/acs-kernel.ch_zh.utf-8.xml,
+	  acs-kernel/catalog/acs-kernel.da_DK.ISO-8859-1.xml,
+	  acs-kernel/catalog/acs-kernel.de_DE.ISO-8859-1.xml,
+	  acs-kernel/catalog/acs-kernel.en_US.ISO-8859-1.xml,
+	  acs-kernel/catalog/acs-kernel.es_ES.ISO-8859-1.xml,
+	  acs-kernel/catalog/acs-kernel.fi_FI.utf-8.xml,
+	  acs-kernel/catalog/acs-kernel.fr_FR.ISO-8859-1.xml,
+	  acs-kernel/catalog/acs-kernel.gl_ES.ISO-8859-1.xml,
+	  acs-kernel/catalog/acs-kernel.hu_HU.utf-8.xml,
+	  acs-kernel/catalog/acs-kernel.it_IT.ISO-8859-1.xml,
+	  acs-kernel/catalog/acs-kernel.ja_JP.utf-8.xml,
+	  acs-kernel/catalog/acs-kernel.ko_KR.utf-8.xml,
+	  acs-kernel/catalog/acs-kernel.nl_NL.ISO-8859-1.xml,
+	  acs-kernel/catalog/acs-kernel.no_NO.ISO-8859-1.xml,
+	  acs-kernel/catalog/acs-kernel.pl_PL.utf-8.xml,
+	  acs-kernel/catalog/acs-kernel.pt_BR.ISO-8859-1.xml,
+	  acs-kernel/catalog/acs-kernel.pt_PT.ISO-8859-1.xml,
+	  acs-kernel/catalog/acs-kernel.ru_RU.utf-8.xml,
+	  acs-kernel/catalog/acs-kernel.sv_SE.ISO-8859-1.xml,
+	  acs-kernel/catalog/acs-kernel.tr_TR.utf-8.xml,
+	  acs-kernel/catalog/acs-kernel.zh_TW.utf-8.xml,
+	  acs-subsite/catalog/acs-subsite.ast_ES.ISO-8859-1.xml,
+	  acs-subsite/catalog/acs-subsite.ch_zh.utf-8.xml,
+	  acs-subsite/catalog/acs-subsite.da_DK.ISO-8859-1.xml,
+	  acs-subsite/catalog/acs-subsite.de_DE.ISO-8859-1.xml,
+	  acs-subsite/catalog/acs-subsite.el_GR.utf-8.xml,
+	  acs-subsite/catalog/acs-subsite.en_US.ISO-8859-1.xml,
+	  acs-subsite/catalog/acs-subsite.es_ES.ISO-8859-1.xml,
+	  acs-subsite/catalog/acs-subsite.fi_FI.utf-8.xml,
+	  acs-subsite/catalog/acs-subsite.fr_FR.ISO-8859-1.xml,
+	  acs-subsite/catalog/acs-subsite.gl_ES.ISO-8859-1.xml,
+	  acs-subsite/catalog/acs-subsite.hu_HU.utf-8.xml,
+	  acs-subsite/catalog/acs-subsite.it_IT.ISO-8859-1.xml,
+	  acs-subsite/catalog/acs-subsite.ja_JP.utf-8.xml,
+	  acs-subsite/catalog/acs-subsite.ko_KR.utf-8.xml,
+	  acs-subsite/catalog/acs-subsite.nl_NL.ISO-8859-1.xml,
+	  acs-subsite/catalog/acs-subsite.no_NO.ISO-8859-1.xml,
+	  acs-subsite/catalog/acs-subsite.pl_PL.utf-8.xml,
+	  acs-subsite/catalog/acs-subsite.pt_BR.ISO-8859-1.xml,
+	  acs-subsite/catalog/acs-subsite.pt_PT.ISO-8859-1.xml,
+	  acs-subsite/catalog/acs-subsite.ru_RU.utf-8.xml,
+	  acs-subsite/catalog/acs-subsite.sh_HR.utf-8.xml,
+	  acs-subsite/catalog/acs-subsite.sv_SE.ISO-8859-1.xml,
+	  acs-subsite/catalog/acs-subsite.tr_TR.utf-8.xml,
+	  acs-subsite/catalog/acs-subsite.zh_TW.utf-8.xml,
+	  acs-tcl/catalog/acs-tcl.ast_ES.ISO-8859-1.xml,
+	  acs-tcl/catalog/acs-tcl.ch_zh.utf-8.xml,
+	  acs-tcl/catalog/acs-tcl.da_DK.ISO-8859-1.xml,
+	  acs-tcl/catalog/acs-tcl.de_DE.ISO-8859-1.xml,
+	  acs-tcl/catalog/acs-tcl.en_US.ISO-8859-1.xml,
+	  acs-tcl/catalog/acs-tcl.es_ES.ISO-8859-1.xml,
+	  acs-tcl/catalog/acs-tcl.fi_FI.utf-8.xml,
+	  acs-tcl/catalog/acs-tcl.fr_FR.ISO-8859-1.xml,
+	  acs-tcl/catalog/acs-tcl.gl_ES.ISO-8859-1.xml,
+	  acs-tcl/catalog/acs-tcl.hu_HU.utf-8.xml,
+	  acs-tcl/catalog/acs-tcl.it_IT.ISO-8859-1.xml,
+	  acs-tcl/catalog/acs-tcl.ja_JP.utf-8.xml,
+	  acs-tcl/catalog/acs-tcl.ko_KR.utf-8.xml,
+	  acs-tcl/catalog/acs-tcl.nl_NL.ISO-8859-1.xml,
+	  acs-tcl/catalog/acs-tcl.no_NO.ISO-8859-1.xml,
+	  acs-tcl/catalog/acs-tcl.pl_PL.utf-8.xml,
+	  acs-tcl/catalog/acs-tcl.pt_BR.ISO-8859-1.xml,
+	  acs-tcl/catalog/acs-tcl.pt_PT.ISO-8859-1.xml,
+	  acs-tcl/catalog/acs-tcl.ru_RU.utf-8.xml,
+	  acs-tcl/catalog/acs-tcl.sh_HR.utf-8.xml,
+	  acs-tcl/catalog/acs-tcl.sv_SE.ISO-8859-1.xml,
+	  acs-tcl/catalog/acs-tcl.tr_TR.utf-8.xml,
+	  acs-tcl/catalog/acs-tcl.zh_TW.utf-8.xml,
+	  acs-templating/catalog/acs-templating.ch_zh.utf-8.xml,
+	  acs-templating/catalog/acs-templating.da_DK.ISO-8859-1.xml,
+	  acs-templating/catalog/acs-templating.de_DE.ISO-8859-1.xml,
+	  acs-templating/catalog/acs-templating.en_US.ISO-8859-1.xml,
+	  acs-templating/catalog/acs-templating.es_ES.ISO-8859-1.xml,
+	  acs-templating/catalog/acs-templating.fr_FR.ISO-8859-1.xml,
+	  acs-templating/catalog/acs-templating.hu_HU.utf-8.xml,
+	  acs-templating/catalog/acs-templating.it_IT.ISO-8859-1.xml,
+	  acs-templating/catalog/acs-templating.ko_KR.utf-8.xml,
+	  acs-templating/catalog/acs-templating.nl_NL.ISO-8859-1.xml,
+	  acs-templating/catalog/acs-templating.pt_BR.ISO-8859-1.xml,
+	  notifications/catalog/notifications.ast_ES.ISO-8859-1.xml,
+	  notifications/catalog/notifications.ch_zh.utf-8.xml,
+	  notifications/catalog/notifications.da_DK.ISO-8859-1.xml,
+	  notifications/catalog/notifications.de_DE.ISO-8859-1.xml,
+	  notifications/catalog/notifications.en_US.ISO-8859-1.xml,
+	  notifications/catalog/notifications.es_ES.ISO-8859-1.xml,
+	  notifications/catalog/notifications.fi_FI.utf-8.xml,
+	  notifications/catalog/notifications.fr_FR.ISO-8859-1.xml,
+	  notifications/catalog/notifications.gl_ES.ISO-8859-1.xml,
+	  notifications/catalog/notifications.hu_HU.utf-8.xml,
+	  notifications/catalog/notifications.it_IT.ISO-8859-1.xml,
+	  notifications/catalog/notifications.ko_KR.utf-8.xml,
+	  notifications/catalog/notifications.nl_NL.ISO-8859-1.xml,
+	  notifications/catalog/notifications.no_NO.ISO-8859-1.xml,
+	  notifications/catalog/notifications.pl_PL.utf-8.xml,
+	  notifications/catalog/notifications.pt_BR.ISO-8859-1.xml,
+	  notifications/catalog/notifications.pt_PT.ISO-8859-1.xml,
+	  notifications/catalog/notifications.ru_RU.utf-8.xml,
+	  notifications/catalog/notifications.sv_SE.ISO-8859-1.xml: added
+	  new keys
+
+2004-03-09 09:41  joela
+
+	* packages/acs-templating/catalog/:
+	  acs-templating.sv_SE.ISO-8859-1.xml,
+	  acs-templating.zh_TW.utf-8.xml: added new catalogs
+
+2004-03-08 06:07  leed
+
+	* packages/acs-tcl/tcl/community-core-procs.tcl: Fixed bug #1612
+
+2004-03-08 04:34  maltes
+
+	* packages/notifications/sql/postgresql/: notifications-drop.sql,
+	  notifications-replies-drop.sql: Notification Replies where not
+	  dropped.
+
+2004-03-08 02:30  joela
+
+	* packages/acs-core-docs/www/index.adp: fixed a spacing typo
+
+2004-03-06 17:00  donb
+
+	* packages/acs-tcl/lib/: ad-return-complaint.adp, complain.adp:
+	  Lars changed ad_page_contract to call the &quot;complain&quot; template
+	  rather than spit out HTML directly.  However he used a multirow,
+	  and while this is nice, it ain't what &quot;complain&quot; took.  I moved
+	  &quot;complain&quot; to &quot;ad-return-complaint&quot; (to match the name of the Tcl
+	  proc that calls it) ... and created a new &quot;complain&quot; that does
+	  the multirow thing.  &quot;ad_return_complaint&quot; is begging for
+	  retirement as it assumes you have an &quot;&lt;li&gt;&quot; in each error list
+	  element if there's more than one of them and also forces you to
+	  pass the number of error messages.
+
+	  That's why I created a new template rather than rewrite
+	  ad_return_complaint to stuff the error list into a multirow (my
+	  &quot;complain&quot; template, used by &quot;ad_page_contract&quot;, does the &lt;li&gt;
+	  tags itself - something a site designer can change, the whole
+	  point of templating this).
+
+2004-03-06 04:40  lars
+
+	* packages/acs-subsite/www/group-master.adp: Fixed bug: Pass up
+	  context
+
+2004-03-05 16:18  donb
+
+	* packages/acs-subsite/www/admin/site-map/instance-delete.tcl:
+	  Fixed a small problem which led to a &quot;URL not found&quot; error if you
+	  deleted a subsite from within its own sitemap.
+
+2004-03-05 08:30  andrewg
+
 	*
-	  packages/acs-kernel/sql/postgresql/upgrade/upgrade-5.2.0d1-5.2.0d2.sql:
-	  Fix apm_package__new on upgrade to match new install
+	  packages/acs-service-contract/tcl/acs-service-contract-procs-oracle.xql:
+	  Fixing this query.
 
-2006-01-02 05:59  daveb
+2004-03-04 20:21  marka
 
-	* packages/acs-content-repository/acs-content-repository.info: Bump
-	  to corect version number.
+	* packages/acs-subsite/www/resources/site-master.css: added clear:
+	  left; to the style for breadcrumb.  The requirement is only
+	  apparent in mozilla - since the font sizing etc there makes the
+	  sitename text sit a little lower, the lhs of the breadcrumb would
+	  alignt with the rhs of the sitename. note that the design
+	  requires it in all css implementations to be correct, and it will
+	  do no harm...
 
-2006-01-01 15:37  gustafn
+2004-03-04 10:41  lars
 
-	* packages/acs-templating/www/resources/xinha-nightly/: lang/sh.js,
-	  lang/sr.js, plugins/InsertSnippet/InsertSnippet.css,
-	  plugins/InsertSnippet/insert-snippet.js,
-	  plugins/InsertSnippet/snippets.html,
-	  plugins/InsertSnippet/snippets.js,
-	  plugins/InsertSnippet/snippets.php,
-	  plugins/InsertSnippet/img/ed_snippet.gif,
-	  plugins/InsertSnippet/lang/de.js,
-	  plugins/InsertSnippet/popups/insertsnippet.html: adding new files
-	  of xinha nightly (new plugin InsertSnippet)
+	* packages/acs-templating/: acs-templating.info,
+	  tcl/richtext-procs.tcl: Added support for htmlArea to richtext
+	  widget. Controlled by the UseHtmlAreaForRichtextP parameter,
+	  which currently defaults to 'false', because the user doesn't
+	  have a way to turn it off yet, and it doesn't work in all
+	  browsers.
 
-2006-01-01 15:28  gustafn
+2004-03-04 10:33  lars
 
-	* packages/acs-templating/www/resources/xinha-nightly/: dialog.js,
-	  examples/Extended.html, examples/ext_example-body.html,
-	  examples/ext_example-menu.php, examples/ext_example.html,
-	  plugins/CSS/css.js, plugins/CharCounter/char-counter.js,
-	  plugins/CharacterMap/character-map.js,
-	  plugins/ContextMenu/context-menu.js,
-	  plugins/ContextMenu/lang/no.js, plugins/Equation/equation.js,
-	  plugins/Equation/lang/no.js, plugins/FullPage/full-page.js,
-	  plugins/GetHtml/get-html.js, plugins/HtmlTidy/lang/no.js,
-	  plugins/ImageManager/config.inc.php,
-	  plugins/ImageManager/editor.php,
-	  plugins/ImageManager/editorFrame.php,
-	  plugins/ImageManager/image-manager.js,
-	  plugins/ImageManager/images.php,
-	  plugins/ImageManager/manager.php,
-	  plugins/ImageManager/resizer.php,
-	  plugins/ImageManager/thumbs.php,
-	  plugins/ImageManager/Classes/Files.php,
-	  plugins/ImageManager/Classes/GD.php,
-	  plugins/ImageManager/Classes/IM.php,
-	  plugins/ImageManager/Classes/ImageEditor.php,
-	  plugins/ImageManager/Classes/ImageManager.php,
-	  plugins/ImageManager/Classes/NetPBM.php,
-	  plugins/ImageManager/Classes/Thumbnail.php,
-	  plugins/ImageManager/Classes/Transform.php,
-	  plugins/ImageManager/assets/dialog.js,
-	  plugins/ImageManager/assets/editor.js,
-	  plugins/ImageManager/assets/editorFrame.js,
-	  plugins/ImageManager/assets/images.js,
-	  plugins/ImageManager/assets/manager.js,
-	  plugins/ImageManager/assets/popup.js,
-	  plugins/InsertAnchor/lang/no.js,
-	  plugins/InsertPicture/InsertPicture.php,
-	  plugins/InsertPicture/insert-picture.js,
-	  plugins/InsertPicture/lang/de.js,
-	  plugins/InsertPicture/lang/no.js, plugins/Linker/linker.js,
-	  plugins/ListType/list-type.js, plugins/ListType/lang/no.js,
-	  plugins/NoteServer/lang/no.js,
-	  plugins/OacsFs/popups/file-selector.tcl,
-	  plugins/QuickTag/lang/no.js,
-	  plugins/SpellChecker/aspell_setup.php,
+	* packages/acs-subsite/www/resources/core.js: Configure HTMLarea to
+	  have the right root directory
+
+2004-03-04 10:32  lars
+
+	* www/: blank-master.adp, blank-master.tcl: Added support for
+	  htmlArea to blank-master
+
+2004-03-04 10:32  lars
+
+	* packages/acs-templating/www/resources/htmlarea/: dialog.js,
+	  htmlarea.css, htmlarea.js, index.html, license.txt, popupdiv.js,
+	  popupwin.js, reference.html, release-notes.html,
+	  images/ed_about.gif, images/ed_align_center.gif,
+	  images/ed_align_justify.gif, images/ed_align_left.gif,
+	  images/ed_align_right.gif, images/ed_blank.gif,
+	  images/ed_charmap.gif, images/ed_color_bg.gif,
+	  images/ed_color_fg.gif, images/ed_copy.gif, images/ed_custom.gif,
+	  images/ed_cut.gif, images/ed_delete.gif,
+	  images/ed_format_bold.gif, images/ed_format_italic.gif,
+	  images/ed_format_strike.gif, images/ed_format_sub.gif,
+	  images/ed_format_sup.gif, images/ed_format_underline.gif,
+	  images/ed_help.gif, images/ed_hr.gif, images/ed_html.gif,
+	  images/ed_image.gif, images/ed_indent_less.gif,
+	  images/ed_indent_more.gif, images/ed_link.gif,
+	  images/ed_list_bullet.gif, images/ed_list_num.gif,
+	  images/ed_paste.gif, images/ed_redo.gif,
+	  images/ed_show_border.gif, images/ed_splitcel.gif,
+	  images/ed_undo.gif, images/fullscreen_maximize.gif,
+	  images/fullscreen_minimize.gif, images/insert_table.gif,
+	  lang/b5.js, lang/da.js, lang/de.js, lang/en.js, lang/es.js,
+	  lang/fi.js, lang/fr.js, lang/gb.js, lang/it.js, lang/ja-euc.js,
+	  lang/ja-jis.js, lang/ja-sjis.js, lang/ja-utf8.js, lang/nb.js,
+	  lang/nl.js, lang/pl.js, lang/pt_br.js, lang/ro.js, lang/ru.js,
+	  lang/se.js, lang/vn.js, plugins/SpellChecker/readme-tech.html,
 	  plugins/SpellChecker/spell-check-logic.cgi,
+	  plugins/SpellChecker/spell-check-style.css,
 	  plugins/SpellChecker/spell-check-ui.html,
 	  plugins/SpellChecker/spell-check-ui.js,
 	  plugins/SpellChecker/spell-checker.js,
-	  plugins/SpellChecker/lang/no.js, plugins/SuperClean/lang/no.js,
-	  plugins/TableOperations/table-operations.js, popups/about.html,
-	  popups/popup.js, skins/blue-metallic/skin.css: upgrade to the
-	  current xinha-nightly version
+	  plugins/SpellChecker/img/spell-check.gif,
+	  plugins/SpellChecker/lang/en.js, plugins/SpellChecker/lang/ro.js,
+	  plugins/TableOperations/table-operations.js,
+	  plugins/TableOperations/img/cell-delete.gif,
+	  plugins/TableOperations/img/cell-insert-after.gif,
+	  plugins/TableOperations/img/cell-insert-before.gif,
+	  plugins/TableOperations/img/cell-merge.gif,
+	  plugins/TableOperations/img/cell-prop.gif,
+	  plugins/TableOperations/img/cell-split.gif,
+	  plugins/TableOperations/img/col-delete.gif,
+	  plugins/TableOperations/img/col-insert-after.gif,
+	  plugins/TableOperations/img/col-insert-before.gif,
+	  plugins/TableOperations/img/col-split.gif,
+	  plugins/TableOperations/img/row-delete.gif,
+	  plugins/TableOperations/img/row-insert-above.gif,
+	  plugins/TableOperations/img/row-insert-under.gif,
+	  plugins/TableOperations/img/row-prop.gif,
+	  plugins/TableOperations/img/row-split.gif,
+	  plugins/TableOperations/img/table-prop.gif,
+	  plugins/TableOperations/lang/en.js,
+	  plugins/TableOperations/lang/fi.js,
+	  plugins/TableOperations/lang/ro.js, popups/about.html,
+	  popups/blank.html, popups/custom2.html, popups/editor_help.html,
+	  popups/fullscreen.html, popups/insert_image.html,
+	  popups/insert_table.html, popups/old-fullscreen.html,
+	  popups/old_insert_image.html, popups/popup.js,
+	  popups/select_color.html: Added htmlArea 3.0 beta to OpenACS
 
-2005-12-29 03:57  maltes
+2004-03-04 10:00  lars
 
-	* packages/acs-kernel/catalog/: acs-kernel.ar_LB.utf-8.xml,
-	  acs-kernel.da_DK.ISO-8859-1.xml, acs-kernel.de_DE.ISO-8859-1.xml,
-	  acs-kernel.en_US.ISO-8859-1.xml, acs-kernel.fr_FR.ISO-8859-1.xml:
-	  Updated translations and fixed two strings in English
+	* packages/acs-admin/lib/: developer-services.adp,
+	  developer-services.tcl: Added link to developer-support, if
+	  installed
 
-2005-12-29 03:46  maltes
+2004-03-04 09:50  lars
 
-	* packages/acs-content-repository/acs-content-repository.info:
-	  Error in the requires section
+	* www/blank-master.tcl: Removed references to bgcolor, textcolor,
+	  background
 
-2005-12-29 02:07  maltes
+2004-03-04 09:45  lars
 
-	* etc/config.tcl: Added check for libthread library
+	* www/site-master.adp: Changed ordering of site-mater CSS and
+	  header_stuff, to allow pages to override things in
+	  site-master.css
 
-2005-12-28 17:27  daveb
+2004-03-04 06:52  jeffd
 
-	* packages/acs-content-repository/acs-content-repository.info:
-	  Update info file so new upgrade script will run.
+	* packages/: acs-authentication/tcl/authority-procs.tcl,
+	  acs-authentication/tcl/authority-procs.xql,
+	  acs-content-repository/sql/oracle/content-extlink.sql,
+	  acs-content-repository/sql/oracle/content-folder.sql,
+	  acs-content-repository/sql/oracle/content-image.sql,
+	  acs-content-repository/sql/oracle/content-item.sql,
+	  acs-content-repository/sql/oracle/content-keyword.sql,
+	  acs-content-repository/sql/oracle/content-revision.sql,
+	  acs-content-repository/sql/oracle/content-symlink.sql,
+	  acs-content-repository/sql/oracle/content-template.sql,
+	  acs-content-repository/sql/oracle/packages-create.sql,
+	  acs-content-repository/sql/oracle/upgrade/upgrade-5.1.0d2-5.1.0d3.sql,
+	  acs-content-repository/sql/postgresql/content-extlink.sql,
+	  acs-content-repository/sql/postgresql/content-folder.sql,
+	  acs-content-repository/sql/postgresql/content-image.sql,
+	  acs-content-repository/sql/postgresql/content-item.sql,
+	  acs-content-repository/sql/postgresql/content-keyword.sql,
+	  acs-content-repository/sql/postgresql/content-revision.sql,
+	  acs-content-repository/sql/postgresql/content-symlink.sql,
+	  acs-content-repository/sql/postgresql/content-template.sql,
+	  acs-content-repository/sql/postgresql/upgrade/upgrade-5.1.0d2-5.1.0d3.sql,
+	  acs-content-repository/tcl/extlink-procs-oracle.xql,
+	  acs-content-repository/tcl/extlink-procs-postgresql.xql,
+	  acs-content-repository/tcl/extlink-procs.tcl,
+	  acs-content-repository/tcl/keyword-procs-oracle.xql,
+	  acs-content-repository/tcl/keyword-procs-postgresql.xql,
+	  acs-content-repository/tcl/keyword-procs.tcl,
+	  acs-content-repository/tcl/revision-procs-oracle.xql,
+	  acs-content-repository/tcl/revision-procs-postgresql.xql,
+	  acs-content-repository/tcl/revision-procs.tcl,
+	  acs-content-repository/tcl/symlink-procs-oracle.xql,
+	  acs-content-repository/tcl/symlink-procs-postgresql.xql,
+	  acs-content-repository/tcl/symlink-procs.tcl,
+	  acs-kernel/sql/oracle/acs-create.sql,
+	  acs-kernel/sql/oracle/acs-objects-create.sql,
+	  acs-kernel/sql/oracle/acs-relationships-create.sql,
+	  acs-kernel/sql/oracle/apm-create.sql,
+	  acs-kernel/sql/oracle/authentication-package-create.sql,
+	  acs-kernel/sql/oracle/community-core-create.sql,
+	  acs-kernel/sql/oracle/groups-body-create.sql,
+	  acs-kernel/sql/oracle/journal-create.sql,
+	  acs-kernel/sql/oracle/rel-constraints-body-create.sql,
+	  acs-kernel/sql/oracle/rel-segments-body-create.sql,
+	  acs-kernel/sql/oracle/site-nodes-create.sql,
+	  acs-kernel/sql/postgresql/acs-create.sql,
+	  acs-kernel/sql/postgresql/acs-objects-create.sql,
+	  acs-kernel/sql/postgresql/acs-relationships-create.sql,
+	  acs-kernel/sql/postgresql/apm-create.sql,
+	  acs-kernel/sql/postgresql/authentication-package-create.sql,
+	  acs-kernel/sql/postgresql/community-core-create.sql,
+	  acs-kernel/sql/postgresql/groups-body-create.sql,
+	  acs-kernel/sql/postgresql/journal-create.sql,
+	  acs-kernel/sql/postgresql/rel-constraints-body-create.sql,
+	  acs-kernel/sql/postgresql/rel-segments-body-create.sql,
+	  acs-kernel/sql/postgresql/site-nodes-create.sql,
+	  acs-messaging/sql/oracle/acs-messaging-packages.sql,
+	  acs-messaging/sql/oracle/upgrade/upgrade-5.1.0d1-5.1.0d2.sql,
+	  acs-messaging/sql/postgresql/acs-messaging-drop.sql,
+	  acs-messaging/sql/postgresql/acs-messaging-packages.sql,
+	  acs-messaging/sql/postgresql/upgrade/upgrade-5.1.0d1-5.1.0d2.sql,
+	  acs-reference/sql/oracle/acs-reference-create.sql,
+	  acs-reference/sql/oracle/upgrade/upgrade-5.0.2-5.0.2d1.sql,
+	  acs-reference/sql/postgresql/acs-reference-create.sql,
+	  acs-service-contract/sql/oracle/acs-sc-msg-types-create.sql,
+	  acs-service-contract/sql/oracle/acs-sc-packages-create.sql,
+	  acs-service-contract/sql/oracle/upgrade/upgrade-5.1.0d1-5.1.0d2.sql,
+	  acs-service-contract/sql/postgresql/acs-sc-msg-types-create.sql,
+	  acs-service-contract/sql/postgresql/acs-sc-packages-create.sql,
+	  acs-service-contract/sql/postgresql/upgrade/upgrade-5.1.0d1-5.1.0d2.sql,
+	  acs-subsite/tcl/group-procs.tcl,
+	  acs-subsite/www/admin/rel-segments/edit.tcl,
+	  acs-tcl/tcl/apm-procs.tcl, acs-tcl/tcl/apm-procs.xql,
+	  acs-tcl/tcl/community-core-procs.tcl,
+	  acs-tcl/tcl/community-core-procs.xql,
+	  acs-tcl/tcl/site-nodes-procs.tcl,
+	  acs-tcl/tcl/site-nodes-procs.xql: rollback of Timo's name,
+	  package_id commit; see TIP 53
 
-2005-12-28 17:24  daveb
+2004-03-04 06:13  joela
 
-	* packages/acs-content-repository/sql/: oracle/content-create.sql,
-	  oracle/content-folder.sql, oracle/content-item.sql,
-	  postgresql/content-create.sql, postgresql/content-folder.sql,
-	  postgresql/content-item.sql,
-	  postgresql/upgrade/upgrade-5.2.1d1-5.2.1d2.sql,
-	  oracle/upgrade/upgrade-5.2.1d1-5.2.1d2.sql: Changes to make the
-	  root of parentless items = -4 (security context root) instead of
-	  0 (unregistered visitor) Sites upgradeed from 4.6-4.6.1 have been
-	  operating with -4 as the parent_id for years (for example
-	  openacs.org) while new installs had parent_id = 0. This caused
-	  problems with the new package_id code that calls
-	  content_item__get_root_folder which was assuming the root = 0. It
-	  looks like the new install code did not accomodate parent_id=-4
-	  and that is now fixed.  Needs testing on Oracle.
+	* packages/acs-core-docs/www/: releasing-openacs-core.html,
+	  releasing-package.html, upgrade-4.5-to-4.6.html,
+	  upgrade-4.6.3-to-5.html, upgrade-5-0-dot.html: added short doc on
+	  how to release openacs packages; added missing html files for
+	  this and for upgrade
 
-2005-12-28 15:29  gustafn
+2004-03-04 06:09  joela
 
-	* packages/acs-tcl/tcl/: request-processor-procs.tcl,
-	  utilities-procs.tcl: Basic compatibility with naviserver 4.99.0
-	  (some packages with filters will need similar fixes)
+	* packages/acs-core-docs/www/: acs-admin.html, acs-plat-dev.html,
+	  aolserver.html, aolserver4.html,
+	  automated-testing-best-practices.html, backup-recovery.html,
+	  bootstrap-acs.html, complete-install.html, credits.html,
+	  cvs-tips.html, db-api-detailed.html, db-api.html,
+	  docbook-primer.html, eng-standards-constraint-naming.html,
+	  eng-standards-filenaming.html, eng-standards-plsql.html,
+	  eng-standards-versioning.html, ext-auth-requirements.html,
+	  filename.html, form-builder.html, high-avail.html,
+	  i18n-convert.html, i18n-introduction.html, index.html,
+	  individual-programs.html, install-cvs.html,
+	  install-daemontools.html, install-full-text-search.html,
+	  install-next-add-server.html, install-next-nightly-vacuum.html,
+	  install-openacs-keepalive.html, install-qmail.html,
+	  install-redhat.html, install-steps.html, ix01.html,
+	  mac-installation.html, maint-performance.html,
+	  maintenance-deploy.html, maintenance-web.html,
+	  object-identity.html, objects.html, openacs-unpack.html,
+	  openacs.html, oracle.html, packages.html, parties.html,
+	  permissions-tediously-explained.html, permissions.html,
+	  postgres.html, programming-with-aolserver.html,
+	  psgml-for-emacs.html, psgml-mode.html, release-notes-4-5.html,
+	  release-notes-4-6-2.html, release-notes-4-6-3.html,
+	  release-notes-4-6.html, release-notes.html,
+	  releasing-openacs.html, request-processor.html,
+	  requirements-template.html, security-notes.html,
+	  style-guide.html, subsites.html, tcl-doc.html, templates.html,
+	  tutorial-cvs.html, tutorial-database.html, tutorial-debug.html,
+	  tutorial-distribute.html, tutorial-newpackage.html,
+	  tutorial-pages.html, unix-installation.html,
+	  update-repository.html, update-translations.html,
+	  upgrade-openacs-files.html, upgrade-overview.html,
+	  upgrade-supporting.html, upgrade.html, variables.html,
+	  win2k-installation.html, xml/releasing-openacs.xml: added short
+	  doc on how to release openacs packages
 
-2005-12-27 00:55  maltes
+2004-03-04 05:20  joela
 
-	* packages/acs-tcl/tcl/utilities-procs.tcl: Added
-	  util::find_all_files
+	* packages/acs-core-docs/www/xml/install-guide/upgrade.xml: fixed
+	  bug re: perl munging of postgresql dump file
 
-2005-12-23 00:26  maltes
+2004-03-04 05:08  joela
 
-	* packages/acs-kernel/catalog/: acs-kernel.de_DE.ISO-8859-1.xml,
-	  acs-kernel.en_US.ISO-8859-1.xml: Fix #2751
+	* packages/acs-admin/www/install/index.adp: added some band-aid
+	  layout to make install from repository/local less confusing.
 
-2005-12-19 12:20  maltes
+2004-03-04 04:07  joela
 
-	* packages/acs-lang/tcl/lang-catalog-procs.tcl: It does not make
-	  sense to export acs-translations at all because the object_ids
-	  are different from site tot site
+	* packages/acs-core-docs/www/index.adp: corrected links in core doc
+	  TOC on index.adp
 
-2005-12-19 12:09  maltes
+2004-03-03 09:45  tilmanns
 
-	* packages/acs-lang/sql/postgresql/ad-locales.sql: Added swiss
-	  locale
+	* packages/acs-templating/tcl/test/multirow-procs.tcl: Removed test
+	  case that won't fix 'by design'.
 
-2005-12-19 10:42  maltes
+2004-03-03 09:40  tilmanns
 
-	* packages/acs-lang/sql/postgresql/ad-locales.sql: Removed swiss
-	  locale. Will recommit once the release has been made
+	* packages/acs-templating/www/doc/tagref/group.html: Added warning
+	  on nested group tags, following up on bug #428.
 
-2005-12-18 03:17  maltes
+2004-03-03 05:21  joela
 
-	* packages/acs-content-repository/tcl/content-symlink-procs.tcl: A
-	  little tiny bit of documentation for the symlink procedures
+	* packages/acs-core-docs/www/files/deploy: added deploy script
 
-2005-12-16 09:00  daveb
+2004-03-03 05:18  joela
 
-	* packages/acs-subsite/lib/user-new.tcl: Fix bug#2715 url varibale
-	  name overwriting value of form element
+	* etc/deploy.sh: added tcl deployment script
 
-2005-12-15 14:48  maltes
+2004-03-03 02:27  lars
 
-	* packages/acs-subsite/catalog/: acs-subsite.de_DE.ISO-8859-1.xml,
-	  acs-subsite.en_US.ISO-8859-1.xml: New I18N
+	* www/blank-master.adp: Moved header_stuff to the end of the HEAD
+	  section, so CSS defined through header_stuff will override the
+	  default stylesheets
 
+2004-03-02 17:20  donb
 
-</pre></div></div><div class="navfooter"><hr><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="openacs-overview.html">Prev</a> </td><td width="20%" align="center"><a accesskey="h" href="index.html">Home</a></td><td width="40%" align="right"> <a accesskey="n" href="acs-admin.html">Next</a></td></tr><tr><td width="40%" align="left">Overview </td><td width="20%" align="center"><a accesskey="u" href="general-documents.html">Up</a></td><td width="40%" align="right"> Part�II.�Administrator's Guide</td></tr></table><hr><address><a href="mailto:docs@openacs.org">docs@openacs.org</a></address></div><a name="comments"></a><center><a href="http://openacs.org/doc/current/release-notes.html#comments">View comments on this page at openacs.org</a></center></body></html>
+	* packages/acs-kernel/sql/postgresql/apm-create.sql: Fixed typo in
+	  TImo's upgrade to the PG version - kernel didn't (actually still
+	  doesn't due to other errors) install.
+
+2004-03-02 11:02  jader
+
+	*
+	  packages/acs-core-docs/www/xml/developers-guide/tutorial-advanced.xml:
+	  Added a paragraph which explains another potential problem when
+	  you create .vuh files, and how to get around it by constructing
+	  your URLs with ad_conn package_url
+
+2004-03-02 09:38  andrewg
+
+	* packages/acs-kernel/sql/oracle/groups-body-create.sql: fixing a
+	  syntax error
+
+2004-03-02 09:00  timoh
+
+	* packages/: acs-kernel/sql/oracle/acs-create.sql,
+	  acs-kernel/sql/oracle/acs-objects-create.sql,
+	  acs-kernel/sql/oracle/acs-relationships-create.sql,
+	  acs-kernel/sql/oracle/apm-create.sql,
+	  acs-kernel/sql/oracle/authentication-package-create.sql,
+	  acs-kernel/sql/oracle/community-core-create.sql,
+	  acs-kernel/sql/oracle/groups-body-create.sql,
+	  acs-kernel/sql/oracle/journal-create.sql,
+	  acs-kernel/sql/oracle/rel-constraints-body-create.sql,
+	  acs-kernel/sql/oracle/rel-segments-body-create.sql,
+	  acs-kernel/sql/oracle/site-nodes-create.sql,
+	  acs-kernel/sql/postgresql/acs-create.sql,
+	  acs-kernel/sql/postgresql/acs-objects-create.sql,
+	  acs-kernel/sql/postgresql/acs-relationships-create.sql,
+	  acs-kernel/sql/postgresql/apm-create.sql,
+	  acs-kernel/sql/postgresql/authentication-package-create.sql,
+	  acs-kernel/sql/postgresql/community-core-create.sql,
+	  acs-kernel/sql/postgresql/groups-body-create.sql,
+	  acs-kernel/sql/postgresql/journal-create.sql,
+	  acs-kernel/sql/postgresql/rel-constraints-body-create.sql,
+	  acs-kernel/sql/postgresql/rel-segments-body-create.sql,
+	  acs-kernel/sql/postgresql/site-nodes-create.sql,
+	  acs-authentication/tcl/authority-procs.tcl,
+	  acs-authentication/tcl/authority-procs.xql,
+	  acs-reference/sql/oracle/acs-reference-create.sql,
+	  acs-reference/sql/oracle/upgrade/upgrade-5.0.2-5.0.2d1.sql,
+	  acs-reference/sql/postgresql/acs-reference-create.sql,
+	  acs-subsite/tcl/group-procs.tcl,
+	  acs-subsite/www/admin/rel-segments/edit.tcl,
+	  acs-service-contract/sql/oracle/acs-sc-msg-types-create.sql,
+	  acs-service-contract/sql/oracle/acs-sc-packages-create.sql,
+	  acs-service-contract/sql/oracle/upgrade/upgrade-5.1.0d1-5.1.0d2.sql,
+	  acs-service-contract/sql/postgresql/acs-sc-msg-types-create.sql,
+	  acs-service-contract/sql/postgresql/acs-sc-packages-create.sql,
+	  acs-service-contract/sql/postgresql/upgrade/upgrade-5.1.0d1-5.1.0d2.sql,
+	  acs-tcl/tcl/apm-procs.tcl, acs-tcl/tcl/apm-procs.xql,
+	  acs-tcl/tcl/community-core-procs.tcl,
+	  acs-tcl/tcl/community-core-procs.xql,
+	  acs-tcl/tcl/site-nodes-procs.tcl,
+	  acs-tcl/tcl/site-nodes-procs.xql,
+	  acs-content-repository/sql/oracle/content-extlink.sql,
+	  acs-content-repository/sql/oracle/content-folder.sql,
+	  acs-content-repository/sql/oracle/content-image.sql,
+	  acs-content-repository/sql/oracle/content-item.sql,
+	  acs-content-repository/sql/oracle/content-keyword.sql,
+	  acs-content-repository/sql/oracle/content-revision.sql,
+	  acs-content-repository/sql/oracle/content-symlink.sql,
+	  acs-content-repository/sql/oracle/content-template.sql,
+	  acs-content-repository/sql/oracle/packages-create.sql,
+	  acs-content-repository/sql/oracle/upgrade/upgrade-5.1.0d2-5.1.0d3.sql,
+	  acs-content-repository/sql/postgresql/content-extlink.sql,
+	  acs-content-repository/sql/postgresql/content-folder.sql,
+	  acs-content-repository/sql/postgresql/content-image.sql,
+	  acs-content-repository/sql/postgresql/content-item.sql,
+	  acs-content-repository/sql/postgresql/content-keyword.sql,
+	  acs-content-repository/sql/postgresql/content-revision.sql,
+	  acs-content-repository/sql/postgresql/content-symlink.sql,
+	  acs-content-repository/sql/postgresql/content-template.sql,
+	  acs-content-repository/sql/postgresql/upgrade/upgrade-5.1.0d2-5.1.0d3.sql,
+	  acs-content-repository/tcl/extlink-procs-oracle.xql,
+	  acs-content-repository/tcl/extlink-procs-postgresql.xql,
+	  acs-content-repository/tcl/extlink-procs.tcl,
+	  acs-content-repository/tcl/keyword-procs-oracle.xql,
+	  acs-content-repository/tcl/keyword-procs-postgresql.xql,
+	  acs-content-repository/tcl/keyword-procs.tcl,
+	  acs-content-repository/tcl/revision-procs-oracle.xql,
+	  acs-content-repository/tcl/revision-procs-postgresql.xql,
+	  acs-content-repository/tcl/revision-procs.tcl,
+	  acs-content-repository/tcl/symlink-procs-oracle.xql,
+	  acs-content-repository/tcl/symlink-procs-postgresql.xql,
+	  acs-content-repository/tcl/symlink-procs.tcl,
+	  acs-messaging/sql/oracle/acs-messaging-packages.sql,
+	  acs-messaging/sql/oracle/upgrade/upgrade-5.1.0d1-5.1.0d2.sql,
+	  acs-messaging/sql/postgresql/acs-messaging-drop.sql,
+	  acs-messaging/sql/postgresql/acs-messaging-packages.sql,
+	  acs-messaging/sql/postgresql/upgrade/upgrade-5.1.0d1-5.1.0d2.sql:
+	  TIP#42,43: adding package_id and title to acs_objects table
+
+2004-03-02 08:58  lars
+
+	* packages/acs-subsite/tcl/relation-procs.tcl: Fix bug when
+	  inviting new users via the members page on the main site, where
+	  creating the user will already make them a member of the main
+	  site, by checking to see if a relation already exists before
+	  inserting a new one. The reason for this particular fix is that
+	  it will still insert the extra admin_rel relation, if you're
+	  chose to make the user an admin.
+
+2004-03-02 07:43  lars
+
+	* packages/acs-tcl/: lib/complain.adp, tcl/defs-procs.tcl: Fixed
+	  bug #1555: ad_return_complaint behavior changed
+
+2004-03-02 07:41  lars
+
+	* packages/acs-templating/tcl/acs-integration-procs.tcl: Added
+	  clarifying documentation
+
+2004-03-02 06:55  lars
+
+	* packages/acs-subsite/www/admin/index.tcl: Killed URL-generation
+	  code for automated testing, i18n -- no longer used in ADP, plus
+	  will cause page to break if you mount automated testing more than
+	  once
+
+2004-03-02 01:10  peterm
+
+	* etc/install/tcl/user-procs.tcl: the read_private_data_p form
+	  input widget is now named guest_p
+
+2004-03-01 15:06  jader
+
+	*
+	  packages/acs-core-docs/www/xml/developers-guide/tutorial-advanced.xml:
+	  Added in a better drop script (from blogger's actual drop
+	  script). Also added in a description of how to set up per-item
+	  notifications.
+
+2004-03-01 14:00  jader
+
+	* packages/acs-core-docs/www/xml/kernel/rp-design.xml: Added in
+	  ad_conn query
+
+2004-03-01 13:29  jader
+
+	*
+	  packages/acs-core-docs/www/xml/developers-guide/tutorial-advanced.xml:
+	  Added in a drop script for the notifications section. It is
+	  untested.
+
+2004-03-01 06:13  joela
+
+	* etc/deploy.sh: added deployment script
+
+2004-03-01 04:56  joela
+
+	* etc/backup.sh: fixed several bugs
+
+2004-03-01 03:55  marka
+
+	* packages/acs-content-repository/sql/: oracle/content-item.sql,
+	  postgresql/content-item.sql: modified content_item.get_title to
+	  return a useful label for extlinks (postgres and oracle)
+
+2004-02-29 04:11  joela
+
+	* packages/acs-core-docs/www/index.adp: simplified links to
+	  generated documentation
+
+2004-02-27 16:37  donb
+
+	* packages/acs-subsite/www/resources/site-master.css: Added a
+	  &quot;portlet-header&quot; class to match the &quot;portal&quot; and &quot;portal-body&quot;
+	  classes.  Made it easier to generate the protal package portlet
+	  header with its multicolumn format.  Portal standard theme now
+	  uses the proper OpenACS CSS stuff.
+
+2004-02-27 14:36  lars
+
+	* packages/acs-templating/tcl/tag-init.tcl: Wrap includes in ad_try
+	  to avoid dumping error to errorlog when ad_script_abort is called
+	  from an include template
+
+2004-02-27 11:39  lars
+
+	* packages/acs-templating/: acs-templating.info,
+	  tcl/parse-procs.tcl: Clarified thee RefreshCache parameter:
+	  default is 'as needed', not 'when needed'; added docs to the
+	  parameter description in the .info file
+
+2004-02-27 11:38  lars
+
+	* packages/acs-templating/tcl/tag-init.tcl: Don't break the entire
+	  page when an include template fails; only break the include
+
+2004-02-27 08:08  lars
+
+	* packages/acs-subsite/acs-subsite.info: Removed bgcolor, textcolor
+	  parameters; no longer user
+
+2004-02-27 08:05  lars
+
+	* packages/acs-subsite/catalog/acs-subsite.en_US.ISO-8859-1.xml:
+	  Confirmation message on changing password
+
+2004-02-27 08:02  lars
+
+	* packages/acs-subsite/www/user/password-update.tcl: Confirmation
+	  message on changing password
+
+2004-02-27 07:56  lars
+
+	* packages/acs-subsite/www/resources/site-master.css: Latest
+	  version
+
+2004-02-27 07:51  lars
+
+	* packages/acs-subsite/www/: group-master.adp, group-master.tcl:
+	  Moved context-bar to site-master
+
+2004-02-27 07:50  lars
+
+	* packages/acs-mail-lite/tcl/acs-mail-lite-procs.tcl: Default
+	  send_p variable
+
+2004-02-27 07:49  lars
+
+	* packages/acs-templating/tcl/query-procs.tcl: Added multirow unset
+	  operation
+
+2004-02-27 07:48  lars
+
+	* packages/acs-templating/tcl/list-procs.tcl: Moved javascript to
+	  core.js
+
+2004-02-27 07:48  lars
+
+	* packages/acs-templating/tcl/form-procs.tcl: Added @see to
+	  get_elements proc
+
+2004-02-27 07:47  lars
+
+	* packages/acs-templating/www/resources/forms.css: Moved
+	  configuration form style CSS here
+
+2004-02-27 07:47  lars
+
+	* packages/acs-templating/resources/lists/table.adp: Cleaned up,
+	  moved Javascript to core.js
+
+2004-02-27 03:23  peterm
+
+	* packages/acs-subsite/www/admin/relations/add.tcl: the version
+	  1.14 change to package_instantiate_object proc would break this
+	  page because form didn't contain the rel_id column. Adding rel_id
+	  to form.
+
+2004-02-27 03:20  joela
+
+	* packages/acs-core-docs/www/: acs-admin.html, aolserver.html,
+	  aolserver4.html, automated-testing-best-practices.html,
+	  backup-recovery.html, bootstrap-acs.html, complete-install.html,
+	  credits.html, cvs-tips.html, db-api-detailed.html, db-api.html,
+	  docbook-primer.html, eng-standards-constraint-naming.html,
+	  eng-standards-filenaming.html, eng-standards-plsql.html,
+	  eng-standards-versioning.html, ext-auth-requirements.html,
+	  filename.html, form-builder.html, high-avail.html, how-do-I.html,
+	  i18n-convert.html, i18n-introduction.html, index.html,
+	  install-cvs.html, install-daemontools.html,
+	  install-full-text-search.html, install-more-software.html,
+	  install-next-nightly-vacuum.html, install-openacs-keepalive.html,
+	  install-qmail.html, install-redhat.html,
+	  install-squirrelmail.html, install-steps.html, ix01.html,
+	  mac-installation.html, maint-performance.html,
+	  maintenance-deploy.html, maintenance-web.html,
+	  object-identity.html, objects.html, openacs.html, oracle.html,
+	  packages.html, parties.html,
+	  permissions-tediously-explained.html, permissions.html,
+	  postgres.html, programming-with-aolserver.html,
+	  psgml-for-emacs.html, psgml-mode.html, release-notes-4-5.html,
+	  release-notes-4-6-2.html, release-notes-4-6-3.html,
+	  release-notes-4-6.html, release-notes.html,
+	  releasing-openacs.html, request-processor.html,
+	  requirements-template.html, rp-design.html, security-notes.html,
+	  style-guide.html, subsites.html, tcl-doc.html, templates.html,
+	  tutorial-cvs.html, tutorial-database.html, tutorial-debug.html,
+	  tutorial-distribute.html, tutorial-newpackage.html,
+	  tutorial-pages.html, unix-installation.html,
+	  upgrade-openacs-files.html, upgrade-overview.html,
+	  variables.html, win2k-installation.html, xml/index.xml,
+	  xml/releasing-openacs.xml, xml/variables.ent,
+	  xml/developers-guide/templates.xml,
+	  xml/install-guide/aolserver.xml,
+	  xml/install-guide/other-software.xml,
+	  xml/install-guide/postgres.xml: adjusted docs after merge
+
+2004-02-27 03:05  peterm
+
+	* packages/acs-subsite/www/admin/groups/new.tcl: the group new.tcl
+	  page broke because of the change in version 1.14 to
+	  package_instantiate_object proc. Fix is to not pass in a form_id
+	  to relation_add proc
+
+2004-02-27 02:58  joela
+
+	* packages/acs-admin/www/apm/repository-channel-index.adp: added a
+	  hint on howe to use the repository.
+
+2004-02-26 09:08  joela
+
+	* packages/acs-core-docs/www/xml/releasing-openacs.xml: added
+	  package .info renumbering script to release instructions; minor
+	  typo fixes
+
+2004-02-26 07:28  jeffd
+
+	* etc/config.tcl, etc/daemontools/run,
+	  packages/acs-authentication/tcl/authentication-procs.tcl,
+	  packages/acs-core-docs/www/images/production-configuration.dia,
+	  packages/acs-core-docs/www/xml/releasing-openacs.xml,
+	  packages/acs-core-docs/www/xml/developers-guide/templates.xml,
+	  packages/acs-core-docs/www/xml/developers-guide/tutorial-advanced.xml,
+	  packages/acs-core-docs/www/xml/developers-guide/tutorial-debug.xml,
+	  packages/acs-core-docs/www/xml/developers-guide/tutorial-pages.xml,
+	  packages/acs-core-docs/www/xml/for-everyone/release-notes.xml,
+	  packages/acs-core-docs/www/xml/install-guide/aolserver.xml,
+	  packages/acs-core-docs/www/xml/install-guide/database-maintenance.xml,
+	  packages/acs-core-docs/www/xml/install-guide/postgres.xml,
+	  packages/acs-core-docs/www/xml/install-guide/upgrade.xml,
+	  packages/acs-core-docs/www/xml/kernel/bootstrap-acs.xml,
+	  packages/acs-core-docs/www/xml/kernel/rp-design.xml,
+	  packages/acs-kernel/catalog/acs-kernel.ast_ES.ISO-8859-1.xml,
+	  packages/acs-kernel/catalog/acs-kernel.ch_zh.utf-8.xml,
+	  packages/acs-kernel/catalog/acs-kernel.da_DK.ISO-8859-1.xml,
+	  packages/acs-kernel/catalog/acs-kernel.de_DE.ISO-8859-1.xml,
+	  packages/acs-kernel/catalog/acs-kernel.en_US.ISO-8859-1.xml,
+	  packages/acs-kernel/catalog/acs-kernel.es_ES.ISO-8859-1.xml,
+	  packages/acs-kernel/catalog/acs-kernel.fi_FI.utf-8.xml,
+	  packages/acs-kernel/catalog/acs-kernel.fr_FR.ISO-8859-1.xml,
+	  packages/acs-kernel/catalog/acs-kernel.gl_ES.ISO-8859-1.xml,
+	  packages/acs-kernel/catalog/acs-kernel.hu_HU.utf-8.xml,
+	  packages/acs-kernel/catalog/acs-kernel.it_IT.ISO-8859-1.xml,
+	  packages/acs-kernel/catalog/acs-kernel.ja_JP.utf-8.xml,
+	  packages/acs-kernel/catalog/acs-kernel.ko_KR.utf-8.xml,
+	  packages/acs-kernel/catalog/acs-kernel.nl_NL.ISO-8859-1.xml,
+	  packages/acs-kernel/catalog/acs-kernel.no_NO.ISO-8859-1.xml,
+	  packages/acs-kernel/catalog/acs-kernel.pl_PL.utf-8.xml,
+	  packages/acs-kernel/catalog/acs-kernel.pt_BR.ISO-8859-1.xml,
+	  packages/acs-kernel/catalog/acs-kernel.pt_PT.ISO-8859-1.xml,
+	  packages/acs-kernel/catalog/acs-kernel.ru_RU.utf-8.xml,
+	  packages/acs-kernel/catalog/acs-kernel.sv_SE.ISO-8859-1.xml,
+	  packages/acs-kernel/catalog/acs-kernel.tr_TR.utf-8.xml,
+	  packages/acs-kernel/catalog/acs-kernel.zh_TW.utf-8.xml,
+	  packages/acs-lang/catalog/acs-lang.ast_ES.ISO-8859-1.xml,
+	  packages/acs-lang/catalog/acs-lang.ch_zh.utf-8.xml,
+	  packages/acs-lang/catalog/acs-lang.da_DK.ISO-8859-1.xml,
+	  packages/acs-lang/catalog/acs-lang.de_DE.ISO-8859-1.xml,
+	  packages/acs-lang/catalog/acs-lang.el_GR.utf-8.xml,
+	  packages/acs-lang/catalog/acs-lang.en_GB.ISO-8859-1.xml,
+	  packages/acs-lang/catalog/acs-lang.en_US.ISO-8859-1.xml,
+	  packages/acs-lang/catalog/acs-lang.es_ES.ISO-8859-1.xml,
+	  packages/acs-lang/catalog/acs-lang.fi_FI.utf-8.xml,
+	  packages/acs-lang/catalog/acs-lang.fr_FR.ISO-8859-1.xml,
+	  packages/acs-lang/catalog/acs-lang.gl_ES.ISO-8859-1.xml,
+	  packages/acs-lang/catalog/acs-lang.hu_HU.utf-8.xml,
+	  packages/acs-lang/catalog/acs-lang.it_IT.ISO-8859-1.xml,
+	  packages/acs-lang/catalog/acs-lang.ja_JP.utf-8.xml,
+	  packages/acs-lang/catalog/acs-lang.ko_KR.utf-8.xml,
+	  packages/acs-lang/catalog/acs-lang.nl_NL.ISO-8859-1.xml,
+	  packages/acs-lang/catalog/acs-lang.no_NO.ISO-8859-1.xml,
+	  packages/acs-lang/catalog/acs-lang.pl_PL.utf-8.xml,
+	  packages/acs-lang/catalog/acs-lang.pt_BR.ISO-8859-1.xml,
+	  packages/acs-lang/catalog/acs-lang.pt_PT.ISO-8859-1.xml,
+	  packages/acs-lang/catalog/acs-lang.ru_RU.utf-8.xml,
+	  packages/acs-lang/catalog/acs-lang.sh_HR.utf-8.xml,
+	  packages/acs-lang/catalog/acs-lang.sv_SE.ISO-8859-1.xml,
+	  packages/acs-lang/catalog/acs-lang.tr_TR.utf-8.xml,
+	  packages/acs-lang/catalog/acs-lang.zh_TW.utf-8.xml,
+	  packages/acs-lang/sql/oracle/ad-locales.sql,
+	  packages/acs-lang/sql/oracle/message-catalog.sql,
+	  packages/acs-lang/sql/oracle/upgrade/upgrade-5.0.0-5.0.1.sql,
+	  packages/acs-lang/sql/oracle/upgrade/upgrade-5.0.0b4-5.0.0b5.sql,
+	  packages/acs-lang/sql/postgresql/ad-locales.sql,
+	  packages/acs-lang/sql/postgresql/message-catalog.sql,
+	  packages/acs-lang/sql/postgresql/upgrade/upgrade-5.0.0-5.0.1.sql,
+	  packages/acs-lang/sql/postgresql/upgrade/upgrade-5.0.0b4-5.0.0b5.sql,
+	  packages/acs-lang/tcl/lang-audit-procs-oracle.xql,
+	  packages/acs-lang/tcl/lang-audit-procs-postgresql.xql,
+	  packages/acs-lang/tcl/lang-catalog-procs-oracle.xql,
+	  packages/acs-lang/tcl/lang-catalog-procs-postgresql.xql,
+	  packages/acs-lang/tcl/lang-catalog-procs.tcl,
+	  packages/acs-lang/tcl/lang-message-procs.tcl,
+	  packages/acs-lang/tcl/lang-util-procs.tcl,
+	  packages/acs-lang/www/admin/import-messages.adp,
+	  packages/acs-lang/www/admin/import-messages.tcl,
+	  packages/acs-lang/www/admin/message-conflict-revert.tcl,
+	  packages/acs-lang/www/admin/message-conflicts.tcl,
+	  packages/acs-lang/www/admin/message-list-oracle.xql,
+	  packages/acs-lang/www/admin/message-list-postgresql.xql,
+	  packages/acs-lang/www/admin/message-list.adp,
+	  packages/acs-reference/acs-reference.info,
+	  packages/acs-subsite/catalog/acs-subsite.ch_zh.utf-8.xml,
+	  packages/acs-subsite/catalog/acs-subsite.da_DK.ISO-8859-1.xml,
+	  packages/acs-subsite/catalog/acs-subsite.de_DE.ISO-8859-1.xml,
+	  packages/acs-subsite/catalog/acs-subsite.en_US.ISO-8859-1.xml,
+	  packages/acs-subsite/catalog/acs-subsite.es_ES.ISO-8859-1.xml,
+	  packages/acs-subsite/catalog/acs-subsite.fr_FR.ISO-8859-1.xml,
+	  packages/acs-subsite/catalog/acs-subsite.it_IT.ISO-8859-1.xml,
+	  packages/acs-subsite/catalog/acs-subsite.ko_KR.utf-8.xml,
+	  packages/acs-subsite/catalog/acs-subsite.nl_NL.ISO-8859-1.xml,
+	  packages/acs-subsite/catalog/acs-subsite.pt_BR.ISO-8859-1.xml,
+	  packages/acs-subsite/catalog/acs-subsite.zh_TW.utf-8.xml,
+	  packages/acs-subsite/www/index.adp,
+	  packages/acs-subsite/www/user/password-update.tcl,
+	  packages/acs-tcl/catalog/acs-tcl.ast_ES.ISO-8859-1.xml,
+	  packages/acs-tcl/catalog/acs-tcl.ch_zh.utf-8.xml,
+	  packages/acs-tcl/catalog/acs-tcl.da_DK.ISO-8859-1.xml,
+	  packages/acs-tcl/catalog/acs-tcl.de_DE.ISO-8859-1.xml,
+	  packages/acs-tcl/catalog/acs-tcl.en_US.ISO-8859-1.xml,
+	  packages/acs-tcl/catalog/acs-tcl.es_ES.ISO-8859-1.xml,
+	  packages/acs-tcl/catalog/acs-tcl.fi_FI.utf-8.xml,
+	  packages/acs-tcl/catalog/acs-tcl.fr_FR.ISO-8859-1.xml,
+	  packages/acs-tcl/catalog/acs-tcl.gl_ES.ISO-8859-1.xml,
+	  packages/acs-tcl/catalog/acs-tcl.hu_HU.utf-8.xml,
+	  packages/acs-tcl/catalog/acs-tcl.it_IT.ISO-8859-1.xml,
+	  packages/acs-tcl/catalog/acs-tcl.ja_JP.utf-8.xml,
+	  packages/acs-tcl/catalog/acs-tcl.ko_KR.utf-8.xml,
+	  packages/acs-tcl/catalog/acs-tcl.nl_NL.ISO-8859-1.xml,
+	  packages/acs-tcl/catalog/acs-tcl.no_NO.ISO-8859-1.xml,
+	  packages/acs-tcl/catalog/acs-tcl.pl_PL.utf-8.xml,
+	  packages/acs-tcl/catalog/acs-tcl.pt_BR.ISO-8859-1.xml,
+	  packages/acs-tcl/catalog/acs-tcl.pt_PT.ISO-8859-1.xml,
+	  packages/acs-tcl/catalog/acs-tcl.ru_RU.utf-8.xml,
+	  packages/acs-tcl/catalog/acs-tcl.sh_HR.utf-8.xml,
+	  packages/acs-tcl/catalog/acs-tcl.sv_SE.ISO-8859-1.xml,
+	  packages/acs-tcl/catalog/acs-tcl.tr_TR.utf-8.xml,
+	  packages/acs-tcl/catalog/acs-tcl.zh_TW.utf-8.xml,
+	  packages/acs-tcl/tcl/acs-private-data-procs.tcl,
+	  packages/acs-tcl/tcl/apm-file-procs.tcl,
+	  packages/acs-tcl/tcl/form-processing-procs.tcl,
+	  packages/acs-tcl/tcl/security-procs.tcl,
+	  packages/acs-tcl/tcl/site-nodes-procs.tcl,
+	  packages/acs-tcl/tcl/utilities-procs.tcl,
+	  packages/acs-tcl/tcl/test/acs-tcl-test-procs.tcl,
+	  packages/acs-templating/catalog/acs-templating.ch_zh.utf-8.xml,
+	  packages/acs-templating/catalog/acs-templating.da_DK.ISO-8859-1.xml,
+	  packages/acs-templating/catalog/acs-templating.de_DE.ISO-8859-1.xml,
+	  packages/acs-templating/catalog/acs-templating.es_ES.ISO-8859-1.xml,
+	  packages/acs-templating/catalog/acs-templating.fr_FR.ISO-8859-1.xml,
+	  packages/acs-templating/catalog/acs-templating.hu_HU.utf-8.xml,
+	  packages/acs-templating/catalog/acs-templating.it_IT.ISO-8859-1.xml,
+	  packages/acs-templating/catalog/acs-templating.ko_KR.utf-8.xml,
+	  packages/acs-templating/catalog/acs-templating.nl_NL.ISO-8859-1.xml,
+	  packages/acs-templating/catalog/acs-templating.pt_BR.ISO-8859-1.xml,
+	  packages/acs-templating/tcl/form-procs.tcl,
+	  packages/notifications/catalog/notifications.ch_zh.utf-8.xml,
+	  packages/notifications/catalog/notifications.da_DK.ISO-8859-1.xml,
+	  packages/notifications/catalog/notifications.de_DE.ISO-8859-1.xml,
+	  packages/notifications/sql/postgresql/upgrade/upgrade-4.6.4-5.0d1.sql,
+	  packages/notifications/sql/postgresql/upgrade/upgrade-5.0.0a5-5.0.0a6.sql,
+	  packages/search/www/search.adp, packages/search/www/search.tcl,
+	  www/blank-master.tcl, www/SYSTEM/change-auth-token.tcl: merge of
+	  all changes on oacs-5-0 branch between tag openacs-5-0-0-final
+	  and jcd-merge-pre503 (except those in lars-blogger).
+
+2004-02-26 07:03  jeffd
+
+	* ChangeLog, readme.txt: merge of all changes on oacs-5-0 branch
+	  between tag openacs-5-0-0-final and jcd-merge-pre503 (except
+	  those in lars-blogger).
+
+2004-02-26 06:40  joela
+
+	* packages/acs-automated-testing/: acs-automated-testing.info,
+	  www/doc/index.html, www/doc/install.html,
+	  www/doc/requirements.html, www/doc/usage.html,
+	  www/doc/xml/index.xml, www/doc/xml/using.xml: added documentation
+	  on setting up test management servers
+
+2004-02-26 05:36  joela
+
+	* packages/acs-automated-testing/www/: index.adp, index.tcl,
+	  rebuild-server.tcl, server.adp, server.tcl: added auto-rebuilding
+	  links
+
+2004-02-26 01:29  lars
+
+	* packages/acs-templating/tcl/parse-procs.tcl: Fixed typo: Missing
+	  end-brace; also added 'else' to if statement for clarity.
+
+2004-02-25 10:18  jeffd
+
+	* packages/acs-tcl/tcl/utilities-procs.tcl:    Changes
+	  db_html_select_value_options so that the -select_option parameter
+	  takes a list	bug 1301 patch 399 Sean Redmond
+
+2004-02-25 10:13  jeffd
+
+	* packages/acs-tcl/tcl/00-database-procs.tcl: missing -dbn switches
+	  in db_transaction caused wrong db handle to be aborted on
+	  failure, patch 406 Kolja Lehmann
+
+2004-02-25 09:53  jeffd
+
+	* packages/acs-templating/resources/forms/wizard.adp: noquote fixes
+	  bug 1322 patch 409 Michael Steigman
+
+2004-02-25 09:32  jeffd
+
+	* packages/acs-templating/tcl/parse-procs.tcl: have the include tag
+	  check for a .htm or .html file if no .adp/.tcl found bug 1377
+	  patch 417 Caroline Meeks
+
+2004-02-25 07:54  joela
+
+	* packages/acs-automated-testing/www/admin/index.adp: added help
+	  links and link to admin page when in multi-server mode
+
+2004-02-25 02:48  peterm
+
+	* packages/acs-subsite/www/register/auto-login.tcl: adding
+	  auto-login page
+
+2004-02-25 01:16  peterm
+
+	* packages/acs-automated-testing/www/: index.adp, server.adp:
+	  adding yellow coloring of error count if it's not available.
+	  Adding cue that you need to be logged in to access admin password
+	  of remote server
+
+2004-02-24 09:45  joela
+
+	* packages/acs-core-docs/www/index.adp: added chapter numbering to
+	  make it clearer that the shortcuts aren't the full TOC
+
+2004-02-24 09:42  joela
+
+	* packages/acs-core-docs/www/: acs-package-dev.html,
+	  acs-plat-dev.html, aolserver.html, aolserver4.html,
+	  apm-design.html, apm-requirements.html,
+	  automated-testing-best-practices.html, backup-recovery.html,
+	  bootstrap-acs.html, credits.html, cvs-tips.html,
+	  db-api-detailed.html, db-api.html, docbook-primer.html,
+	  eng-standards-constraint-naming.html,
+	  eng-standards-filenaming.html, eng-standards-plsql.html,
+	  eng-standards-versioning.html, ext-auth-requirements.html,
+	  filename.html, form-builder.html, groups-design.html,
+	  groups-requirements.html, high-avail.html, how-do-I.html,
+	  i18n-convert.html, i18n-design.html, i18n-introduction.html,
+	  i18n-overview.html, i18n-requirements.html,
+	  i18n-translators.html, i18n.html, index.adp, index.html,
+	  install-cvs.html, install-daemontools.html,
+	  install-full-text-search.html, install-next-nightly-vacuum.html,
+	  install-openacs-keepalive.html, install-qmail.html,
+	  install-redhat.html, install-steps.html, ix01.html,
+	  kernel-doc.html, kernel-overview.html, mac-installation.html,
+	  maint-performance.html, maintenance-deploy.html,
+	  maintenance-web.html, object-identity.html,
+	  object-system-design.html, object-system-requirements.html,
+	  objects.html, openacs.html, oracle.html, packages.html,
+	  parties.html, permissions-design.html,
+	  permissions-requirements.html,
+	  permissions-tediously-explained.html, permissions.html,
+	  postgres.html, programming-with-aolserver.html,
+	  psgml-for-emacs.html, psgml-mode.html, release-notes-4-5.html,
+	  release-notes-4-6-2.html, release-notes-4-6-3.html,
+	  release-notes-4-6.html, release-notes.html,
+	  releasing-openacs.html, request-processor.html,
+	  requirements-template.html, rp-design.html, rp-requirements.html,
+	  security-design.html, security-notes.html,
+	  security-requirements.html, style-guide.html,
+	  subsites-design.html, subsites-requirements.html, subsites.html,
+	  tcl-doc.html, templates.html, tutorial-cvs.html,
+	  tutorial-database.html, tutorial-debug.html,
+	  tutorial-distribute.html, tutorial-newpackage.html,
+	  tutorial-pages.html, unix-installation.html,
+	  update-repository.html, update-translations.html,
+	  upgrade-openacs-files.html, upgrade-overview.html,
+	  upgrade-supporting.html, variables.html, win2k-installation.html,
+	  xml/index.xml, xml/releasing-openacs.xml,
+	  xml/for-everyone/release-notes.xml: rearranged a few chapters;
+	  made better shortcut links on index.adp
+
+2004-02-24 08:59  joela
+
+	* packages/acs-automated-testing/www/: index.adp, index.tcl: link
+	  to both the remote server and the control page
+
+2004-02-24 08:48  joela
+
+	* packages/acs-automated-testing/www/index.adp: make gui changes
+
+2004-02-24 07:35  peterm
+
+	* packages/acs-automated-testing/www/: server.adp, server.tcl:
+	  removing the server Logs section. Making the admin login link
+	  less ambitious. You now have to provide password manually
+
+2004-02-24 06:23  peterm
+
+	* packages/acs-automated-testing/acs-automated-testing.info: adding
+	  the IsInstallReportServer parameter. Moving the scripts that
+	  lived at www/admin/install to live directly under www
+
+2004-02-24 06:22  peterm
+
+	* etc/install/install.tcl: adding the server_description parameter.
+	  Moving the report_scp_target parameter
+
+2004-02-24 06:16  peterm
+
+	* etc/install/install.sh: adding server_description to the xml
+	  report
+
+2004-02-24 06:15  peterm
+
+	* packages/acs-automated-testing/www/: index.adp, index.tcl,
+	  server.adp, server.tcl: adding the IsInstallReportServer
+	  parameter. Moving the scripts that lived at www/admin/install to
+	  live directly under www
+
+2004-02-24 05:45  peterm
+
+	* packages/acs-automated-testing/: tcl/aa-test-procs.tcl,
+	  acs-automated-testing.info: adding XMLReportDir parameter. Adding
+	  description to the server page and cleaning up the page a little.
+
+2004-02-24 05:13  peterm
+
+	* packages/acs-automated-testing/tcl/aa-test-procs.tcl: adding new
+	  parameter XMLReportDir
+
+2004-02-24 04:10  jeffd
+
+	* packages/acs-service-contract/tcl/:
+	  acs-service-contract-procs-oracle.xql,
+	  acs-service-contract-procs-postgresql.xql: default iscachable_p
+	  to f, bug 1422 patch 424    Caroline Meeks
+
+2004-02-24 04:03  jeffd
+
+	* packages/acs-lang/sql/: oracle/acs-lang-drop.sql,
+	  oracle/ad-locales-drop.sql, oracle/message-catalog-drop.sql,
+	  postgresql/acs-lang-drop.sql, postgresql/ad-locales-drop.sql,
+	  postgresql/message-catalog-drop.sql: drop script for acs-lang,
+	  bug 1431 patch 425 Jon Griffin (and me for postgres side)
+
+2004-02-24 03:20  jeffd
+
+	* packages/acs-tcl/tcl/widgets-procs.tcl: fix -blank_if_no_db
+	  option to ad_db_select_widget patch 435 bug 1522 Keith Paskett
+
+2004-02-24 03:16  jeffd
+
+	* packages/acs-templating/www/doc/tagref/: formerror.html,
+	  formgroup.html, formtemplate.html, formwidget.html, grid.html,
+	  group.html, if.html, include-optional.html, include.html,
+	  list.html, master.html, multiple.html, property.html, slave.html,
+	  switch.html, variable.html: fix links in tagref docs,patch 434
+	  Nis J rgensen
+
+2004-02-24 02:48  peterm
+
+	* etc/install/install.tcl: adding config parameter
+	  report_scp_target
+
+2004-02-24 02:47  peterm
+
+	* etc/install/install.sh: optionally copying the install xml report
+	  to a certain directory with scp. Using new config param
+	  report_scp_target
+
+2004-02-23 15:36  joela
+
+	* packages/acs-core-docs/www/xml/developers-guide/submissions.xml:
+	  added notes on submitting new packages to contrib
+
+2004-02-23 07:54  peterm
+
+	* etc/install/install.tcl: adding a comment about the new up value
+	  of the do_checkout parameter
+
+2004-02-23 07:49  peterm
+
+	* etc/install/: install.sh, updateserver.sh: adding ability for
+	  install scripts to do cvs update of a server instead of a from
+	  scratch checkout (saving bandwidth and time)
+
+2004-02-22 17:11  jader
+
+	* packages/acs-core-docs/www/xml/install-guide/upgrade.xml: Added a
+	  little more detail to Postgres 7.2-&gt;7.3 upgrade instructions.
+
+2004-02-22 08:36  joela
+
+	* packages/acs-automated-testing/www/admin/index.adp: added comment
+
+2004-02-21 08:45  joela
+
+	* etc/config.tcl: commented out nsrewrite added aolserver 4 port 80
+	  run comment
+
+2004-02-20 23:03  maltes
+
+	* packages/acs-core-docs/www/xml/install-guide/aolserver4.xml:
+	  Removed dependency on nsrewrite as per
+	  http://openacs.org/forums/message-view?message_id=165468.
+
+2004-02-20 08:11  lars
+
+	* packages/acs-tcl/tcl/site-nodes-procs.tcl: Fixed bug during
+	  install process: site_node::init_cache would error out, because
+	  there is no root node yet when it gets sourced from
+	  bootstrap-installer (via site-nodes-init)
+
+2004-02-20 07:13  joela
+
+	* packages/acs-core-docs/www/: acs-admin.html, acs-plat-dev.html,
+	  analog-install.html, analog-setup.html, aolserver.html,
+	  aolserver4.html, automated-backup.html,
+	  automated-testing-best-practices.html, backup-recovery.html,
+	  backups-with-cvs.html, bootstrap-acs.html, credits.html,
+	  cvs-tips.html, db-api-detailed.html, db-api.html,
+	  docbook-primer.html, eng-standards-constraint-naming.html,
+	  eng-standards-filenaming.html, eng-standards-plsql.html,
+	  eng-standards-versioning.html, ext-auth-requirements.html,
+	  filename.html, form-builder.html, high-avail.html, how-do-I.html,
+	  i18n-requirements.html, i18n.html, index.html, install-cvs.html,
+	  install-daemontools.html, install-full-text-search.html,
+	  install-next-nightly-vacuum.html, install-openacs-keepalive.html,
+	  install-qmail.html, install-redhat.html, install-ssl.html,
+	  install-steps.html, ix01.html, kernel-doc.html,
+	  mac-installation.html, maint-performance.html,
+	  maintenance-deploy.html, maintenance-web.html,
+	  object-identity.html, objects.html, openacs.html, oracle.html,
+	  packages.html, parties.html,
+	  permissions-tediously-explained.html, permissions.html,
+	  postgres.html, programming-with-aolserver.html,
+	  psgml-for-emacs.html, psgml-mode.html, release-notes-4-5.html,
+	  release-notes-4-6-2.html, release-notes-4-6-3.html,
+	  release-notes-4-6.html, release-notes.html,
+	  releasing-openacs.html, request-processor.html,
+	  requirements-template.html, security-notes.html,
+	  security-requirements.html, snapshot-backup.html,
+	  style-guide.html, subsites.html, tcl-doc.html, templates.html,
+	  tutorial-cvs.html, tutorial-database.html, tutorial-debug.html,
+	  tutorial-distribute.html, tutorial-newpackage.html,
+	  tutorial-pages.html, unix-installation.html,
+	  upgrade-openacs-files.html, upgrade-overview.html, uptime.html,
+	  variables.html, win2k-installation.html,
+	  images/translation-batch-edit.png, images/translations.png,
+	  images/translator-mode.png, xml/index.xml,
+	  xml/developers-guide/i18n.xml, xml/install-guide/maintenance.xml,
+	  xml/kernel/i18n-requirements.xml, i18n-convert.html,
+	  i18n-design.html, i18n-introduction.html, i18n-overview.html,
+	  i18n-translators.html: added more documentation on translator
+	  mode, with images
+
+2004-02-19 17:46  bdolicki
+
+	* packages/acs-kernel/acs-kernel.info: Fixed syntax error that
+	  broke installation (wrong close tag):
+
+	     revision 1.55
+	     date: 2004/02/19 15:03:43;  author: joela;  state: Exp;
+	  lines: +5 -2
+	     added package maturity flag
+
+2004-02-19 14:27  donb
+
+	* packages/acs-tcl/tcl/: apm-install-procs.tcl,
+	  object-procs-oracle.xql: Removed bogus tree_sortkey reference in
+	  the Oracle version ...
+
+2004-02-19 13:16  bdolicki
+
+	* packages/acs-tcl/tcl/defs-procs.tcl: added a flag to take
+	  advantage of util_user_message in ad_progress_bar_end
+
+2004-02-19 07:03  joela
+
+	* packages/acs-kernel/acs-kernel.info: added package maturity flag
+
+2004-02-19 06:59  joela
+
+	* packages/: acs-admin/acs-admin.info,
+	  acs-admin/www/apm/build-repository.tcl,
+	  acs-api-browser/acs-api-browser.info,
+	  acs-authentication/acs-authentication.info,
+	  acs-authentication/www/doc/configure-batch-sync.html,
+	  acs-authentication/www/doc/ext-auth-design.html,
+	  acs-authentication/www/doc/ext-auth-install.html,
+	  acs-authentication/www/doc/ext-auth-ldap-install.html,
+	  acs-authentication/www/doc/ext-auth-pam-install.html,
+	  acs-authentication/www/doc/ims-sync-driver-design.html,
+	  acs-authentication/www/doc/index.html,
+	  acs-automated-testing/acs-automated-testing.info,
+	  acs-bootstrap-installer/acs-bootstrap-installer.info,
+	  acs-core-docs/acs-core-docs.info, acs-lang/acs-lang.info,
+	  acs-messaging/acs-messaging.info,
+	  acs-service-contract/acs-service-contract.info,
+	  acs-subsite/acs-subsite.info, acs-tcl/acs-tcl.info,
+	  acs-templating/acs-templating.info,
+	  ref-timezones/ref-timezones.info, search/search.info: updated
+	  package version numbers in core from 5.0.0 to 5.1.0d1
+
+2004-02-19 03:01  joela
+
+	* etc/backup.sh: fixed directory/newer bug
+
+2004-02-19 01:37  lars
+
+	*
+	  packages/acs-content-repository/sql/postgresql/content-folder.sql:
+	  We still want security_inherit_p to default to 't', otherwise
+	  bcms::folder::create_folder breaks, because null is not a valid
+	  boolean value. This is also consistent with what the comments in
+	  the function says (default true)
+
+2004-02-18 13:05  bdolicki
+
+	* packages/acs-templating/tcl/query-procs.tcl: Added doc string
+
+2004-02-18 12:59  bdolicki
+
+	* packages/acs-templating/tcl/query-procs.tcl: Added exists command
+	  to template::multirow
+
+2004-02-18 09:02  lars
+
+	* packages/acs-content-repository/sql/postgresql/:
+	  content-create.sql, upgrade/upgrade-5.0.0-5.1.0d1.sql: Fixed ,
+	  typo and simple optimization per Jeff's proposal
+
+2004-02-18 06:51  joela
+
+	* packages/acs-core-docs/www/xml/install-guide/: maintenance.xml,
+	  recovery.xml: a few typo fixes
+
+2004-02-18 06:43  joela
+
+	* packages/acs-core-docs/www/: acs-admin.html,
+	  acs-package-dev.html, acs-plat-dev.html, analog-install.html,
+	  analog-setup.html, aolserver.html, aolserver4.html,
+	  apm-design.html, apm-requirements.html, automated-backup.html,
+	  automated-testing-best-practices.html, backup-recovery.html,
+	  backups-with-cvs.html, bootstrap-acs.html, complete-install.html,
+	  credits.html, cvs-tips.html, </pre></div></div><div class="navfooter"><hr><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="openacs-overview.html">Prev</a> </td><td width="20%" align="center"><a accesskey="h" href="index.html">Home</a></td><td width="40%" align="right"> <a accesskey="n" href="acs-admin.html">Next</a></td></tr><tr><td width="40%" align="left">Overview </td><td width="20%" align="center"><a accesskey="u" href="general-documents.html">Up</a></td><td width="40%" align="right"> Part�II.�Administrator's Guide</td></tr></table><hr><address><a href="mailto:docs@openacs.org">docs@openacs.org</a></address></div><a name="comments"></a><center><a href="http://openacs.org/doc/current/release-notes.html#comments">View comments on this page at openacs.org</a></center></body></html>
Index: openacs-4/packages/acs-core-docs/www/releasing-openacs-core.html
===================================================================
RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/releasing-openacs-core.html,v
diff -u -r1.13 -r1.13.4.1
--- openacs-4/packages/acs-core-docs/www/releasing-openacs-core.html	17 Jul 2006 05:38:32 -0000	1.13
+++ openacs-4/packages/acs-core-docs/www/releasing-openacs-core.html	3 Feb 2008 12:07:41 -0000	1.13.4.1
@@ -1,6 +1,7 @@
-<html><head><meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"><title>OpenACS Core and .LRN</title><meta name="generator" content="DocBook XSL Stylesheets V1.70.1"><link rel="home" href="index.html" title="OpenACS Core Documentation"><link rel="up" href="releasing-openacs.html" title="Chapter�16.�Releasing OpenACS"><link rel="previous" href="releasing-openacs.html" title="Chapter�16.�Releasing OpenACS"><link rel="next" href="update-repository.html" title="How to Update the OpenACS.org repository"><link rel="stylesheet" href="openacs.css" type="text/css"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><a href="http://openacs.org"><img src="/doc/images/alex.jpg" border="0" alt="Alex logo"></a><table width="100%" summary="Navigation header" border="0"><tr><td width="20%" align="left"><a accesskey="p" href="releasing-openacs.html">Prev</a> </td><th width="60%" align="center">Chapter�16.�Releasing OpenACS</th><td width="20%" align="right"> <a accesskey="n" href="update-repository.html">Next</a></td></tr></table><hr></div><div class="section" lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="releasing-openacs-core"></a>OpenACS Core and .LRN</h2></div></div></div><div class="orderedlist"><ol type="1"><li><p><b>Update Translations.�</b><a href="update-translations.html" title="How to Update the translations">the section called &#8220;How to Update the translations&#8221;</a></p></li><li><p><b>Rebuild the Changelog.�</b>Rebuild the Changelog.  I use a tool called cvs2cl.  Run this command from the package root to automatically generate a Changelog file  in the same dir.  We generate two changelogs, one for the minor branch and one for the most recent release.  The example below is for OpenACS 5.0.2:</p><pre class="screen"><span class="action"><span class="action">cd /var/lib/aolserver/$OPENACS_SERVICE_NAME
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html><head><meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"><title>OpenACS Core and .LRN</title><meta name="generator" content="DocBook XSL Stylesheets V1.60.1"><link rel="home" href="index.html" title="OpenACS Core Documentation"><link rel="up" href="releasing-openacs.html" title="Chapter�16.�Releasing OpenACS"><link rel="previous" href="releasing-openacs.html" title="Chapter�16.�Releasing OpenACS"><link rel="next" href="update-repository.html" title="How to Update the OpenACS.org repository"><link rel="stylesheet" href="openacs.css" type="text/css"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><a href="http://openacs.org"><img src="/doc/images/alex.jpg" border="0" alt="Alex logo"></a><table width="100%" summary="Navigation header" border="0"><tr><td width="20%" align="left"><a accesskey="p" href="releasing-openacs.html">Prev</a> </td><th width="60%" align="center">Chapter�16.�Releasing OpenACS</th><td width="20%" align="right"> <a accesskey="n" href="update-repository.html">Next</a></td></tr></table><hr></div><div class="section" lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="releasing-openacs-core"></a>OpenACS Core and .LRN</h2></div></div><div></div></div><div class="orderedlist"><ol type="1"><li><p><b>Update Translations.�</b><a href="update-translations.html" title="How to Update the translations">Section�, &#8220;How to Update the translations&#8221;</a></p></li><li><p><b>Rebuild the Changelog.�</b>Rebuild the Changelog.  I use a tool called cvs2cl.  Run this command from the package root to automatically generate a Changelog file  in the same dir.  We generate two changelogs, one for the minor branch and one for the most recent release.  The example below is for OpenACS 5.0.2:</p><pre class="screen"><span class="action"><span class="action">cd /var/lib/aolserver/$OPENACS_SERVICE_NAME
 cvs2cl -F <span class="replaceable"><span class="replaceable">oacs-5-0</span></span> --delta <span class="replaceable"><span class="replaceable">openacs-5-0-0-final</span></span>:<span class="replaceable"><span class="replaceable">oacs-5-0</span></span> -f ChangeLog
-cvs2cl -F <span class="replaceable"><span class="replaceable">oacs-5-0</span></span> --delta <span class="replaceable"><span class="replaceable">openacs-5-0-1-final</span></span>:<span class="replaceable"><span class="replaceable">oacs-5-0</span></span> -f ChangeLog-recent</span></span></pre></li><li><p><b>Update Version Numbers.�</b>The version numbers in the documentation and in the packages must be updated.  This should only happen after a release candidate is approved.</p><p class="remark"><i><span class="remark">.LRN: this must be repeated for .LRN modules (dotlrn-core in the dotlrn cvs tree) and for any modified modules in the .LRN prerequisites (dotlrn-prereq in openacs cvs tree).  My current working model is that I bulk-update .LRN and OpenACS core but that I don't touch dotlrn-prereq modules - I just use the most recent release and it's up to individual package developers to tag and <a href="releasing-package.html" title="How to package and release an OpenACS Package">release those packages</a> when they change.  This model is already broken because following it means that dotlrn-prereqs don't get new translations.</span></i></p><div class="orderedlist"><ol type="a"><li><p>Update /var/lib/aolserver/$OPENACS_SERVICE_NAME/packages/acs-core-docs/www/xml/variables.ent with the new version number.
+cvs2cl -F <span class="replaceable"><span class="replaceable">oacs-5-0</span></span> --delta <span class="replaceable"><span class="replaceable">openacs-5-0-1-final</span></span>:<span class="replaceable"><span class="replaceable">oacs-5-0</span></span> -f ChangeLog-recent</span></span></pre></li><li><p><b>Update Version Numbers.�</b>The version numbers in the documentation and in the packages must be updated.  This should only happen after a release candidate is approved.</p><i><span class="remark">.LRN: this must be repeated for .LRN modules (dotlrn-core in the dotlrn cvs tree) and for any modified modules in the .LRN prerequisites (dotlrn-prereq in openacs cvs tree).  My current working model is that I bulk-update .LRN and OpenACS core but that I don't touch dotlrn-prereq modules - I just use the most recent release and it's up to individual package developers to tag and <a href="releasing-package.html" title="How to package and release an OpenACS Package">release those packages</a> when they change.  This model is already broken because following it means that dotlrn-prereqs don't get new translations.</span></i><div class="orderedlist"><ol type="a"><li><p>Update /var/lib/aolserver/$OPENACS_SERVICE_NAME/packages/acs-core-docs/www/xml/variables.ent with the new version number.
             </p></li><li><p>Add new section in /var/lib/aolserver/$OPENACS_SERVICE_NAME/packages/acs-core-docs/www/xml/for-everyone/release-notes.xml
 </p></li><li><p>Regenerate all HTML docs</p><pre class="screen">cd /var/lib/aolserver/$OPENACS_SERVICE_NAME/packages/acs-core-docs/www/xml
 make</pre></li><li><p>Update /var/lib/aolserver/$OPENACS_SERVICE_NAME/readme.txt with the new version number</p></li><li><p>Update version number and release date in all of the
@@ -20,7 +21,7 @@
 </span></span></pre></li><li><p>Tag the tree.  If it's a final release of core, move or create the appropriate openacs-major-minor-compat tag.  (Ie, if releasing 5.0.3 final, move the openacs-5-0-compat flag.)</p><pre class="screen"><span class="action"><span class="action">cd /var/tmp/openacs-4
 cvs tag -F <span class="replaceable"><span class="replaceable">openacs-5-0-0a1</span></span>
 cvs tag -F <span class="replaceable"><span class="replaceable">openacs-5-0-compat</span></span>
-</span></span></pre><div class="tip" style="margin-left: 0.5in; margin-right: 0.5in;"><h3 class="title">Branching</h3><p>When we feature-freeze on HEAD as part of the release process, we are blocking new development.  To avoid this, we branch the code at this point, so that new work can continue on HEAD while the branch is stabilized for release. However, branching means that bug fixes have to be synchronized between HEAD and the branch, and bug fixes tend to be more frequent right at this time.  Therefore, our actual branch point is as late as possible - essentially, we do not branch until and unless new feature work is actively blocked by the feature freeze.  Branching is almost the same as tagging, except for the flag and slightly different tag nomenclature.  To see the list of old branches, <code class="computeroutput">cvs status -v somefile</code>.</p><pre class="screen">cvs tag -b <span class="replaceable"><span class="replaceable">oacs-5-0</span></span></pre></div><p>If doing .LRN: Since the .LRN packages aren't all in one
+</span></span></pre><div class="tip" style="margin-left: 0.5in; margin-right: 0.5in;"><h3 class="title">Branching</h3><p>When we feature-freeze on HEAD as part of the release process, we are blocking new development.  To avoid this, we branch the code at this point, so that new work can continue on HEAD while the branch is stabilized for release. However, branching means that bug fixes have to be synchronized between HEAD and the branch, and bug fixes tend to be more frequent right at this time.  Therefore, our actual branch point is as late as possible - essentially, we do not branch until and unless new feature work is actively blocked by the feature freeze.  Branching is almost the same as tagging, except for the flag and slightly different tag nomenclature.  To see the list of old branches, <tt class="computeroutput">cvs status -v somefile</tt>.</p><pre class="screen">cvs tag -b <span class="replaceable"><span class="replaceable">oacs-5-0</span></span></pre></div><p>If doing .LRN: Since the .LRN packages aren't all in one
           module, we iterate through all of the modules.  Log in first
           (cvs login) so that you don't have to log in for each
           module.</p><pre class="screen"><span class="action"><span class="action">cd /var/tmp/dotlrn-packages
@@ -29,7 +30,7 @@
 </span></span></pre><p>Note that for the compat tag we use the <span class="action"><span class="action">-F</span></span> flag which will force the tag to the new version (just in 
           case someone has created the tag already on another version).  Excercise care when doing this since 
           you don't want to inadvertently move a prior release tag.  Also if the tagging goes horribly wrong 
-          for some reason you can delete the tag via "<span><strong class="command">cvs tag -d &lt;symbolic_tag&gt;</strong></span>".</p></li><li><p>Apply the <code class="computeroutput">final</code> tag across the tree.  First, check out the entire OpenACS tree, getting the most recent stable version of each package.  This is most simply done on openacs.org:</p><pre class="screen"><span class="action"><span class="action">cd /var/tmp
+          for some reason you can delete the tag via &quot;<b class="command">cvs tag -d &lt;symbolic_tag&gt;</b>&quot;.</p></li><li><p>Apply the <tt class="computeroutput">final</tt> tag across the tree.  First, check out the entire OpenACS tree, getting the most recent stable version of each package.  This is most simply done on openacs.org:</p><pre class="screen"><span class="action"><span class="action">cd /var/tmp
 cvs -d /cvsroot checkout -r <span class="replaceable"><span class="replaceable">openacs-5-1-compat</span></span> openacs-4
 cd openacs-4
 cvs tag <span class="replaceable"><span class="replaceable">openacs-5-1-2-final</span></span></span></span></pre></li></ol></div></li><li><p><b>Make the tarball(s).�</b></p><div class="itemizedlist"><ul type="disc"><li><p><b>openacs-core.�</b></p><div class="orderedlist"><ol type="a"><li><p>Go to a new working space and export the tagged files.</p><pre class="screen"><span class="action"><span class="action">mkdir /var/tmp/tarball
@@ -80,7 +81,7 @@
 BASE=/var/tmp/release-$OACS_VERSION
 mkdir $BASE
 if [ ! -d $BASE ]; then 
-    echo "Failed creating base dir $BASE"
+    echo &quot;Failed creating base dir $BASE&quot;
     exit 1
 fi
 
Index: openacs-4/packages/acs-core-docs/www/releasing-openacs.html
===================================================================
RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/releasing-openacs.html,v
diff -u -r1.22 -r1.22.4.1
--- openacs-4/packages/acs-core-docs/www/releasing-openacs.html	17 Jul 2006 05:38:32 -0000	1.22
+++ openacs-4/packages/acs-core-docs/www/releasing-openacs.html	3 Feb 2008 12:07:41 -0000	1.22.4.1
@@ -1 +1,2 @@
-<html><head><meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"><title>Chapter�16.�Releasing OpenACS</title><meta name="generator" content="DocBook XSL Stylesheets V1.70.1"><link rel="home" href="index.html" title="OpenACS Core Documentation"><link rel="up" href="acs-plat-dev.html" title="Part�IV.�For OpenACS Platform Developers"><link rel="previous" href="ext-auth-requirements.html" title="External Authentication Requirements"><link rel="next" href="releasing-openacs-core.html" title="OpenACS Core and .LRN"><link rel="stylesheet" href="openacs.css" type="text/css"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><a href="http://openacs.org"><img src="/doc/images/alex.jpg" border="0" alt="Alex logo"></a><table width="100%" summary="Navigation header" border="0"><tr><td width="20%" align="left"><a accesskey="p" href="ext-auth-requirements.html">Prev</a> </td><th width="60%" align="center">Part�IV.�For OpenACS Platform Developers</th><td width="20%" align="right"> <a accesskey="n" href="releasing-openacs-core.html">Next</a></td></tr></table><hr></div><div class="chapter" lang="en"><div class="titlepage"><div><div><h2 class="title"><a name="releasing-openacs"></a>Chapter�16.�Releasing OpenACS</h2></div></div></div><div class="toc"><p><b>Table of Contents</b></p><dl><dt><span class="section"><a href="releasing-openacs-core.html">OpenACS Core and .LRN</a></span></dt><dt><span class="section"><a href="update-repository.html">How to Update the OpenACS.org repository</a></span></dt><dt><span class="section"><a href="releasing-package.html">How to package and release an OpenACS Package</a></span></dt><dt><span class="section"><a href="update-translations.html">How to Update the translations</a></span></dt></dl></div></div><div class="navfooter"><hr><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="ext-auth-requirements.html">Prev</a> </td><td width="20%" align="center"><a accesskey="h" href="index.html">Home</a></td><td width="40%" align="right"> <a accesskey="n" href="releasing-openacs-core.html">Next</a></td></tr><tr><td width="40%" align="left">External Authentication Requirements </td><td width="20%" align="center"><a accesskey="u" href="acs-plat-dev.html">Up</a></td><td width="40%" align="right"> OpenACS Core and .LRN</td></tr></table><hr><address><a href="mailto:docs@openacs.org">docs@openacs.org</a></address></div><a name="comments"></a><center><a href="http://openacs.org/doc/current/releasing-openacs.html#comments">View comments on this page at openacs.org</a></center></body></html>
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html><head><meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"><title>Chapter�16.�Releasing OpenACS</title><meta name="generator" content="DocBook XSL Stylesheets V1.60.1"><link rel="home" href="index.html" title="OpenACS Core Documentation"><link rel="up" href="acs-plat-dev.html" title="Part�IV.�For OpenACS Platform Developers"><link rel="previous" href="ext-auth-requirements.html" title="External Authentication Requirements"><link rel="next" href="releasing-openacs-core.html" title="OpenACS Core and .LRN"><link rel="stylesheet" href="openacs.css" type="text/css"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><a href="http://openacs.org"><img src="/doc/images/alex.jpg" border="0" alt="Alex logo"></a><table width="100%" summary="Navigation header" border="0"><tr><td width="20%" align="left"><a accesskey="p" href="ext-auth-requirements.html">Prev</a> </td><th width="60%" align="center">Part�IV.�For OpenACS Platform Developers</th><td width="20%" align="right"> <a accesskey="n" href="releasing-openacs-core.html">Next</a></td></tr></table><hr></div><div class="chapter" lang="en"><div class="titlepage"><div><div><h2 class="title"><a name="releasing-openacs"></a>Chapter�16.�Releasing OpenACS</h2></div></div><div></div></div><div class="toc"><p><b>Table of Contents</b></p><dl><dt><a href="releasing-openacs-core.html">OpenACS Core and .LRN</a></dt><dt><a href="update-repository.html">How to Update the OpenACS.org repository</a></dt><dt><a href="releasing-package.html">How to package and release an OpenACS Package</a></dt><dt><a href="update-translations.html">How to Update the translations</a></dt></dl></div></div><div class="navfooter"><hr><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="ext-auth-requirements.html">Prev</a> </td><td width="20%" align="center"><a accesskey="h" href="index.html">Home</a></td><td width="40%" align="right"> <a accesskey="n" href="releasing-openacs-core.html">Next</a></td></tr><tr><td width="40%" align="left">External Authentication Requirements </td><td width="20%" align="center"><a accesskey="u" href="acs-plat-dev.html">Up</a></td><td width="40%" align="right"> OpenACS Core and .LRN</td></tr></table><hr><address><a href="mailto:docs@openacs.org">docs@openacs.org</a></address></div><a name="comments"></a><center><a href="http://openacs.org/doc/current/releasing-openacs.html#comments">View comments on this page at openacs.org</a></center></body></html>
Index: openacs-4/packages/acs-core-docs/www/releasing-package.html
===================================================================
RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/releasing-package.html,v
diff -u -r1.8 -r1.8.4.1
--- openacs-4/packages/acs-core-docs/www/releasing-package.html	17 Jul 2006 05:38:32 -0000	1.8
+++ openacs-4/packages/acs-core-docs/www/releasing-package.html	3 Feb 2008 12:07:41 -0000	1.8.4.1
@@ -1,4 +1,5 @@
-<html><head><meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"><title>How to package and release an OpenACS Package</title><meta name="generator" content="DocBook XSL Stylesheets V1.70.1"><link rel="home" href="index.html" title="OpenACS Core Documentation"><link rel="up" href="releasing-openacs.html" title="Chapter�16.�Releasing OpenACS"><link rel="previous" href="update-repository.html" title="How to Update the OpenACS.org repository"><link rel="next" href="update-translations.html" title="How to Update the translations"><link rel="stylesheet" href="openacs.css" type="text/css"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><a href="http://openacs.org"><img src="/doc/images/alex.jpg" border="0" alt="Alex logo"></a><table width="100%" summary="Navigation header" border="0"><tr><td width="20%" align="left"><a accesskey="p" href="update-repository.html">Prev</a> </td><th width="60%" align="center">Chapter�16.�Releasing OpenACS</th><td width="20%" align="right"> <a accesskey="n" href="update-translations.html">Next</a></td></tr></table><hr></div><div class="section" lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="releasing-package"></a>How to package and release an OpenACS Package</h2></div></div></div><p>In this example, we are packaging and releasing <code class="computeroutput">myfirstpackage</code> as version 1.0.0, which is compatible with OpenACS 5.0.x.</p><div class="orderedlist"><ol type="1"><li><p>Update the version number, release date, and <a href="http://openacs.org/forums/message-view?message_id=161393" target="_top">package maturity</a> of your package in the <a href="/acs-admin/apm/" target="_top">APM</a>.</p></li><li><p>Make sure all changes are committed.</p></li><li><p>Tag the updated work.:</p><pre class="screen"><span class="action"><span class="action">cd /var/lib/aolserver/$OPENACS_SERVICE_NAME/packages/<span class="replaceable"><span class="replaceable">myfirstpackage</span></span>
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html><head><meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"><title>How to package and release an OpenACS Package</title><meta name="generator" content="DocBook XSL Stylesheets V1.60.1"><link rel="home" href="index.html" title="OpenACS Core Documentation"><link rel="up" href="releasing-openacs.html" title="Chapter�16.�Releasing OpenACS"><link rel="previous" href="update-repository.html" title="How to Update the OpenACS.org repository"><link rel="next" href="update-translations.html" title="How to Update the translations"><link rel="stylesheet" href="openacs.css" type="text/css"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><a href="http://openacs.org"><img src="/doc/images/alex.jpg" border="0" alt="Alex logo"></a><table width="100%" summary="Navigation header" border="0"><tr><td width="20%" align="left"><a accesskey="p" href="update-repository.html">Prev</a> </td><th width="60%" align="center">Chapter�16.�Releasing OpenACS</th><td width="20%" align="right"> <a accesskey="n" href="update-translations.html">Next</a></td></tr></table><hr></div><div class="section" lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="releasing-package"></a>How to package and release an OpenACS Package</h2></div></div><div></div></div><p>In this example, we are packaging and releasing <tt class="computeroutput">myfirstpackage</tt> as version 1.0.0, which is compatible with OpenACS 5.0.x.</p><div class="orderedlist"><ol type="1"><li><p>Update the version number, release date, and <a href="http://openacs.org/forums/message-view?message_id=161393" target="_top">package maturity</a> of your package in the <a href="/acs-admin/apm/" target="_top">APM</a>.</p></li><li><p>Make sure all changes are committed.</p></li><li><p>Tag the updated work.:</p><pre class="screen"><span class="action"><span class="action">cd /var/lib/aolserver/$OPENACS_SERVICE_NAME/packages/<span class="replaceable"><span class="replaceable">myfirstpackage</span></span>
 cvs tag <span class="replaceable"><span class="replaceable">myfirstpackages-1-0-0-final</span></span>
 cvs tag -F <span class="replaceable"><span class="replaceable">openacs-5-0-compat</span></span>
 </span></span></pre></li></ol></div><p>Done.  The package will be added to the <a href="http://openacs.org/repository" target="_top">repository</a> automatically.  If the correct version does not show up within 24 hours, ask for help on the OpenACS.org development forum.</p></div><div class="navfooter"><hr><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="update-repository.html">Prev</a> </td><td width="20%" align="center"><a accesskey="h" href="index.html">Home</a></td><td width="40%" align="right"> <a accesskey="n" href="update-translations.html">Next</a></td></tr><tr><td width="40%" align="left">How to Update the OpenACS.org repository </td><td width="20%" align="center"><a accesskey="u" href="releasing-openacs.html">Up</a></td><td width="40%" align="right"> How to Update the translations</td></tr></table><hr><address><a href="mailto:docs@openacs.org">docs@openacs.org</a></address></div><a name="comments"></a><center><a href="http://openacs.org/doc/current/releasing-package.html#comments">View comments on this page at openacs.org</a></center></body></html>
Index: openacs-4/packages/acs-core-docs/www/remote-postgres.html
===================================================================
RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/remote-postgres.html,v
diff -u -r1.7 -r1.7.4.1
--- openacs-4/packages/acs-core-docs/www/remote-postgres.html	17 Jul 2006 05:38:32 -0000	1.7
+++ openacs-4/packages/acs-core-docs/www/remote-postgres.html	3 Feb 2008 12:07:41 -0000	1.7.4.1
@@ -1,11 +1,12 @@
-<html><head><meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"><title>Running a PostgreSQL database on another server</title><meta name="generator" content="DocBook XSL Stylesheets V1.70.1"><link rel="home" href="index.html" title="OpenACS Core Documentation"><link rel="up" href="database-management.html" title="Chapter�7.�Database Management"><link rel="previous" href="database-management.html" title="Chapter�7.�Database Management"><link rel="next" href="install-openacs-delete-tablespace.html" title="Deleting a tablespace"><link rel="stylesheet" href="openacs.css" type="text/css"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><a href="http://openacs.org"><img src="/doc/images/alex.jpg" border="0" alt="Alex logo"></a><table width="100%" summary="Navigation header" border="0"><tr><td width="20%" align="left"><a accesskey="p" href="database-management.html">Prev</a> </td><th width="60%" align="center">Chapter�7.�Database Management</th><td width="20%" align="right"> <a accesskey="n" href="install-openacs-delete-tablespace.html">Next</a></td></tr></table><hr></div><div class="sect1" lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="remote-postgres"></a>Running a PostgreSQL database on another server</h2></div></div></div><p>To run a database on a different machine than the
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html><head><meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"><title>Running a PostgreSQL database on another server</title><meta name="generator" content="DocBook XSL Stylesheets V1.60.1"><link rel="home" href="index.html" title="OpenACS Core Documentation"><link rel="up" href="database-management.html" title="Chapter�7.�Database Management"><link rel="previous" href="database-management.html" title="Chapter�7.�Database Management"><link rel="next" href="install-openacs-delete-tablespace.html" title="Deleting a tablespace"><link rel="stylesheet" href="openacs.css" type="text/css"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><a href="http://openacs.org"><img src="/doc/images/alex.jpg" border="0" alt="Alex logo"></a><table width="100%" summary="Navigation header" border="0"><tr><td width="20%" align="left"><a accesskey="p" href="database-management.html">Prev</a> </td><th width="60%" align="center">Chapter�7.�Database Management</th><td width="20%" align="right"> <a accesskey="n" href="install-openacs-delete-tablespace.html">Next</a></td></tr></table><hr></div><div class="sect1" lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="remote-postgres"></a>Running a PostgreSQL database on another server</h2></div></div><div></div></div><p>To run a database on a different machine than the
       webserver requires changes to the database configuration file
       and access control file, and to the OpenACS service's
       configuration file.</p><div class="itemizedlist"><ul type="disc"><li><p>Edit the database configuration file, which in a
-      Reference install is located at <code class="computeroutput">/usr/local/pgsql/data/postgresql.conf</code>
+      Reference install is located at <tt class="computeroutput">/usr/local/pgsql/data/postgresql.conf</tt>
       and change</p><pre class="programlisting">#tcpip_socket = false</pre><p>to</p><pre class="programlisting">tcpip_socket = true</pre></li><li><p>Change the access control file for the database to
           permit specific remote clients to access.  Access can be
           controlled ... (add notes from forum post) </p></li><li><p>Change the OpenACS service's configuration file to
           point to the remote database.  Edit
-          <code class="computeroutput">/var/lib/aolserver/<span class="replaceable"><span class="replaceable">$OPENACS_SERVICE_NAME</span></span>/etc/config.tcl</code>
+          <tt class="computeroutput">/var/lib/aolserver/<span class="replaceable"><span class="replaceable">$OPENACS_SERVICE_NAME</span></span>/etc/config.tcl</tt>
           and change</p><pre class="programlisting"></pre><p>to </p><pre class="programlisting"></pre></li></ul></div></div><div class="navfooter"><hr><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="database-management.html">Prev</a> </td><td width="20%" align="center"><a accesskey="h" href="index.html">Home</a></td><td width="40%" align="right"> <a accesskey="n" href="install-openacs-delete-tablespace.html">Next</a></td></tr><tr><td width="40%" align="left">Chapter�7.�Database Management </td><td width="20%" align="center"><a accesskey="u" href="database-management.html">Up</a></td><td width="40%" align="right"> Deleting a tablespace</td></tr></table><hr><address><a href="mailto:docs@openacs.org">docs@openacs.org</a></address></div><a name="comments"></a><center><a href="http://openacs.org/doc/current/remote-postgres.html#comments">View comments on this page at openacs.org</a></center></body></html>
Index: openacs-4/packages/acs-core-docs/www/request-processor.html
===================================================================
RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/request-processor.html,v
diff -u -r1.42 -r1.42.4.1
--- openacs-4/packages/acs-core-docs/www/request-processor.html	17 Jul 2006 05:38:32 -0000	1.42
+++ openacs-4/packages/acs-core-docs/www/request-processor.html	3 Feb 2008 12:07:41 -0000	1.42.4.1
@@ -1,17 +1,18 @@
-<html><head><meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"><title>The Request Processor</title><meta name="generator" content="DocBook XSL Stylesheets V1.70.1"><link rel="home" href="index.html" title="OpenACS Core Documentation"><link rel="up" href="dev-guide.html" title="Chapter�11.�Development Reference"><link rel="previous" href="objects.html" title="OpenACS Data Models and the Object System"><link rel="next" href="db-api.html" title="The OpenACS Database Access API"><link rel="stylesheet" href="openacs.css" type="text/css"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><a href="http://openacs.org"><img src="/doc/images/alex.jpg" border="0" alt="Alex logo"></a><table width="100%" summary="Navigation header" border="0"><tr><td width="20%" align="left"><a accesskey="p" href="objects.html">Prev</a> </td><th width="60%" align="center">Chapter�11.�Development Reference</th><td width="20%" align="right"> <a accesskey="n" href="db-api.html">Next</a></td></tr></table><hr></div><div class="sect1" lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="request-processor"></a>The Request Processor</h2></div></div></div><div class="authorblurb"><p>By Pete Su</p>
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html><head><meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"><title>The Request Processor</title><meta name="generator" content="DocBook XSL Stylesheets V1.60.1"><link rel="home" href="index.html" title="OpenACS Core Documentation"><link rel="up" href="dev-guide.html" title="Chapter�11.�Development Reference"><link rel="previous" href="objects.html" title="OpenACS Data Models and the Object System"><link rel="next" href="db-api.html" title="The OpenACS Database Access API"><link rel="stylesheet" href="openacs.css" type="text/css"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><a href="http://openacs.org"><img src="/doc/images/alex.jpg" border="0" alt="Alex logo"></a><table width="100%" summary="Navigation header" border="0"><tr><td width="20%" align="left"><a accesskey="p" href="objects.html">Prev</a> </td><th width="60%" align="center">Chapter�11.�Development Reference</th><td width="20%" align="right"> <a accesskey="n" href="db-api.html">Next</a></td></tr></table><hr></div><div class="sect1" lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="request-processor"></a>The Request Processor</h2></div></div><div></div></div><div class="authorblurb"><p>By Pete Su</p>
           OpenACS docs are written by the named authors, and may be edited
           by OpenACS documentation staff.
-        </div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="rp-overview"></a>Overview</h3></div></div></div><p>
-This document is a brief introduction to the OpenACS 5.2.3rc1 Request Processor;
+        </div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="rp-overview"></a>Overview</h3></div></div><div></div></div><p>
+This document is a brief introduction to the OpenACS 5.4.0 Request Processor;
 more details can be found in the <a href="rp-design.html">OpenACS 4 Request Processor Design</a>. Here we cover the high level concepts behind the
 system, and implications and usage for the application developer.
-</p></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="rp-thenewway"></a>Request Processor</h3></div></div></div><p>
-The 5.2.3rc1 Request Processor is a global filter and set of Tcl procs that
+</p></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="rp-thenewway"></a>Request Processor</h3></div></div><div></div></div><p>
+The 5.4.0 Request Processor is a global filter and set of Tcl procs that
 respond to every incoming URL reaching the server. The following
 diagram summarizes the stages of the request processor assuming a URL
-request like <code class="computeroutput">http://someserver.com/notes/somepage.adp</code>.
+request like <tt class="computeroutput">http://someserver.com/notes/somepage.adp</tt>.
 
-</p><div class="mediaobject" align="center"><img src="images/rp-flow.gif" align="middle"></div><p>
+</p><div class="mediaobject" align="center"><img src="../images/rp-flow.gif" align="middle"></div><p>
 
 </p><div class="variablelist"><dl><dt><span class="term">Stage 1: Search Site Map</span></dt><dd><p>
 The first thing the RP does is to map the given URL to the appropriate
@@ -23,7 +24,7 @@
 After looking up the appropriate object, the RP stores the URL, the ID
 of the object it found, and the package and package instance the
 object belongs to into the environment of the connection.  This
-environment can be queried using the <code class="computeroutput">ad_conn</code> procedure,
+environment can be queried using the <tt class="computeroutput">ad_conn</tt> procedure,
 which is described in detail in <a href="rp-design.html">OpenACS 4 Request Processor Design</a>. The <a href="subsites.html" title="Writing OpenACS Application Pages">page
 development</a> tutorial shows you how to use this interface to make
 your pages aware of which instance was requested.
@@ -35,9 +36,9 @@
 extracts or sets up new session tokens for the user.
 </p></dd><dt><span class="term">Stage 3: Authorization</span></dt><dd><p>
 Next, the Request Processor checks if the user has appropriate access
-privileges to the requested part of the site. In OpenACS 5.2.3rc1, access control
+privileges to the requested part of the site. In OpenACS 5.4.0, access control
 is dictated by the <a href="permissions" target="_top">permissions system</a>. In
-this case, the RP checks if the user has "read" priviledges on the
+this case, the RP checks if the user has &quot;read&quot; priviledges on the
 object in the site map specified by the URL. This object is typically
 a package instance, but it could easily be something more granular,
 such as whehter the user can view a particular piece of content within
@@ -46,16 +47,16 @@
 </p></dd><dt><span class="term">Stage 4: URL Processing, File Search</span></dt><dd><p>
 Finally, the Request Processor finds the file we intend to serve,
 searching the filesystem to locate the actual file that corresponds to
-an abstract URL.  It searches for files with predefined "magic"
-extensions, i.e. files that end with: <code class="computeroutput">.html</code>,
-<code class="computeroutput">.tcl</code> and <code class="computeroutput">.adp</code>.  
+an abstract URL.  It searches for files with predefined &quot;magic&quot;
+extensions, i.e. files that end with: <tt class="computeroutput">.html</tt>,
+<tt class="computeroutput">.tcl</tt> and <tt class="computeroutput">.adp</tt>.  
 </p><p>
 If the RP can't find any matching files with the expected extensions,
-it will look for virtual-url-handler files, or <code class="computeroutput">.vuh</code>
-files. A <code class="computeroutput">.vuh</code> file will be executed as if it were a Tcl
+it will look for virtual-url-handler files, or <tt class="computeroutput">.vuh</tt>
+files. A <tt class="computeroutput">.vuh</tt> file will be executed as if it were a Tcl
 file, but with the tail end of the URL removed. This allows the code
-in the <code class="computeroutput">.vuh</code> file to act like a registered procedure for
-an entire subtree of the URL namespace.  Thus a <code class="computeroutput">.vuh</code> file
+in the <tt class="computeroutput">.vuh</tt> file to act like a registered procedure for
+an entire subtree of the URL namespace.  Thus a <tt class="computeroutput">.vuh</tt> file
 can be thought of as a replacement for filters and registered procs,
 except that they integrate cleanly and correctly with the RP's URL
 mapping mechanisms.  The details of how to use these files are
@@ -64,64 +65,64 @@
 Once the appropriate file is found, it is either served directly if
 it's static content, or sent to the template system or the standard
 Tcl interpreter if it's a dynamic page.
-</p></dd></dl></div></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="rp-basicapi"></a>Basic API</h3></div></div></div><p>
+</p></dd></dl></div></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="rp-basicapi"></a>Basic API</h3></div></div><div></div></div><p>
 Once the flow of control reaches a dynamic page, the Request Processor
 has populated the environment of the request with several pieces of
 useful information. The RP's environment is accessible through the
-<code class="computeroutput">ad_conn</code> interface, and the following calls should be
+<tt class="computeroutput">ad_conn</tt> interface, and the following calls should be
 useful to you when developing dynamic pages:
-</p><div class="variablelist"><dl><dt><span class="term"><code class="computeroutput">[ad_conn user_id]</code>
+</p><div class="variablelist"><dl><dt><span class="term"><tt class="computeroutput">[ad_conn user_id]</tt>
 
 </span></dt><dd><p>
 The ID of the user associated with this request. By convention this is
 zero if there is no user.
-</p></dd><dt><span class="term"><code class="computeroutput">[ad_conn session_id]</code>
+</p></dd><dt><span class="term"><tt class="computeroutput">[ad_conn session_id]</tt>
 
 </span></dt><dd><p>
 The ID of the session associated with this request.
-</p></dd><dt><span class="term"><code class="computeroutput">[ad_conn url]</code>
+</p></dd><dt><span class="term"><tt class="computeroutput">[ad_conn url]</tt>
 
 </span></dt><dd><p>
 The URL associated with the request.
-</p></dd><dt><span class="term"><code class="computeroutput">[ad_conn urlv]</code>
+</p></dd><dt><span class="term"><tt class="computeroutput">[ad_conn urlv]</tt>
 
 </span></dt><dd><p>
 The URL associated with the request, represented as a list instead of
 a single string.
-</p></dd><dt><span class="term"><code class="computeroutput">[ad_conn file]</code>
+</p></dd><dt><span class="term"><tt class="computeroutput">[ad_conn file]</tt>
 
 </span></dt><dd><p>
 The actual local filesystem path of the file that is being served.
-</p></dd><dt><span class="term"><code class="computeroutput">[ad_conn object_url]</code>
+</p></dd><dt><span class="term"><tt class="computeroutput">[ad_conn object_url]</tt>
 
 </span></dt><dd><p>
 If the URL refers to a site map object, this is the URL to the root
 of the tree where the object is mounted.
-</p></dd><dt><span class="term"><code class="computeroutput">[ad_conn package_url]</code>
+</p></dd><dt><span class="term"><tt class="computeroutput">[ad_conn package_url]</tt>
 
 </span></dt><dd><p>
 If the URL refers to a package instance, this is the URL to the root
 of the tree where the package is mounted.
-</p></dd><dt><span class="term"><code class="computeroutput">[ad_conn extra_url]</code>
+</p></dd><dt><span class="term"><tt class="computeroutput">[ad_conn extra_url]</tt>
 
 </span></dt><dd><p>
 If we found the URL in the site map, this is the tail of the URL
 following the part that matched a site map entry.
-</p></dd><dt><span class="term"><code class="computeroutput">[ad_conn object_id]</code>
+</p></dd><dt><span class="term"><tt class="computeroutput">[ad_conn object_id]</tt>
 
 </span></dt><dd><p>
 If the URL refers to a site map object, this is the ID of that object.
-</p></dd><dt><span class="term"><code class="computeroutput">[ad_conn package_id]</code>
+</p></dd><dt><span class="term"><tt class="computeroutput">[ad_conn package_id]</tt>
 
 </span></dt><dd><p>
 If the URL refers to a package instance, this is the ID of that
 package instance.
-</p></dd><dt><span class="term"><code class="computeroutput">[ad_conn package_key]</code>
+</p></dd><dt><span class="term"><tt class="computeroutput">[ad_conn package_key]</tt>
 
 </span></dt><dd><p>
 If the URL refers to a package instance, this is the unique key name
 of the package.
-</p></dd><dt><span class="term"><code class="computeroutput">[ad_conn path_info]</code>
+</p></dd><dt><span class="term"><tt class="computeroutput">[ad_conn path_info]</tt>
 
 </span></dt><dd><p>
 In a .vuh file, path_info is the trailing part of the URL not matched
Index: openacs-4/packages/acs-core-docs/www/requirements-template.html
===================================================================
RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/requirements-template.html,v
diff -u -r1.42 -r1.42.4.1
--- openacs-4/packages/acs-core-docs/www/requirements-template.html	17 Jul 2006 05:38:32 -0000	1.42
+++ openacs-4/packages/acs-core-docs/www/requirements-template.html	3 Feb 2008 12:07:41 -0000	1.42.4.1
@@ -1,7 +1,8 @@
-<html><head><meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"><title>System/Application Requirements Template</title><meta name="generator" content="DocBook XSL Stylesheets V1.70.1"><link rel="home" href="index.html" title="OpenACS Core Documentation"><link rel="up" href="doc-standards.html" title="Chapter�13.�Documentation Standards"><link rel="previous" href="filename.html" title="Detailed Design Documentation Template"><link rel="next" href="i18n.html" title="Chapter�14.�Internationalization"><link rel="stylesheet" href="openacs.css" type="text/css"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><a href="http://openacs.org"><img src="/doc/images/alex.jpg" border="0" alt="Alex logo"></a><table width="100%" summary="Navigation header" border="0"><tr><td width="20%" align="left"><a accesskey="p" href="filename.html">Prev</a> </td><th width="60%" align="center">Chapter�13.�Documentation Standards</th><td width="20%" align="right"> <a accesskey="n" href="i18n.html">Next</a></td></tr></table><hr></div><div class="sect1" lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="requirements-template"></a>System/Application Requirements Template</h2></div></div></div><div class="authorblurb"><p>By <a href="mailto:youremail@example.com" target="_top">You</a></p>
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html><head><meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"><title>System/Application Requirements Template</title><meta name="generator" content="DocBook XSL Stylesheets V1.60.1"><link rel="home" href="index.html" title="OpenACS Core Documentation"><link rel="up" href="doc-standards.html" title="Chapter�13.�Documentation Standards"><link rel="previous" href="filename.html" title="Detailed Design Documentation Template"><link rel="next" href="i18n.html" title="Chapter�14.�Internationalization"><link rel="stylesheet" href="openacs.css" type="text/css"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><a href="http://openacs.org"><img src="/doc/images/alex.jpg" border="0" alt="Alex logo"></a><table width="100%" summary="Navigation header" border="0"><tr><td width="20%" align="left"><a accesskey="p" href="filename.html">Prev</a> </td><th width="60%" align="center">Chapter�13.�Documentation Standards</th><td width="20%" align="right"> <a accesskey="n" href="i18n.html">Next</a></td></tr></table><hr></div><div class="sect1" lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="requirements-template"></a>System/Application Requirements Template</h2></div></div><div></div></div><div class="authorblurb"><p>By <a href="mailto:youremail@example.com" target="_top">You</a></p>
           OpenACS docs are written by the named authors, and may be edited
           by OpenACS documentation staff.
-        </div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="yourpackage-requirements-introduction"></a>Introduction</h3></div></div></div><p>
+        </div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="yourpackage-requirements-introduction"></a>Introduction</h3></div></div><div></div></div><p>
       <span class="emphasis"><em>Briefly explain to the reader what this document is for, whether
 	it records the requirements for a new system, a client application, a
 	toolkit subsystem, etc. Remember your audience: fellow programmers,
@@ -10,50 +11,50 @@
 	everywhere, write clearly and precisely; for requirements
 	documentation, write at a level that any intelligent layperson can
 	understand.</em></span> 
-    </p></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="yourpackage-requirements-vision"></a>Vision Statement</h3></div></div></div><p>
+    </p></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="yourpackage-requirements-vision"></a>Vision Statement</h3></div></div><div></div></div><p>
 
 
       <span class="emphasis"><em>Very broadly, describe how the system meets a need of a business,
 	group, the OpenACS as a whole, etc.  Make sure that technical and
 	non-technical readers alike would understand what the system would do
 	and why it's useful.  Whenever applicable, you should explicitly state
 	what the business value of the system is. </em></span>
-    </p></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="yourpackage-requirements-system-app-overview"></a>System/Application Overview</h3></div></div></div><p>
+    </p></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="yourpackage-requirements-system-app-overview"></a>System/Application Overview</h3></div></div><div></div></div><p>
       <span class="emphasis"><em>Discuss the high-level breakdown of the components that make up
 	the system.  You can go by functional areas, by the main transactions
 	the system allows, etc. </em></span> 
     </p><p>
       <span class="emphasis"><em>You should also state the context and dependencies of the system
 	here, e.g. if it's an application-level package for OpenACS 4, briefly
 	describe how it uses kernel services, like permissions or subsites. </em></span>
-    </p></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="yourpackage-requirements-cases"></a>Use-cases and User-scenarios</h3></div></div></div><p>
+    </p></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="yourpackage-requirements-cases"></a>Use-cases and User-scenarios</h3></div></div><div></div></div><p>
       <span class="emphasis"><em>Determine the types or classes of users who would use the
 	system, and what their experience would be like at a high-level.
 	Sketch what their experience would be like and what actions they would
 	take, and how the system would support them.</em></span>  
-    </p></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="yourpackage-requirements-competitive-analysis"></a>Optional: Competitive Analysis</h3></div></div></div><p>
+    </p></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="yourpackage-requirements-competitive-analysis"></a>Optional: Competitive Analysis</h3></div></div><div></div></div><p>
       <span class="emphasis"><em>Describe other systems or services that are comparable to what
 	you're building.  If applicable, say why your implementation will be
 	superior, where it will match the competition, and where/why it will
 	lack existing best-of-breed capabilities.  This section is also in the
 	Design doc, so write about it where you deem most appropriate.</em></span>
-    </p></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="yourpackage-requirements-links"></a>Related Links</h3></div></div></div><p>Include all pertinent links to supporting and related material,
-      such as: </p><div class="itemizedlist"><ul type="disc"><li><p> System/Package "coversheet" - where all documentation for this software is linked off of</p></li><li><p> Design document</p></li><li><p> Developer's guide</p></li><li><p> User's guide</p></li><li><p> Other-cool-system-related-to-this-one document</p></li><li><p> Test plan </p></li><li><p> Competitive system(s)</p></li></ul></div></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="yourpackage-requirements-requirements"></a>Requirements</h3></div></div></div><p>
+    </p></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="yourpackage-requirements-links"></a>Related Links</h3></div></div><div></div></div><p>Include all pertinent links to supporting and related material,
+      such as: </p><div class="itemizedlist"><ul type="disc"><li><p> System/Package &quot;coversheet&quot; - where all documentation for this software is linked off of</p></li><li><p> Design document</p></li><li><p> Developer's guide</p></li><li><p> User's guide</p></li><li><p> Other-cool-system-related-to-this-one document</p></li><li><p> Test plan </p></li><li><p> Competitive system(s)</p></li></ul></div></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="yourpackage-requirements-requirements"></a>Requirements</h3></div></div><div></div></div><p>
       <span class="emphasis"><em>The main course of the document, requirements. Break up the
 	requirements sections (A, B, C, etc.) as needed.  Within each section,
 	create a list denominated with unique identifiers that reflect any
 	functional hierarchy present, e.g. 20.5.13. - for the first number,
 	leave generous gaps on the first writing of requirements (e.g. 1, 10,
 	20, 30, 40, etc.) because you'll want to leave room for any missing
 	key requirements that may arise.  </em></span>
-    </p><div class="itemizedlist"><ul type="disc"><li><p><span class="strong"><strong>10.0 A Common Solution</strong></span></p><p>
+    </p><div class="itemizedlist"><ul type="disc"><li><p><span class="strong">10.0 A Common Solution</span></p><p>
 	  Programmers and designers should only have to learn a single
 	  system that serves as a UI substrate for all the functionally
 	  specific modules in the toolkit. 
-	</p><div class="blockquote"><blockquote class="blockquote"><p><span class="strong"><strong>10.0.1</strong></span></p><p>
+	</p><div class="blockquote"><blockquote class="blockquote"><p><span class="strong">10.0.1</span></p><p>
 	    The system should not make any assumptions about how pages should
 	    look or function.
-	  </p><p><span class="strong"><strong>10.0.5</strong></span></p><p>
+	  </p><p><span class="strong">10.0.5</span></p><p>
 	    Publishers should be able to change the default presentation of
 	    any module using a single methodology with minimal exposure to
 	    code.
@@ -73,11 +74,11 @@
 	  suited to handle combinations of inputs.  </p></li><li><p> Flowcharts - easy to draw and understand, suited for event and
 	  decision driven systems.  UML is the industry standard here.</p></li><li><p> Entity-Relationship diagrams - a necessary part of Design
 	  documents, sometimes a high-level ER diagram is useful for
-	  requirements as well.</p></li></ul></div></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="yourpackage-requirements-implementation"></a>Optional: Implementation Notes</h3></div></div></div><p>
+	  requirements as well.</p></li></ul></div></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="yourpackage-requirements-implementation"></a>Optional: Implementation Notes</h3></div></div><div></div></div><p>
       <span class="emphasis"><em>Although in theory coding comes after design, which comes after
 	requirements, we do not, and perhaps should not, always follow such a
 	rigid process (a.k.a. the waterfall lifecyle).  Often, there is a
 	pre-existing system or prototype first, and thus you may want to write
 	some thoughts on implementation, for aiding and guiding yourself or
 	other programmers. </em></span> 
-    </p></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="yourpackage-revision-history"></a>Revision History</h3></div></div></div><div class="informaltable"><table cellspacing="0" border="1"><colgroup><col><col><col><col></colgroup><thead><tr><th class="revisionheader">Document Revision #</th><th>Action Taken, Notes</th><th>When?</th><th>By Whom?</th></tr></thead><tbody><tr><td class="revisionbody">0.3</td><td>Edited further, incorporated feedback from Michael Yoon</td><td>9/05/2000</td><td>Kai Wu</td></tr><tr><td>0.2</td><td>Edited</td><td>8/22/2000</td><td>Kai Wu</td></tr><tr><td>0.1</td><td>Created</td><td>8/21/2000</td><td>Josh Finkler, Audrey McLoghlin</td></tr></tbody></table></div><div class="cvstag">($Id$)</div></div></div><div class="navfooter"><hr><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="filename.html">Prev</a> </td><td width="20%" align="center"><a accesskey="h" href="index.html">Home</a></td><td width="40%" align="right"> <a accesskey="n" href="i18n.html">Next</a></td></tr><tr><td width="40%" align="left">Detailed Design Documentation Template </td><td width="20%" align="center"><a accesskey="u" href="doc-standards.html">Up</a></td><td width="40%" align="right"> Chapter�14.�Internationalization</td></tr></table><hr><address><a href="mailto:docs@openacs.org">docs@openacs.org</a></address></div><a name="comments"></a><center><a href="http://openacs.org/doc/current/requirements-template.html#comments">View comments on this page at openacs.org</a></center></body></html>
+    </p></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="yourpackage-revision-history"></a>Revision History</h3></div></div><div></div></div><div class="informaltable"><table cellspacing="0" border="1"><colgroup><col><col><col><col></colgroup><thead><tr><th class="revisionheader">Document Revision #</th><th>Action Taken, Notes</th><th>When?</th><th>By Whom?</th></tr></thead><tbody><tr><td class="revisionbody">0.3</td><td>Edited further, incorporated feedback from Michael Yoon</td><td>9/05/2000</td><td>Kai Wu</td></tr><tr><td>0.2</td><td>Edited</td><td>8/22/2000</td><td>Kai Wu</td></tr><tr><td>0.1</td><td>Created</td><td>8/21/2000</td><td>Josh Finkler, Audrey McLoghlin</td></tr></tbody></table></div><div class="cvstag">($Id$)</div></div></div><div class="navfooter"><hr><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="filename.html">Prev</a> </td><td width="20%" align="center"><a accesskey="h" href="index.html">Home</a></td><td width="40%" align="right"> <a accesskey="n" href="i18n.html">Next</a></td></tr><tr><td width="40%" align="left">Detailed Design Documentation Template </td><td width="20%" align="center"><a accesskey="u" href="doc-standards.html">Up</a></td><td width="40%" align="right"> Chapter�14.�Internationalization</td></tr></table><hr><address><a href="mailto:docs@openacs.org">docs@openacs.org</a></address></div><a name="comments"></a><center><a href="http://openacs.org/doc/current/requirements-template.html#comments">View comments on this page at openacs.org</a></center></body></html>
Index: openacs-4/packages/acs-core-docs/www/rp-design.html
===================================================================
RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/rp-design.html,v
diff -u -r1.30 -r1.30.4.1
--- openacs-4/packages/acs-core-docs/www/rp-design.html	17 Jul 2006 05:38:32 -0000	1.30
+++ openacs-4/packages/acs-core-docs/www/rp-design.html	3 Feb 2008 12:07:41 -0000	1.30.4.1
@@ -1,53 +1,54 @@
-<html><head><meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"><title>Request Processor Design</title><meta name="generator" content="DocBook XSL Stylesheets V1.70.1"><link rel="home" href="index.html" title="OpenACS Core Documentation"><link rel="up" href="kernel-doc.html" title="Chapter�15.�Kernel Documentation"><link rel="previous" href="rp-requirements.html" title="Request Processor Requirements"><link rel="next" href="tcl-doc.html" title="Documenting Tcl Files: Page Contracts and Libraries"><link rel="stylesheet" href="openacs.css" type="text/css"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><a href="http://openacs.org"><img src="/doc/images/alex.jpg" border="0" alt="Alex logo"></a><table width="100%" summary="Navigation header" border="0"><tr><td width="20%" align="left"><a accesskey="p" href="rp-requirements.html">Prev</a> </td><th width="60%" align="center">Chapter�15.�Kernel Documentation</th><td width="20%" align="right"> <a accesskey="n" href="tcl-doc.html">Next</a></td></tr></table><hr></div><div class="sect1" lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="rp-design"></a>Request Processor Design</h2></div></div></div><div class="authorblurb"><p>By <a href="http://planitia.org" target="_top">Rafael H. Schloming</a> </p>
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html><head><meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"><title>Request Processor Design</title><meta name="generator" content="DocBook XSL Stylesheets V1.60.1"><link rel="home" href="index.html" title="OpenACS Core Documentation"><link rel="up" href="kernel-doc.html" title="Chapter�15.�Kernel Documentation"><link rel="previous" href="rp-requirements.html" title="Request Processor Requirements"><link rel="next" href="tcl-doc.html" title="Documenting Tcl Files: Page Contracts and Libraries"><link rel="stylesheet" href="openacs.css" type="text/css"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><a href="http://openacs.org"><img src="/doc/images/alex.jpg" border="0" alt="Alex logo"></a><table width="100%" summary="Navigation header" border="0"><tr><td width="20%" align="left"><a accesskey="p" href="rp-requirements.html">Prev</a> </td><th width="60%" align="center">Chapter�15.�Kernel Documentation</th><td width="20%" align="right"> <a accesskey="n" href="tcl-doc.html">Next</a></td></tr></table><hr></div><div class="sect1" lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="rp-design"></a>Request Processor Design</h2></div></div><div></div></div><div class="authorblurb"><p>By <a href="http://planitia.org" target="_top">Rafael H. Schloming</a> </p>
           OpenACS docs are written by the named authors, and may be edited
           by OpenACS documentation staff.
-        </div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="rp-design-essentials"></a>Essentials</h3></div></div></div><div class="itemizedlist"><ul type="disc"><li><p><a href="rp-requirements.html">OpenACS 4 Request Processor Requirements</a></p></li><li><p><a href="/api-doc/procs-file-view?path=packages/acs-tcl/tcl/request-processor-procs.tcl" target="_top">
+        </div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="rp-design-essentials"></a>Essentials</h3></div></div><div></div></div><div class="itemizedlist"><ul type="disc"><li><p><a href="rp-requirements.html">OpenACS 4 Request Processor Requirements</a></p></li><li><p><a href="/api-doc/procs-file-view?path=packages/acs-tcl/tcl/request-processor-procs.tcl" target="_top">
 /packages/acs-tcl/tcl/request-processor-procs.tcl</a></p></li><li><p><a href="/api-doc/procs-file-view?path=packages/acs-tcl/tcl/request-processor-init.tcl" target="_top">
 /packages/acs-tcl/tcl/request-processor-init.tcl</a></p></li><li><p><a href="/api-doc/procs-file-view?path=packages/acs-tcl/tcl/site-nodes-procs.tcl" target="_top">
 /packages/acs-tcl/tcl/site-nodes-procs.tcl</a></p></li><li><p><a href="/api-doc/procs-file-view?path=packages/acs-tcl/tcl/site-nodes-init.tcl" target="_top">
 /packages/acs-tcl/tcl/site-nodes-init.tcl</a></p></li><li><p><a href="/doc/sql/display-sql?package_key=acs-kernel&amp;url=site-nodes-create.sql" target="_top">
-/packages/acs-kernel/sql/site-nodes-create.sql</a></p></li></ul></div></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="rp-design-intro"></a>Introduction</h3></div></div></div><p>The request processor is the set of procs that responds to every HTTP
+/packages/acs-kernel/sql/site-nodes-create.sql</a></p></li></ul></div></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="rp-design-intro"></a>Introduction</h3></div></div><div></div></div><p>The request processor is the set of procs that responds to every HTTP
 request made to the OpenACS. The request processor must authenticate the
 connecting user, and make sure that he is authorized to perform the given
 request. If these steps succeed, then the request processor must locate the
 file that is associated with the specified URL, and serve the content it
-provides to the browser.</p></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="rp-design-related-systems"></a>Related Systems</h3></div></div></div><div class="itemizedlist"><ul type="disc"><li><p><a href="apm-design.html">Package Manager Design</a></p></li></ul></div></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="rp-design-terminology"></a>Terminology</h3></div></div></div><div class="itemizedlist"><ul type="disc"><li><p>
-<span class="strong"><strong>pageroot</strong></span> -- Any directory that contains scripts and/or
+provides to the browser.</p></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="rp-design-related-systems"></a>Related Systems</h3></div></div><div></div></div><div class="itemizedlist"><ul type="disc"><li><p><a href="apm-design.html">Package Manager Design</a></p></li></ul></div></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="rp-design-terminology"></a>Terminology</h3></div></div><div></div></div><div class="itemizedlist"><ul type="disc"><li><p>
+<span class="strong">pageroot</span> -- Any directory that contains scripts and/or
 static files intended to be served in response to HTTP requests. A typical
-OpenACS installation is required to serve files from multiple pageroots.</p></li><li><p><span class="strong"><strong>global pageroot</strong></span>
-(<span class="strong"><strong>/var/lib/aolserver/<span class="emphasis"><em>servicename</em></span>/www</strong></span>) -- Files appearing under
+OpenACS installation is required to serve files from multiple pageroots.</p></li><li><p><span class="strong">global pageroot</span>
+(<span class="strong">/var/lib/aolserver/<span class="emphasis"><em>servicename</em></span>/www</span>) -- Files appearing under
 this pageroot will be served directly off the base url
-http://www.<span class="emphasis"><em>servicename</em></span>.com/</p></li><li><p><span class="strong"><strong>package root</strong></span>
-(<span class="strong"><strong>/var/lib/aolserver/<span class="emphasis"><em>servicename</em></span>/packages</strong></span>) -- Each subdirectory of
+http://www.<span class="emphasis"><em>servicename</em></span>.com/</p></li><li><p><span class="strong">package root</span>
+(<span class="strong">/var/lib/aolserver/<span class="emphasis"><em>servicename</em></span>/packages</span>) -- Each subdirectory of
 the package root is a package. A typical OpenACS installation will have several
-packages.</p></li><li><p><span class="strong"><strong>package pageroot</strong></span>
-(<span class="strong"><strong>/var/lib/aolserver/<span class="emphasis"><em>servicename</em></span>/packages/<span class="emphasis"><em>package_key</em></span>/www</strong></span>)
--- This is the pageroot for the <span class="emphasis"><em>package_key</em></span> package.</p></li><li><p><span class="strong"><strong>request environment</strong></span> (<span class="strong"><strong>ad_conn</strong></span>) -- This is
+packages.</p></li><li><p><span class="strong">package pageroot</span>
+(<span class="strong">/var/lib/aolserver/<span class="emphasis"><em>servicename</em></span>/packages/<span class="emphasis"><em>package_key</em></span>/www</span>)
+-- This is the pageroot for the <span class="emphasis"><em>package_key</em></span> package.</p></li><li><p><span class="strong">request environment</span> (<span class="strong">ad_conn</span>) -- This is
 a global namespace containing variables associated with the current
-request.</p></li><li><p><span class="strong"><strong>abstract URL</strong></span> -- A URL with no extension that doesn't
-directly correspond to a file in the filesystem.</p></li><li><p><span class="strong"><strong>abstract file</strong></span> or <span class="strong"><strong>abstract path</strong></span> -- A URL
+request.</p></li><li><p><span class="strong">abstract URL</span> -- A URL with no extension that doesn't
+directly correspond to a file in the filesystem.</p></li><li><p><span class="strong">abstract file</span> or <span class="strong">abstract path</span> -- A URL
 that has been translated into a file system path (probably by prepending the
 appropriate pageroot), but still doesn't have any extension and so does
-not directly correspond to a file in the filesystem.</p></li><li><p><span class="strong"><strong>concrete file</strong></span> or <span class="strong"><strong>concrete path</strong></span> -- A file
-or path that actually references something in the filesystem.</p></li></ul></div></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="rp-design-system-overview"></a>System Overview</h3></div></div></div><p><span class="strong"><strong>Package Lookup</strong></span></p><p>One of the first things the request processor must do is to determine
+not directly correspond to a file in the filesystem.</p></li><li><p><span class="strong">concrete file</span> or <span class="strong">concrete path</span> -- A file
+or path that actually references something in the filesystem.</p></li></ul></div></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="rp-design-system-overview"></a>System Overview</h3></div></div><div></div></div><p><span class="strong">Package Lookup</span></p><p>One of the first things the request processor must do is to determine
 which package instance a given request references, and based on this
 information, which pageroot to use when searching for a file to serve. During
 this process the request processor divides the URL into two pieces. The first
 portion identifies the package instance. The rest identifies the path into
 the package pageroot. For example if the news package is mounted on
 /offices/boston/announcements/, then a request for
 /offices/boston/announcements/index would be split into the
-<span class="strong"><strong>package_url</strong></span> (/offices/boston/announcements/), and the
+<span class="strong">package_url</span> (/offices/boston/announcements/), and the
 abstract (no extension info) file path (index). The request processor must be
-able to figure out which <span class="strong"><strong>package_id</strong></span> is associated with a
+able to figure out which <span class="strong">package_id</span> is associated with a
 given package_url, and package mountings must be persistent across server
 restarts and users must be able to manipulate the mountings on a live site,
-therefore this mapping is stored in the database.</p><p><span class="strong"><strong>Authentication and Authorization</strong></span></p><p>Once the request processor has located both the package_id and concrete
+therefore this mapping is stored in the database.</p><p><span class="strong">Authentication and Authorization</span></p><p>Once the request processor has located both the package_id and concrete
 file associated with the request, authentication is performed by the <a href="../sessions.html" target="_top">session</a> security system. After authentication has
 been performed the user is authorized to have read access for the given
 package by the <a href="permissions-design.html">OpenACS 4 Permissions Design</a>.
 If authorization succeeds then the request is served, otherwise it is
-aborted.</p><p><span class="strong"><strong>Concrete File Search</strong></span></p><p>To actually serve a file, the request processor generates an ordered list
+aborted.</p><p><span class="strong">Concrete File Search</span></p><p>To actually serve a file, the request processor generates an ordered list
 of abstract paths and searches each path for a concrete file. The first path
 searched is composed of the package pageroot with the extra portion of the
 URL appended. The second abstract path consists of the global pageroot with
@@ -58,22 +59,22 @@
 directory. Files take precedence over directory listings, so an index file in
 the global pageroot will be served instead of a directory listing in the
 package pageroot, even though the global pageroot is searched later. If a
-file is found at any of the searched locations then it is served.</p><p><span class="strong"><strong>Virtual URL Handlers</strong></span></p><p>If no file is found during the concrete file search, then the request
-processor searches the filesystem for a <span class="strong"><strong>virtual url handler</strong></span>
-(<span class="strong"><strong>.vuh</strong></span>) file. This file contains normal tcl code, and is in
+file is found at any of the searched locations then it is served.</p><p><span class="strong">Virtual URL Handlers</span></p><p>If no file is found during the concrete file search, then the request
+processor searches the filesystem for a <span class="strong">virtual url handler</span>
+(<span class="strong">.vuh</span>) file. This file contains normal tcl code, and is in
 fact handled by the same extension handling procedure that handles .tcl
 files. The only way this file is treated differently is in how the request
 processor searches for it. When a lookup fails, the request processor
 generates each valid prefix of all the abstract paths considered in the
 concrete file search, and searches these prefixes in order from most specific
 to least specific for a matching .vuh file. If a file is found then the
-ad_conn variable <span class="strong"><strong>path_info</strong></span> is set to the portion of the url
+ad_conn variable <span class="strong">path_info</span> is set to the portion of the url
 <span class="emphasis"><em>not</em></span> matched by the .vuh script, and the script is sourced. This
 facility is intended to replace the concept of registered procs, since no
 special distinction is required between sitewide procs and package specific
 procs when using this facility. It is also much less prone to overlap and
 confusion than the use of registered procs, especially in an environment with
-many packages installed.</p></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="rp-design-site-nodes"></a>Site Nodes</h3></div></div></div><p>The request processor manages the mappings from URL patterns to package
+many packages installed.</p></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="rp-design-site-nodes"></a>Site Nodes</h3></div></div><div></div></div><p>The request processor manages the mappings from URL patterns to package
 instances with the site_nodes data model. Every row in the site_nodes table
 represents a fully qualified URL. A package can be mounted on any node in
 this data model. When the request processor performs a URL lookup, it
@@ -86,16 +87,16 @@
 performed by starting with the full request URI and successively stripping
 off the rightmost path components until a match is reached. This way the time
 required to lookup a URL is proportional to the length of the URL, not to the
-number of entries in the mapping.</p></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="rp-design-req-env"></a>Request Environment</h3></div></div></div><p>The request environment is managed by the procedure
-<span class="strong"><strong>ad_conn</strong></span>. Variables can be set and retrieved through use of
+number of entries in the mapping.</p></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="rp-design-req-env"></a>Request Environment</h3></div></div><div></div></div><p>The request environment is managed by the procedure
+<span class="strong">ad_conn</span>. Variables can be set and retrieved through use of
 the ad_conn procedure. The following variables are available for public use.
 If the ad_conn procedure doesn't recognize a variable being passed to it
 for a lookup, it tries to get a value using ns_conn. This guarantees that
-ad_conn subsumes the functionality of ns_conn.</p><div class="informaltable"><table cellspacing="0" border="0"><colgroup><col><col></colgroup><tbody><tr><td colspan="2"><span class="strong"><strong>Request processor</strong></span></td></tr><tr><td valign="top"><code class="computeroutput">[ad_conn urlv]</code> </td><td valign="top">A list containing each element of the URL</td></tr><tr><td valign="top"><code class="computeroutput">[ad_conn url]</code> </td><td valign="top">The URL associated with the request.</td></tr><tr><td valign="top"><code class="computeroutput">[ad_conn query]</code> </td><td valign="top">The portion of the URL from the ? on (i.e. GET
-              variables) associated with the request.</td></tr><tr><td valign="top"><code class="computeroutput">[ad_conn file]</code> </td><td valign="top">The filepath including filename of the file being served</td></tr><tr><td valign="top"><code class="computeroutput">[ad_conn request]</code> </td><td valign="top">The number of requests since the server was last started</td></tr><tr><td valign="top"><code class="computeroutput">[ad_conn start_clicks]</code> </td><td valign="top">The system time when the RP starts handling the request</td></tr><tr><td colspan="2"> </td></tr><tr><td colspan="2"><span class="strong"><strong>Session System Variables</strong></span>: set in
-sec_handler, check security with ad_validate_security_info</td></tr><tr><td valign="top"><code class="computeroutput">[ad_conn session_id]</code> </td><td valign="top">The unique session_id coming from the sequence
-<code class="computeroutput">sec_id_seq</code></td></tr><tr><td valign="top"><code class="computeroutput">[ad_conn user_id]</code> </td><td valign="top">User_id of a person if the person is logged in. Otherwise, it is
-blank</td></tr><tr><td valign="top"><code class="computeroutput">[ad_conn sec_validated]</code> </td><td valign="top">This becomes "secure" when the connection uses SSL</td></tr><tr><td colspan="2"> </td></tr><tr><td colspan="2"><span class="strong"><strong>Database API</strong></span></td></tr><tr><td valign="top"><code class="computeroutput">[ad_conn db,handles]</code> </td><td valign="top">What are the list of handles available to AOL?</td></tr><tr><td valign="top"><code class="computeroutput">[ad_conn db,n_handles_used]</code> </td><td valign="top">How many database handles are currently used?</td></tr><tr><td valign="top"><code class="computeroutput">[ad_conn db,last_used]</code> </td><td valign="top">Which database handle did we use last?</td></tr><tr><td valign="top"><code class="computeroutput">[ad_conn db,transaction_level,$db]</code> </td><td valign="top">Specifies what transaction level we are in</td></tr><tr><td valign="top"><code class="computeroutput">[ad_conn db,db_abort_p,$dbh]</code> </td><td valign="top">Whether the transaction is aborted</td></tr><tr><td colspan="2"> </td></tr><tr><td colspan="2"><span class="strong"><strong>APM</strong></span></td></tr><tr><td valign="top"><code class="computeroutput">[ad_conn xml_loaded_p]</code> </td><td valign="top">Checks whether the XML parser is loaded so that it only gets loaded once.
-Set in apm_load_xml_packages</td></tr><tr><td colspan="2"> </td></tr><tr><td colspan="2"><span class="strong"><strong>Packages</strong></span></td></tr><tr><td valign="top"><code class="computeroutput">[ad_conn package_id]</code> </td><td valign="top">The package_id of the package associated with the URL.</td></tr><tr><td valign="top"><code class="computeroutput">[ad_conn package_url]</code> </td><td valign="top">The URL on which the package is mounted.</td></tr><tr><td colspan="2"> </td></tr><tr><td colspan="2"><span class="strong"><strong>Miscellaneous</strong></span></td></tr><tr><td valign="top"><code class="computeroutput">[ad_conn system_p]</code> </td><td valign="top">If true then the request has been made to one of the special directories
+ad_conn subsumes the functionality of ns_conn.</p><div class="informaltable"><table cellspacing="0" border="0"><colgroup><col><col></colgroup><tbody><tr><td colspan="2"><span class="strong">Request processor</span></td></tr><tr><td valign="top"><tt class="computeroutput">[ad_conn urlv]</tt></td><td valign="top">A list containing each element of the URL</td></tr><tr><td valign="top"><tt class="computeroutput">[ad_conn url]</tt></td><td valign="top">The URL associated with the request.</td></tr><tr><td valign="top"><tt class="computeroutput">[ad_conn query]</tt></td><td valign="top">The portion of the URL from the ? on (i.e. GET
+              variables) associated with the request.</td></tr><tr><td valign="top"><tt class="computeroutput">[ad_conn file]</tt></td><td valign="top">The filepath including filename of the file being served</td></tr><tr><td valign="top"><tt class="computeroutput">[ad_conn request]</tt></td><td valign="top">The number of requests since the server was last started</td></tr><tr><td valign="top"><tt class="computeroutput">[ad_conn start_clicks]</tt></td><td valign="top">The system time when the RP starts handling the request</td></tr><tr><td colspan="2">�</td></tr><tr><td colspan="2"><span class="strong">Session System Variables</span>: set in
+sec_handler, check security with ad_validate_security_info</td></tr><tr><td valign="top"><tt class="computeroutput">[ad_conn session_id]</tt></td><td valign="top">The unique session_id coming from the sequence
+<tt class="computeroutput">sec_id_seq</tt></td></tr><tr><td valign="top"><tt class="computeroutput">[ad_conn user_id]</tt></td><td valign="top">User_id of a person if the person is logged in. Otherwise, it is
+blank</td></tr><tr><td valign="top"><tt class="computeroutput">[ad_conn sec_validated]</tt></td><td valign="top">This becomes &quot;secure&quot; when the connection uses SSL</td></tr><tr><td colspan="2">�</td></tr><tr><td colspan="2"><span class="strong">Database API</span></td></tr><tr><td valign="top"><tt class="computeroutput">[ad_conn db,handles]</tt></td><td valign="top">What are the list of handles available to AOL?</td></tr><tr><td valign="top"><tt class="computeroutput">[ad_conn db,n_handles_used]</tt></td><td valign="top">How many database handles are currently used?</td></tr><tr><td valign="top"><tt class="computeroutput">[ad_conn db,last_used]</tt></td><td valign="top">Which database handle did we use last?</td></tr><tr><td valign="top"><tt class="computeroutput">[ad_conn db,transaction_level,$db]</tt></td><td valign="top">Specifies what transaction level we are in</td></tr><tr><td valign="top"><tt class="computeroutput">[ad_conn db,db_abort_p,$dbh]</tt></td><td valign="top">Whether the transaction is aborted</td></tr><tr><td colspan="2">�</td></tr><tr><td colspan="2"><span class="strong">APM</span></td></tr><tr><td valign="top"><tt class="computeroutput">[ad_conn xml_loaded_p]</tt></td><td valign="top">Checks whether the XML parser is loaded so that it only gets loaded once.
+Set in apm_load_xml_packages</td></tr><tr><td colspan="2">�</td></tr><tr><td colspan="2"><span class="strong">Packages</span></td></tr><tr><td valign="top"><tt class="computeroutput">[ad_conn package_id]</tt></td><td valign="top">The package_id of the package associated with the URL.</td></tr><tr><td valign="top"><tt class="computeroutput">[ad_conn package_url]</tt></td><td valign="top">The URL on which the package is mounted.</td></tr><tr><td colspan="2">�</td></tr><tr><td colspan="2"><span class="strong">Miscellaneous</span></td></tr><tr><td valign="top"><tt class="computeroutput">[ad_conn system_p]</tt></td><td valign="top">If true then the request has been made to one of the special directories
 specified in the config file (somewhere), and no authentication or
-authorization has been performed.</td></tr><tr><td colspan="2"> </td></tr><tr><td colspan="2"><span class="strong"><strong>Documentation</strong></span></td></tr><tr><td valign="top"><code class="computeroutput">[ad_conn api_page_documentation_mode_p]</code> </td><td valign="top">�</td></tr></tbody></table></div></div></div><div class="navfooter"><hr><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="rp-requirements.html">Prev</a> </td><td width="20%" align="center"><a accesskey="h" href="index.html">Home</a></td><td width="40%" align="right"> <a accesskey="n" href="tcl-doc.html">Next</a></td></tr><tr><td width="40%" align="left">Request Processor Requirements </td><td width="20%" align="center"><a accesskey="u" href="kernel-doc.html">Up</a></td><td width="40%" align="right"> Documenting Tcl Files: Page Contracts and Libraries</td></tr></table><hr><address><a href="mailto:docs@openacs.org">docs@openacs.org</a></address></div><a name="comments"></a><center><a href="http://openacs.org/doc/current/rp-design.html#comments">View comments on this page at openacs.org</a></center></body></html>
+authorization has been performed.</td></tr><tr><td colspan="2">�</td></tr><tr><td colspan="2"><span class="strong">Documentation</span></td></tr><tr><td valign="top"><tt class="computeroutput">[ad_conn api_page_documentation_mode_p]</tt></td><td valign="top">�</td></tr></tbody></table></div></div></div><div class="navfooter"><hr><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="rp-requirements.html">Prev</a> </td><td width="20%" align="center"><a accesskey="h" href="index.html">Home</a></td><td width="40%" align="right"> <a accesskey="n" href="tcl-doc.html">Next</a></td></tr><tr><td width="40%" align="left">Request Processor Requirements </td><td width="20%" align="center"><a accesskey="u" href="kernel-doc.html">Up</a></td><td width="40%" align="right"> Documenting Tcl Files: Page Contracts and Libraries</td></tr></table><hr><address><a href="mailto:docs@openacs.org">docs@openacs.org</a></address></div><a name="comments"></a><center><a href="http://openacs.org/doc/current/rp-design.html#comments">View comments on this page at openacs.org</a></center></body></html>
Index: openacs-4/packages/acs-core-docs/www/rp-requirements.html
===================================================================
RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/rp-requirements.html,v
diff -u -r1.26 -r1.26.4.1
--- openacs-4/packages/acs-core-docs/www/rp-requirements.html	17 Jul 2006 05:38:32 -0000	1.26
+++ openacs-4/packages/acs-core-docs/www/rp-requirements.html	3 Feb 2008 12:07:41 -0000	1.26.4.1
@@ -1,13 +1,14 @@
-<html><head><meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"><title>Request Processor Requirements</title><meta name="generator" content="DocBook XSL Stylesheets V1.70.1"><link rel="home" href="index.html" title="OpenACS Core Documentation"><link rel="up" href="kernel-doc.html" title="Chapter�15.�Kernel Documentation"><link rel="previous" href="security-notes.html" title="Security Notes"><link rel="next" href="rp-design.html" title="Request Processor Design"><link rel="stylesheet" href="openacs.css" type="text/css"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><a href="http://openacs.org"><img src="/doc/images/alex.jpg" border="0" alt="Alex logo"></a><table width="100%" summary="Navigation header" border="0"><tr><td width="20%" align="left"><a accesskey="p" href="security-notes.html">Prev</a> </td><th width="60%" align="center">Chapter�15.�Kernel Documentation</th><td width="20%" align="right"> <a accesskey="n" href="rp-design.html">Next</a></td></tr></table><hr></div><div class="sect1" lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="rp-requirements"></a>Request Processor Requirements</h2></div></div></div><div class="authorblurb"><p>By <a href="http://planitia.org" target="_top">Rafael H. Schloming</a> </p>
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html><head><meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"><title>Request Processor Requirements</title><meta name="generator" content="DocBook XSL Stylesheets V1.60.1"><link rel="home" href="index.html" title="OpenACS Core Documentation"><link rel="up" href="kernel-doc.html" title="Chapter�15.�Kernel Documentation"><link rel="previous" href="security-notes.html" title="Security Notes"><link rel="next" href="rp-design.html" title="Request Processor Design"><link rel="stylesheet" href="openacs.css" type="text/css"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><a href="http://openacs.org"><img src="/doc/images/alex.jpg" border="0" alt="Alex logo"></a><table width="100%" summary="Navigation header" border="0"><tr><td width="20%" align="left"><a accesskey="p" href="security-notes.html">Prev</a> </td><th width="60%" align="center">Chapter�15.�Kernel Documentation</th><td width="20%" align="right"> <a accesskey="n" href="rp-design.html">Next</a></td></tr></table><hr></div><div class="sect1" lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="rp-requirements"></a>Request Processor Requirements</h2></div></div><div></div></div><div class="authorblurb"><p>By <a href="http://planitia.org" target="_top">Rafael H. Schloming</a> </p>
           OpenACS docs are written by the named authors, and may be edited
           by OpenACS documentation staff.
-        </div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="rp-requirements-intro"></a>Introduction</h3></div></div></div><p>The following is a requirements document for the OpenACS 4.0 request
+        </div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="rp-requirements-intro"></a>Introduction</h3></div></div><div></div></div><p>The following is a requirements document for the OpenACS 4.0 request
 processor. The major enhancements in the 4.0 version include a more
 sophisticated directory mapping system that allows package pageroots to be
 mounted at arbitrary urls, and tighter integration with the database to allow
-for flexible user controlled url structures, and subsites.</p></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="rp-requirements-vision"></a>Vision Statement</h3></div></div></div><p>Most web servers are designed to serve pages from exactly one static
+for flexible user controlled url structures, and subsites.</p></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="rp-requirements-vision"></a>Vision Statement</h3></div></div><div></div></div><p>Most web servers are designed to serve pages from exactly one static
 pageroot. This restriction can become cumbersome when trying to build a web
-toolkit full of reusable and reconfigurable components.</p></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="rp-requirements-system-overview"></a>System Overview</h3></div></div></div><p>The request processor's functionality can be split into two main
+toolkit full of reusable and reconfigurable components.</p></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="rp-requirements-system-overview"></a>System Overview</h3></div></div><div></div></div><p>The request processor's functionality can be split into two main
 pieces.</p><div class="orderedlist"><ol type="1"><li><p>Set up the environment in which a server side script expects to run. This
 includes things like:</p><div class="itemizedlist"><ul type="disc"><li><p>Initialize common variables associated with a request.</p></li><li><p>Authenticate the connecting party.</p></li><li><p>Check that the connecting party is authorized to proceed with the
 request.</p></li><li><p>Invoke any filters associated with the request URI.</p></li></ul></div></li><li><p>Determine to which entity the request URI maps, and deliver the content
@@ -17,9 +18,9 @@
 for the connecting party. Eventually this may also require determining the
 capabilities of the connecting browser and choosing the most appropriate form
 for the delivered content.</p></li></ol></div><p>It is essential that any errors that occur during the above steps be
-reported to developers in an easily decipherable manner.</p></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="rp-requirements-links"></a>Related Links</h3></div></div></div><p><a href="rp-design.html">OpenACS 4 Request Processor Design</a></p></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="rp-requirements-req"></a>Requirements</h3></div></div></div><p><span class="strong"><strong>10.0 Multiple Pageroots</strong></span></p><div class="blockquote"><blockquote class="blockquote"><p><span class="strong"><strong>10.10</strong></span> Pageroots may be combined into one URL space.</p><p><span class="strong"><strong>10.20</strong></span> Pageroots may be mounted at more than one location in the URL
-space.</p></blockquote></div><p><span class="strong"><strong>20.0 Application Context</strong></span></p><div class="blockquote"><blockquote class="blockquote"><p><span class="strong"><strong>20.10</strong></span> The request processor must be able to determine a primary context
+reported to developers in an easily decipherable manner.</p></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="rp-requirements-links"></a>Related Links</h3></div></div><div></div></div><p><a href="rp-design.html">OpenACS 4 Request Processor Design</a></p></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="rp-requirements-req"></a>Requirements</h3></div></div><div></div></div><p><span class="strong">10.0 Multiple Pageroots</span></p><div class="blockquote"><blockquote class="blockquote"><p><span class="strong">10.10</span> Pageroots may be combined into one URL space.</p><p><span class="strong">10.20</span> Pageroots may be mounted at more than one location in the URL
+space.</p></blockquote></div><p><span class="strong">20.0 Application Context</span></p><div class="blockquote"><blockquote class="blockquote"><p><span class="strong">20.10</span> The request processor must be able to determine a primary context
 or state associated with a pageroot based on it's location within the URL
-space.</p></blockquote></div><p><span class="strong"><strong>30.0 Authentication</strong></span></p><div class="blockquote"><blockquote class="blockquote"><p><span class="strong"><strong>30.10</strong></span> The request processor must be able to verify that the connecting
-browser actually represents the party it claims to represent.</p></blockquote></div><p><span class="strong"><strong>40.0 Authorization</strong></span></p><div class="blockquote"><blockquote class="blockquote"><p><span class="strong"><strong>40.10</strong></span> The request processor must be able to verify that the party the
-connecting browser represents is allowed to make the request.</p></blockquote></div><p><span class="strong"><strong>50.0 Scalability</strong></span></p></div></div><div class="navfooter"><hr><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="security-notes.html">Prev</a> </td><td width="20%" align="center"><a accesskey="h" href="index.html">Home</a></td><td width="40%" align="right"> <a accesskey="n" href="rp-design.html">Next</a></td></tr><tr><td width="40%" align="left">Security Notes </td><td width="20%" align="center"><a accesskey="u" href="kernel-doc.html">Up</a></td><td width="40%" align="right"> Request Processor Design</td></tr></table><hr><address><a href="mailto:docs@openacs.org">docs@openacs.org</a></address></div><a name="comments"></a><center><a href="http://openacs.org/doc/current/rp-requirements.html#comments">View comments on this page at openacs.org</a></center></body></html>
+space.</p></blockquote></div><p><span class="strong">30.0 Authentication</span></p><div class="blockquote"><blockquote class="blockquote"><p><span class="strong">30.10</span> The request processor must be able to verify that the connecting
+browser actually represents the party it claims to represent.</p></blockquote></div><p><span class="strong">40.0 Authorization</span></p><div class="blockquote"><blockquote class="blockquote"><p><span class="strong">40.10</span> The request processor must be able to verify that the party the
+connecting browser represents is allowed to make the request.</p></blockquote></div><p><span class="strong">50.0 Scalability</span></p></div></div><div class="navfooter"><hr><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="security-notes.html">Prev</a> </td><td width="20%" align="center"><a accesskey="h" href="index.html">Home</a></td><td width="40%" align="right"> <a accesskey="n" href="rp-design.html">Next</a></td></tr><tr><td width="40%" align="left">Security Notes </td><td width="20%" align="center"><a accesskey="u" href="kernel-doc.html">Up</a></td><td width="40%" align="right"> Request Processor Design</td></tr></table><hr><address><a href="mailto:docs@openacs.org">docs@openacs.org</a></address></div><a name="comments"></a><center><a href="http://openacs.org/doc/current/rp-requirements.html#comments">View comments on this page at openacs.org</a></center></body></html>
Index: openacs-4/packages/acs-core-docs/www/security-design.html
===================================================================
RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/security-design.html,v
diff -u -r1.28 -r1.28.4.1
--- openacs-4/packages/acs-core-docs/www/security-design.html	17 Jul 2006 05:38:32 -0000	1.28
+++ openacs-4/packages/acs-core-docs/www/security-design.html	3 Feb 2008 12:07:41 -0000	1.28.4.1
@@ -1,7 +1,8 @@
-<html><head><meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"><title>Security Design</title><meta name="generator" content="DocBook XSL Stylesheets V1.70.1"><link rel="home" href="index.html" title="OpenACS Core Documentation"><link rel="up" href="kernel-doc.html" title="Chapter�15.�Kernel Documentation"><link rel="previous" href="security-requirements.html" title="Security Requirements"><link rel="next" href="security-notes.html" title="Security Notes"><link rel="stylesheet" href="openacs.css" type="text/css"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><a href="http://openacs.org"><img src="/doc/images/alex.jpg" border="0" alt="Alex logo"></a><table width="100%" summary="Navigation header" border="0"><tr><td width="20%" align="left"><a accesskey="p" href="security-requirements.html">Prev</a> </td><th width="60%" align="center">Chapter�15.�Kernel Documentation</th><td width="20%" align="right"> <a accesskey="n" href="security-notes.html">Next</a></td></tr></table><hr></div><div class="sect1" lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="security-design"></a>Security Design</h2></div></div></div><div class="authorblurb"><p>By Richard Li and Archit Shah</p>
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html><head><meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"><title>Security Design</title><meta name="generator" content="DocBook XSL Stylesheets V1.60.1"><link rel="home" href="index.html" title="OpenACS Core Documentation"><link rel="up" href="kernel-doc.html" title="Chapter�15.�Kernel Documentation"><link rel="previous" href="security-requirements.html" title="Security Requirements"><link rel="next" href="security-notes.html" title="Security Notes"><link rel="stylesheet" href="openacs.css" type="text/css"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><a href="http://openacs.org"><img src="/doc/images/alex.jpg" border="0" alt="Alex logo"></a><table width="100%" summary="Navigation header" border="0"><tr><td width="20%" align="left"><a accesskey="p" href="security-requirements.html">Prev</a> </td><th width="60%" align="center">Chapter�15.�Kernel Documentation</th><td width="20%" align="right"> <a accesskey="n" href="security-notes.html">Next</a></td></tr></table><hr></div><div class="sect1" lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="security-design"></a>Security Design</h2></div></div><div></div></div><div class="authorblurb"><p>By Richard Li and Archit Shah</p>
           OpenACS docs are written by the named authors, and may be edited
           by OpenACS documentation staff.
-        </div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="security-design-essentials"></a>Essentials</h3></div></div></div><div class="itemizedlist"><ul type="disc"><li><p><a href="security-requirements.html">OpenACS 4 Security Requirements</a></p></li></ul></div></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="security-design-intro"></a>Introduction</h3></div></div></div><p>
+        </div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="security-design-essentials"></a>Essentials</h3></div></div><div></div></div><div class="itemizedlist"><ul type="disc"><li><p><a href="security-requirements.html">OpenACS 4 Security Requirements</a></p></li></ul></div></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="security-design-intro"></a>Introduction</h3></div></div><div></div></div><p>
 This document explains security model design for OpenACS 4. The security system
 with the OpenACS core must authenticate users in both secure and insecure
 environments. In addition, this subsystem provides sessions on top of the
@@ -17,15 +18,15 @@
 </p></li><li><p>SSL with server authentication: <a href="http://home.netscape.com/eng/ssl3/ssl-toc.html" target="_top">SSL v3</a> </p><p>SSL provides the client with a guarantee that the server is
 actually the server it is advertised as being. It also provides a secure
 transport.
-</p></li></ul></div></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="security-design-design"></a>Design</h3></div></div></div><div class="sect3" lang="en"><div class="titlepage"><div><div><h4 class="title"><a name="sessions"></a>Sessions</h4></div></div></div><p>
+</p></li></ul></div></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="security-design-design"></a>Design</h3></div></div><div></div></div><div class="sect3" lang="en"><div class="titlepage"><div><div><h4 class="title"><a name="sessions"></a>Sessions</h4></div></div><div></div></div><p>
 A session is defined as a series of clicks in which no two clicks are
 separated by more than some constant. This constant is the parameter
 SessionTimeout. Using the expiration time on the signatures of the signed
 cookies, we can verify when the cookie was issued and determine if two
 requests are part of the same session. It is important to note that the
 expiration time set in the cookie protocol is not trusted. Only the time
 inserted by the signed cookie mechanism is trusted. 
-</p></div><div class="sect3" lang="en"><div class="titlepage"><div><div><h4 class="title"><a name="authentication"></a>Authentication</h4></div></div></div><p>
+</p></div><div class="sect3" lang="en"><div class="titlepage"><div><div><h4 class="title"><a name="authentication"></a>Authentication</h4></div></div><div></div></div><p>
 Two levels of access can be granted: insecure and secure. This grant lasts
 for the remainder of the particular session. Secure authentication tokens are
 only issued over secured connections. 
@@ -39,86 +40,86 @@
 password can be sniffed from the system, after which the sniffer can apply
 for a secure authentication token. However, the basic architecture here lays
 the foundation for a secure system and can be easily adapted to a more secure
-authentication system by forcing all logins to occur over HTTPS.</p></div><div class="sect3" lang="en"><div class="titlepage"><div><div><h4 class="title"><a name="authentication-details"></a>Details</h4></div></div></div><p>The authentication system issues up to four signed cookies (see below),
-with each cookie serving a different purpose. These cookies are:</p><div class="informaltable"><table cellspacing="0" border="1"><colgroup><col><col><col><col></colgroup><tbody><tr><td><span class="strong"><strong>name</strong></span></td><td><span class="strong"><strong>value</strong></span></td><td><span class="strong"><strong>max-age</strong></span></td><td><span class="strong"><strong>secure?</strong></span></td></tr><tr><td>ad_session_id</td><td>session_id,user_id</td><td>SessionTimeout</td><td>no</td></tr><tr><td>ad_user_login</td><td>user_id</td><td>Infinity</td><td>no</td></tr><tr><td>ad_user_login_secure</td><td>user_id,random</td><td>Infinity</td><td>yes</td></tr><tr><td>ad_secure_token</td><td>session_id,user_id,random</td><td>SessionLifetime</td><td>yes</td></tr></tbody></table></div><div class="itemizedlist"><ul type="disc"><li><p>ad_session_id</p><div class="itemizedlist"><ul type="circle"><li><p>reissued on any hit separated by more than SessionRenew seconds from the
+authentication system by forcing all logins to occur over HTTPS.</p></div><div class="sect3" lang="en"><div class="titlepage"><div><div><h4 class="title"><a name="authentication-details"></a>Details</h4></div></div><div></div></div><p>The authentication system issues up to four signed cookies (see below),
+with each cookie serving a different purpose. These cookies are:</p><div class="informaltable"><table cellspacing="0" border="1"><colgroup><col><col><col><col></colgroup><tbody><tr><td><span class="strong">name</span></td><td><span class="strong">value</span></td><td><span class="strong">max-age</span></td><td><span class="strong">secure?</span></td></tr><tr><td>ad_session_id</td><td>session_id,user_id</td><td>SessionTimeout</td><td>no</td></tr><tr><td>ad_user_login</td><td>user_id</td><td>Infinity</td><td>no</td></tr><tr><td>ad_user_login_secure</td><td>user_id,random</td><td>Infinity</td><td>yes</td></tr><tr><td>ad_secure_token</td><td>session_id,user_id,random</td><td>SessionLifetime</td><td>yes</td></tr></tbody></table></div><div class="itemizedlist"><ul type="disc"><li><p>ad_session_id</p><div class="itemizedlist"><ul type="circle"><li><p>reissued on any hit separated by more than SessionRenew seconds from the
 previous hit that received a cookie</p></li><li><p>is valid only for SessionTimeout seconds</p></li><li><p>is the canonical source for the session ID in ad_conn</p></li></ul></div></li><li><p>ad_user_login</p><div class="itemizedlist"><ul type="circle"><li><p>is used for permanent logins</p></li></ul></div></li><li><p>ad_user_login_secure</p><div class="itemizedlist"><ul type="circle"><li><p>is used for permanent secure logins</p></li><li><p>contains random garbage (ns_time) to prevent attack against the secure
 hash</p></li></ul></div></li><li><p>ad_secure_token
 </p><div class="itemizedlist"><ul type="circle"><li><p>is a session-level cookie from the browser's standpoint</p></li><li><p>its signature expires in SessionLifetime seconds</p></li><li><p>contains random garbage (ns_time) to prevent attack against the secure
-hash</p></li><li><p>user_id is extraneous</p></li></ul></div></li></ul></div></div><div class="sect3" lang="en"><div class="titlepage"><div><div><h4 class="title"><a name="authentication-process"></a>Authentication Process</h4></div></div></div><p>The Tcl function (<code class="computeroutput">sec_handler</code>) is called by the request
+hash</p></li><li><p>user_id is extraneous</p></li></ul></div></li></ul></div></div><div class="sect3" lang="en"><div class="titlepage"><div><div><h4 class="title"><a name="authentication-process"></a>Authentication Process</h4></div></div><div></div></div><p>The Tcl function (<tt class="computeroutput">sec_handler</tt>) is called by the request
 processor to authenticate the user. It first checks the
-<code class="computeroutput">ad_session_id</code> cookie. If there is no valid session in progress,
-a new session is created with <code class="computeroutput">sec_setup_session</code>. If the user
-has permanent login cookies (<code class="computeroutput">ad_user_login</code> and
-<code class="computeroutput">ad_user_login_secure</code>), then they are looked at to determine what
+<tt class="computeroutput">ad_session_id</tt> cookie. If there is no valid session in progress,
+a new session is created with <tt class="computeroutput">sec_setup_session</tt>. If the user
+has permanent login cookies (<tt class="computeroutput">ad_user_login</tt> and
+<tt class="computeroutput">ad_user_login_secure</tt>), then they are looked at to determine what
 user the session should be authorized as. Which cookie is examined is
 determined by whether or not the request is on a secure connection. If
 neither cookie is present, then a session is created without any
-authentication. If the <code class="computeroutput">ad_session_id</code> cookie is valid, the
-user_id and session_id are pulled from it and put into ad_conn.</p></div><div class="sect3" lang="en"><div class="titlepage"><div><div><h4 class="title"><a name="secure-connections"></a>Authenticating Secure Connections</h4></div></div></div><p>Secure connections are authenticated slightly differently. The function
-<code class="computeroutput">ad_secure_conn_p</code> is used to determine whether or not the URL
+authentication. If the <tt class="computeroutput">ad_session_id</tt> cookie is valid, the
+user_id and session_id are pulled from it and put into ad_conn.</p></div><div class="sect3" lang="en"><div class="titlepage"><div><div><h4 class="title"><a name="secure-connections"></a>Authenticating Secure Connections</h4></div></div><div></div></div><p>Secure connections are authenticated slightly differently. The function
+<tt class="computeroutput">ad_secure_conn_p</tt> is used to determine whether or not the URL
 being accessed is requires a secure login. The function simply checks if the
-location begins with "https". (This is safe because the location is
-set during the server initialization.)</p><p>If secure authentication is required, the <code class="computeroutput">ad_secure_token</code>
+location begins with &quot;https&quot;. (This is safe because the location is
+set during the server initialization.)</p><p>If secure authentication is required, the <tt class="computeroutput">ad_secure_token</tt>
 cookie is checked to make sure its data matches the data stored in
-<code class="computeroutput">ad_session_id</code>. This is true for all pages except those that are
+<tt class="computeroutput">ad_session_id</tt>. This is true for all pages except those that are
 part of the login process. On these pages, the user can not yet have received
-the appropriate <code class="computeroutput">ad_secure_token</code> cookie, so no check against it
+the appropriate <tt class="computeroutput">ad_secure_token</tt> cookie, so no check against it
 is performed. The set of pages that skip that processing are determined by
-determined by <code class="computeroutput">ad_login_page</code>. Since the
-<code class="computeroutput">ad_secure_token</code> cookie is a session cookie, it is deleted by the
+determined by <tt class="computeroutput">ad_login_page</tt>. Since the
+<tt class="computeroutput">ad_secure_token</tt> cookie is a session cookie, it is deleted by the
 browser when the browser exits. Since an attacker could conceivably store the
 secure cookie in a replay attack (since expiration date is not validated),
 the data in the secure cookie is never used to set any data in ad_conn;
 user_id and session_id is set from the ad_session_id cookie.</p><p>It is important to note that the integrity of secure authentication rests
-on the two Tcl function <code class="computeroutput">ad_secure_conn_p</code> and
-<code class="computeroutput">ad_login_page</code>. If <code class="computeroutput">ad_secure_conn_p</code> is false, secure
-authentication is not required. If <code class="computeroutput">ad_login_page</code> is false,
-secure authentication is not required.</p></div><div class="sect3" lang="en"><div class="titlepage"><div><div><h4 class="title"><a name="login-process"></a>Login Process</h4></div></div></div><p>The Tcl function <code class="computeroutput">ad_user_login</code> does two things. First it
+on the two Tcl function <tt class="computeroutput">ad_secure_conn_p</tt> and
+<tt class="computeroutput">ad_login_page</tt>. If <tt class="computeroutput">ad_secure_conn_p</tt> is false, secure
+authentication is not required. If <tt class="computeroutput">ad_login_page</tt> is false,
+secure authentication is not required.</p></div><div class="sect3" lang="en"><div class="titlepage"><div><div><h4 class="title"><a name="login-process"></a>Login Process</h4></div></div><div></div></div><p>The Tcl function <tt class="computeroutput">ad_user_login</tt> does two things. First it
 performs the appropriate manipulation of the permanent login cookies, and
 then it updates the current session to reflect the new user_id. The
 manipulation of the permanent login cookies is based on 3 factors:</p><div class="itemizedlist"><ul type="disc"><li><p>previous login: other user, same user</p></li><li><p>permanent: was a permanent login requested?</p></li><li><p>secure: is this a secure connection?</p></li></ul></div><p>
 Both the secure and insecure permanent login cookie can have one of three
 actions taken on it: 
-</p><div class="itemizedlist"><ul type="disc"><li><p>set: cookie with no expiration is set</p></li><li><p>delete: set to "" with max age of 0, so it is expired
+</p><div class="itemizedlist"><ul type="disc"><li><p>set: cookie with no expiration is set</p></li><li><p>delete: set to &quot;&quot; with max age of 0, so it is expired
 immediately</p></li><li><p>nothing: if the cookie is present, it remains</p></li></ul></div><p>
 The current state of the permanent login cookies is not taken into account
 when determining the appropriate action. 
-</p><div class="informaltable"><table cellspacing="0" border="1"><colgroup><col><col><col><col><col></colgroup><tbody><tr><td><span class="strong"><strong>previous login state</strong></span></td><td><span class="strong"><strong>permanent login requested</strong></span></td><td><span class="strong"><strong>secure connection</strong></span></td><td><span class="strong"><strong>action on insecure</strong></span></td><td><span class="strong"><strong>action on secure</strong></span></td></tr><tr><td>other</td><td>y</td><td>y</td><td>set</td><td>set</td></tr><tr><td>same</td><td>y</td><td>y</td><td>set</td><td>set</td></tr><tr><td>other</td><td>y</td><td>n</td><td>set</td><td>delete</td></tr><tr><td>same</td><td>y</td><td>n</td><td>set</td><td>nothing</td></tr><tr><td>same</td><td>n</td><td>y</td><td>nothing</td><td>delete</td></tr><tr><td>other</td><td>n</td><td>y</td><td>delete</td><td>delete</td></tr><tr><td>other</td><td>n</td><td>n</td><td>delete</td><td>delete</td></tr><tr><td>same</td><td>n</td><td>n</td><td>delete</td><td>delete</td></tr></tbody></table></div><p><code class="computeroutput">ad_user_login</code>
-calls<code class="computeroutput">sec_setup_session</code> which actually calls
-<code class="computeroutput">sec_generate_session_id_cookie</code> to generate the
+</p><div class="informaltable"><table cellspacing="0" border="1"><colgroup><col><col><col><col><col></colgroup><tbody><tr><td><span class="strong">previous login state</span></td><td><span class="strong">permanent login requested</span></td><td><span class="strong">secure connection</span></td><td><span class="strong">action on insecure</span></td><td><span class="strong">action on secure</span></td></tr><tr><td>other</td><td>y</td><td>y</td><td>set</td><td>set</td></tr><tr><td>same</td><td>y</td><td>y</td><td>set</td><td>set</td></tr><tr><td>other</td><td>y</td><td>n</td><td>set</td><td>delete</td></tr><tr><td>same</td><td>y</td><td>n</td><td>set</td><td>nothing</td></tr><tr><td>same</td><td>n</td><td>y</td><td>nothing</td><td>delete</td></tr><tr><td>other</td><td>n</td><td>y</td><td>delete</td><td>delete</td></tr><tr><td>other</td><td>n</td><td>n</td><td>delete</td><td>delete</td></tr><tr><td>same</td><td>n</td><td>n</td><td>delete</td><td>delete</td></tr></tbody></table></div><p><tt class="computeroutput">ad_user_login</tt>
+calls<tt class="computeroutput">sec_setup_session</tt> which actually calls
+<tt class="computeroutput">sec_generate_session_id_cookie</tt> to generate the
 new cookie with refer to the appropriate user_id. If the connection is secure
-the <code class="computeroutput">ad_secure_token</code> cookie is generated by a
-call to <code class="computeroutput">sec_generate_secure_token_cookie</code>. This
+the <tt class="computeroutput">ad_secure_token</tt> cookie is generated by a
+call to <tt class="computeroutput">sec_generate_secure_token_cookie</tt>. This
 function is only called from
-<code class="computeroutput">sec_setup_session</code>. Only
-<code class="computeroutput">sec_handler</code> and
-<code class="computeroutput">sec_setup_session</code> call
-<code class="computeroutput">sec_generate_session_id_cookie</code>.
+<tt class="computeroutput">sec_setup_session</tt>. Only
+<tt class="computeroutput">sec_handler</tt> and
+<tt class="computeroutput">sec_setup_session</tt> call
+<tt class="computeroutput">sec_generate_session_id_cookie</tt>.
 
-</p><p><code class="computeroutput">ad_user_logout</code> logs the user out by deleting all 4 cookies
-that are used by the authentication system.</p></div><div class="sect3" lang="en"><div class="titlepage"><div><div><h4 class="title"><a name="session-creation"></a>Session Creation</h4></div></div></div><p>The creation and setup of sessions is handled in
-<code class="computeroutput">sec_setup_session</code>, which is called either to
-create a new session from <code class="computeroutput">sec_handler</code> or from
-<code class="computeroutput">ad_user_login</code> when there is a change in
+</p><p><tt class="computeroutput">ad_user_logout</tt> logs the user out by deleting all 4 cookies
+that are used by the authentication system.</p></div><div class="sect3" lang="en"><div class="titlepage"><div><div><h4 class="title"><a name="session-creation"></a>Session Creation</h4></div></div><div></div></div><p>The creation and setup of sessions is handled in
+<tt class="computeroutput">sec_setup_session</tt>, which is called either to
+create a new session from <tt class="computeroutput">sec_handler</tt> or from
+<tt class="computeroutput">ad_user_login</tt> when there is a change in
 authorization level. The session management code must do two things: insure that
 session-level data does not float between users, and update the users table
-which has columns for <code class="computeroutput">n_sessions</code>,
-<code class="computeroutput">last_visit</code>, and
-<code class="computeroutput">second_to_last_visit</code>.</p><p>If there is no session already setup on this hit, a new session is
-created. This happens when <code class="computeroutput">sec_setup_session</code> is
-called from <code class="computeroutput">sec_handler</code>. If the login is from a
+which has columns for <tt class="computeroutput">n_sessions</tt>,
+<tt class="computeroutput">last_visit</tt>, and
+<tt class="computeroutput">second_to_last_visit</tt>.</p><p>If there is no session already setup on this hit, a new session is
+created. This happens when <tt class="computeroutput">sec_setup_session</tt> is
+called from <tt class="computeroutput">sec_handler</tt>. If the login is from a
 user to another user, a new session is created, otherwise, the current session
 is continued, simply with a higher authorization state. This allows for data
 associated with a session to be carried over when a user logs in.</p><p>The users table is updated by
-<code class="computeroutput">sec_update_user_session_info</code> which is called
+<tt class="computeroutput">sec_update_user_session_info</tt> which is called
 when an existing session is assigned a non-zero user_id, or when a session is
-created with a non-zero user_id.</p></div><div class="sect3" lang="en"><div class="titlepage"><div><div><h4 class="title"><a name="passwords"></a>Passwords</h4></div></div></div><p><code class="computeroutput">ad_user_login</code> assumes a password check has already been
+created with a non-zero user_id.</p></div><div class="sect3" lang="en"><div class="titlepage"><div><div><h4 class="title"><a name="passwords"></a>Passwords</h4></div></div><div></div></div><p><tt class="computeroutput">ad_user_login</tt> assumes a password check has already been
 performed (this will change in the future). The actual check is done by
-<code class="computeroutput">ad_check_password</code>. The database stores a salt and a hash of the
+<tt class="computeroutput">ad_check_password</tt>. The database stores a salt and a hash of the
 password concatenated with the salt. Updating the password
-(<code class="computeroutput">ad_change_password</code>) simply requires getting a new salt
+(<tt class="computeroutput">ad_change_password</tt>) simply requires getting a new salt
 (ns_time) concatenating and rehashing. Both the salt and the hashed password
-field are updated.</p></div><div class="sect3" lang="en"><div class="titlepage"><div><div><h4 class="title"><a name="performance-enhancements"></a>Performance Enhancements</h4></div></div></div><p>A session is labeled by a session_id sequence. Creating a session merely
+field are updated.</p></div><div class="sect3" lang="en"><div class="titlepage"><div><div><h4 class="title"><a name="performance-enhancements"></a>Performance Enhancements</h4></div></div><div></div></div><p>A session is labeled by a session_id sequence. Creating a session merely
 requires incrementing the session_id sequence. We do two things to improve the
 performance of this process. First, sequence values are precomputed and cached
 in the Oracle SGA. In addition, sequence values are incremented by 100 with each
@@ -127,41 +128,41 @@
 command per thread. This minimizes lock contention for the session ID sequence
 and also minimizes the number of DB requests, since each thread can allocate 100
 sessions before requiring another DB hit.  This cache works by keeping two
-counters: <code class="computeroutput">tcl_max_value</code> and
-<code class="computeroutput">tcl_current_sequence_id</code>.  When
-<code class="computeroutput">tcl_current_sequence_id</code> is greater than
-<code class="computeroutput">tcl_max_value</code> a new value is requested from the
-db and <code class="computeroutput">tcl_max_value</code> is incremented by
+counters: <tt class="computeroutput">tcl_max_value</tt> and
+<tt class="computeroutput">tcl_current_sequence_id</tt>.  When
+<tt class="computeroutput">tcl_current_sequence_id</tt> is greater than
+<tt class="computeroutput">tcl_max_value</tt> a new value is requested from the
+db and <tt class="computeroutput">tcl_max_value</tt> is incremented by
 100. This is done on a per-thread basis so that no locking is required.
 
 </p><p>In addition, two procedures are dynamically generated at startup in
-<code class="computeroutput">security-init.tcl</code>. These two procedures use
-<code class="computeroutput">ad_parameter</code> to obtain the constant value of a given parameter;
+<tt class="computeroutput">security-init.tcl</tt>. These two procedures use
+<tt class="computeroutput">ad_parameter</tt> to obtain the constant value of a given parameter;
 these values are used to dynamically generate a procedure that returns a
 constant. This approach avoids (relatively) expensive calls to
-<code class="computeroutput">ad_parameter</code> in <code class="computeroutput">sec_handler</code>. The impact of this
+<tt class="computeroutput">ad_parameter</tt> in <tt class="computeroutput">sec_handler</tt>. The impact of this
 approach is that these parameters cannot be dynamically changed at runtime
-and require a server restart.</p></div><div class="sect3" lang="en"><div class="titlepage"><div><div><h4 class="title"><a name="session-properties"></a>Session Properties</h4></div></div></div><p>
+and require a server restart.</p></div><div class="sect3" lang="en"><div class="titlepage"><div><div><h4 class="title"><a name="session-properties"></a>Session Properties</h4></div></div><div></div></div><p>
 Session properties are stored in a single table that maps session IDs to
 named session properties and values. This table is periodically purged. For
 maximum performance, the table is created with nologging turned on and new
 extents are allocated in 50MB increments to reduce fragmentation. This table
-is swept periodically by <code class="computeroutput">sec_sweep_session</code> which removes
+is swept periodically by <tt class="computeroutput">sec_sweep_session</tt> which removes
 sessions whose first hit was more than SessionLifetime seconds (1 week by
 default) ago. Session properties are removed through that same process with
 cascading delete. 
-</p></div><div class="sect3" lang="en"><div class="titlepage"><div><div><h4 class="title"><a name="secure-session-properties"></a>Secure Session Properties</h4></div></div></div><p>Session properties can be set as secure. In this case,
-<code class="computeroutput">ad_set_client_property</code> will fail if the connection is not
-secure. <code class="computeroutput">ad_get_client_property</code> will behave as if the property
-had not been set if the property was not set securely.</p></div><div class="sect3" lang="en"><div class="titlepage"><div><div><h4 class="title"><a name="digital-signatures"></a>Digital Signatures &amp; Signed Cookies</h4></div></div></div><p>
+</p></div><div class="sect3" lang="en"><div class="titlepage"><div><div><h4 class="title"><a name="secure-session-properties"></a>Secure Session Properties</h4></div></div><div></div></div><p>Session properties can be set as secure. In this case,
+<tt class="computeroutput">ad_set_client_property</tt> will fail if the connection is not
+secure. <tt class="computeroutput">ad_get_client_property</tt> will behave as if the property
+had not been set if the property was not set securely.</p></div><div class="sect3" lang="en"><div class="titlepage"><div><div><h4 class="title"><a name="digital-signatures"></a>Digital Signatures &amp; Signed Cookies</h4></div></div><div></div></div><p>
 Signed cookies are implemented using the generic secure digital signature
 mechanism. This mechanism guarantees that the user can not tamper with (or
 construct a value of his choice) without detection. In addition, it provides
 the optional facility of timing out the signature so it is valid for only a
 certain period of time. This works by simply including an expiration time as
 part of the value that is signed. 
-</p><p>The signature produced by <code class="computeroutput">ad_sign</code> is the Tcl list of
-<code class="computeroutput">token_id,expire_time,hash</code>, where hash =
+</p><p>The signature produced by <tt class="computeroutput">ad_sign</tt> is the Tcl list of
+<tt class="computeroutput">token_id,expire_time,hash</tt>, where hash =
 SHA1(value,token_id,expire_time,secret_token). The secret_token is a forty
 character randomly generated string that is never sent to any user agent. The
 scheme consists of one table:</p><pre class="programlisting">
@@ -173,7 +174,7 @@
     token_timestamp             sysdate
 );
 
-</pre><p><code class="computeroutput">ad_verify_signature</code> takes a value and a signature and
+</pre><p><tt class="computeroutput">ad_verify_signature</tt> takes a value and a signature and
 verifies that the signature was generated using that value. It works simply
 by taking the token_id and expire_time from the signature, and regenerating
 the hash using the supplied value and the secret_token corresponding to the
@@ -185,111 +186,111 @@
 signature, RFC 2109 specifies an optional max age that is returned to the
 client. For most cookies, this max age matches the expiration date of the
 cookie's signature. The standard specifies that when the max age is not
-included, the cookie should be "discarded when the user agent
-exits." Because we can not trust the client to do this, we must specify
+included, the cookie should be &quot;discarded when the user agent
+exits.&quot; Because we can not trust the client to do this, we must specify
 a timeout for the signature. The SessionLifetime parameter is used for this
 purpose, as it represents the maximum possible lifetime of a single
-session.</p><p>RFC 2109 specifies this optional "secure" parameter which
-mandates that the user-agent use "secure means" to contact the
+session.</p><p>RFC 2109 specifies this optional &quot;secure&quot; parameter which
+mandates that the user-agent use &quot;secure means&quot; to contact the
 server when transmitting the cookie. If a secure cookie is returned to the
 client over https, then the cookie will never be transmitted over insecure
-means.</p><div class="sect4" lang="en"><div class="titlepage"><div><div><h5 class="title"><a name="signature-performance"></a>Performance</h5></div></div></div><p>Performance is a key goal of this implementation of signed cookies. To
+means.</p><div class="sect4" lang="en"><div class="titlepage"><div><div><h5 class="title"><a name="signature-performance"></a>Performance</h5></div></div><div></div></div><p>Performance is a key goal of this implementation of signed cookies. To
 maximize performance, we will use the following architecture. At the lowest
-level, we will use the <code class="computeroutput">secret_tokens</code> table as the canonical set
+level, we will use the <tt class="computeroutput">secret_tokens</tt> table as the canonical set
 of secret tokens. This table is necessary for multiple servers to maintain
 the same set of secret tokens. At server startup, a random subset of these
 secret tokens will be loaded into an ns_cache called
-<code class="computeroutput">secret_tokens</code>. When a new signed cookie is requested, a random
+<tt class="computeroutput">secret_tokens</tt>. When a new signed cookie is requested, a random
 token_id is returned out of the entire set of cached token_ids. In addition,
 a thread-persistent cache called tcl_secret_tokens is maintained on a
 per-thread basis.</p><p>Thus, the L2 ns_cache functions as a server-wide LRU cache that has a
-minimum of 100 tokens in it. The cache has a dual purpose:</p><div class="itemizedlist"><ul type="disc"><li><p><span class="strong"><strong>LRU cache</strong></span> Note that cache misses will only occur in the
+minimum of 100 tokens in it. The cache has a dual purpose:</p><div class="itemizedlist"><ul type="disc"><li><p><span class="strong">LRU cache</span> Note that cache misses will only occur in the
 multiple server case, where a user agent may have a signature guaranteed by a
-secret token issued by another server in the cluster.</p></li><li><p><span class="strong"><strong>signature cache</strong></span> Since the cache always maintains a
+secret token issued by another server in the cluster.</p></li><li><p><span class="strong">signature cache</span> Since the cache always maintains a
 minimum of 100 (set by a parameter) tokens populated at startup, it can be
 used to provide a random token for signature purposes.</p></li></ul></div><p>
 The per-thread cache functions as an L1 cache that indiscriminately caches
-all secret tokens. Note that this is <span class="strong"><strong>not</strong></span> an LRU cache
+all secret tokens. Note that this is <span class="strong">not</span> an LRU cache
 because there is no cache eviction policy per se -- the cache is cleared when
 the thread is destroyed by AOLserver. 
-</p></div><div class="sect4" lang="en"><div class="titlepage"><div><div><h5 class="title"><a name="signature-security"></a>Security</h5></div></div></div><p>Storing information on a client always presents an additional security
+</p></div><div class="sect4" lang="en"><div class="titlepage"><div><div><h5 class="title"><a name="signature-security"></a>Security</h5></div></div><div></div></div><p>Storing information on a client always presents an additional security
 risk.</p><p>Since we are only validating the information and not trying to protect it
 as a secret, we don't use salt. Cryptographic salt is useful if you are
-trying to protect information from being read (e.g., hashing passwords).</p></div></div><div class="sect3" lang="en"><div class="titlepage"><div><div><h4 class="title"><a name="external-ssl"></a>External SSL</h4></div></div></div><p>
+trying to protect information from being read (e.g., hashing passwords).</p></div></div><div class="sect3" lang="en"><div class="titlepage"><div><div><h4 class="title"><a name="external-ssl"></a>External SSL</h4></div></div><div></div></div><p>
 External SSL mechanisms (firewall, dedicated hardware, etc.) can be used by
 creating two pools of AOLservers. In one pool the servers should be
 configured with the location parameter of nssock module set to
-"https://yourservername". The servers in the other pool are
+&quot;https://yourservername&quot;. The servers in the other pool are
 configured as normal. The external SSL agent should direct SSL queries to the
 pool of secure servers, and it should direct non-SSL queries to the insecure
 servers. 
-</p></div><div class="sect3" lang="en"><div class="titlepage"><div><div><h4 class="title"><a name="PRNG"></a>PRNG</h4></div></div></div><p>
+</p></div><div class="sect3" lang="en"><div class="titlepage"><div><div><h4 class="title"><a name="PRNG"></a>PRNG</h4></div></div><div></div></div><p>
 The pseudorandom number generator depends primarily on ns_rand, but is also
 seeded with ns_time and the number of page requests served since the server
 was started. The PRNG takes the SHA1(seed,ns_rand,ns_time,requests,clicks),
 and saves the first 40 bits as the seed for the next call to the PRNG in a
 thread-persistent global variable. The remaining 120 bits are rehashed to
 produce 160 bits of output. 
-</p></div></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="security-design-api"></a>API</h3></div></div></div><div class="sect3" lang="en"><div class="titlepage"><div><div><h4 class="title"><a name="login-password-api"></a>Login/Password</h4></div></div></div><p>
-<span class="strong"><strong>ad_user_login <span class="emphasis"><em>user_id</em></span></strong></span> Logs the user in as user
+</p></div></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="security-design-api"></a>API</h3></div></div><div></div></div><div class="sect3" lang="en"><div class="titlepage"><div><div><h4 class="title"><a name="login-password-api"></a>Login/Password</h4></div></div><div></div></div><p>
+<span class="strong">ad_user_login <span class="emphasis"><em>user_id</em></span></span> Logs the user in as user
 <span class="emphasis"><em>user_id</em></span>. Optional forever flag determines whether or not permanent
 cookies are issued. 
-</p><p><span class="strong"><strong>ad_user_logout</strong></span> Logs the user out.</p><p><span class="strong"><strong>ad_check_password <span class="emphasis"><em>user_id</em></span> <span class="emphasis"><em>password</em></span></strong></span>
-returns 0 or 1.</p><p><span class="strong"><strong>ad_change_password <span class="emphasis"><em>user_id</em></span> <span class="emphasis"><em>new
-password</em></span></strong></span></p></div><div class="sect3" lang="en"><div class="titlepage"><div><div><h4 class="title"><a name="signature-api"></a>Digital Signatures and Signed Cookies</h4></div></div></div><p>
-<span class="strong"><strong>ad_sign <span class="emphasis"><em>value</em></span></strong></span> Returns the digital signature of this
+</p><p><span class="strong">ad_user_logout</span> Logs the user out.</p><p><span class="strong">ad_check_password <span class="emphasis"><em>user_id</em></span> <span class="emphasis"><em>password</em></span></span>
+returns 0 or 1.</p><p><span class="strong">ad_change_password <span class="emphasis"><em>user_id</em></span> <span class="emphasis"><em>new
+password</em></span></span></p></div><div class="sect3" lang="en"><div class="titlepage"><div><div><h4 class="title"><a name="signature-api"></a>Digital Signatures and Signed Cookies</h4></div></div><div></div></div><p>
+<span class="strong">ad_sign <span class="emphasis"><em>value</em></span></span> Returns the digital signature of this
 value. Optional parameters allow for the specification of the <span class="emphasis"><em>secret</em></span>
 used, the <span class="emphasis"><em>token_id</em></span> used and the <span class="emphasis"><em>max_age</em></span> for the signature.
-<span class="strong"><strong>ad_verify_signature <span class="emphasis"><em>value</em></span> <span class="emphasis"><em>signature</em></span></strong></span>Returns
+<span class="strong">ad_verify_signature <span class="emphasis"><em>value</em></span> <span class="emphasis"><em>signature</em></span></span>Returns
 1 or 0 indicating whether or not the signature matches the value specified.
 The <span class="emphasis"><em>secret</em></span> parameter allows for specification of a different secret
 token to be used. </p><p>
-<span class="strong"><strong>ad_set_signed_cookie <span class="emphasis"><em>name</em></span> <span class="emphasis"><em>data</em></span></strong></span> Sets a
-signed cookie <span class="emphasis"><em>name</em></span> with value <span class="emphasis"><em>data</em></span>. </p><p><span class="strong"><strong>ad_get_signed_cookie <span class="emphasis"><em>name</em></span></strong></span> Gets the signed cookie
+<span class="strong">ad_set_signed_cookie <span class="emphasis"><em>name</em></span> <span class="emphasis"><em>data</em></span></span> Sets a
+signed cookie <span class="emphasis"><em>name</em></span> with value <span class="emphasis"><em>data</em></span>. </p><p><span class="strong">ad_get_signed_cookie <span class="emphasis"><em>name</em></span></span> Gets the signed cookie
 <span class="emphasis"><em>name</em></span>. It raises an error if the cookie has been tampered with, or if
-its expiration time has passed.</p></div><div class="sect3" lang="en"><div class="titlepage"><div><div><h4 class="title"><a name="session-property-api"></a>Session Properties</h4></div></div></div><p><span class="strong"><strong>ad_set_client_property <span class="emphasis"><em>module</em></span> <span class="emphasis"><em>name</em></span>
-<span class="emphasis"><em>data</em></span></strong></span> Sets a session property with <span class="emphasis"><em>name</em></span> to value
+its expiration time has passed.</p></div><div class="sect3" lang="en"><div class="titlepage"><div><div><h4 class="title"><a name="session-property-api"></a>Session Properties</h4></div></div><div></div></div><p><span class="strong">ad_set_client_property <span class="emphasis"><em>module</em></span> <span class="emphasis"><em>name</em></span>
+<span class="emphasis"><em>data</em></span></span> Sets a session property with <span class="emphasis"><em>name</em></span> to value
 <span class="emphasis"><em>data</em></span> for the module <span class="emphasis"><em>module</em></span>. The optional secure flag
 specifies the property should only be set if the client is authorized for
-secure access (<code class="computeroutput">ad_secure_conn_p</code> is true). There is also an optional
-<span class="emphasis"><em>session_id</em></span> flag to access data from sessions other than the current one.</p><p><span class="strong"><strong>ad_get_client_property <span class="emphasis"><em>module</em></span> <span class="emphasis"><em>name</em></span>
-<span class="emphasis"><em>data</em></span></strong></span> Gets a session property with <span class="emphasis"><em>name</em></span> to for the
+secure access (<tt class="computeroutput">ad_secure_conn_p</tt> is true). There is also an optional
+<span class="emphasis"><em>session_id</em></span> flag to access data from sessions other than the current one.</p><p><span class="strong">ad_get_client_property <span class="emphasis"><em>module</em></span> <span class="emphasis"><em>name</em></span>
+<span class="emphasis"><em>data</em></span></span> Gets a session property with <span class="emphasis"><em>name</em></span> to for the
 module <span class="emphasis"><em>module</em></span>. The optional secure flag specifies the property
 should only be retrieved if the client is authorized for secure access
-(<code class="computeroutput">ad_secure_conn_p</code> is true). There is also an optional
-<span class="emphasis"><em>session_id</em></span> flag to access data from sessions other than the current one.</p></div><div class="sect3" lang="en"><div class="titlepage"><div><div><h4 class="title"><a name="parameters"></a>Parameters</h4></div></div></div><p>
-<span class="strong"><strong>SessionTimeout</strong></span> the maximum time in seconds (default 1200)
-between requests that are part of the same session </p><p><span class="strong"><strong>SessionRenew</strong></span> the time in seconds (default 300) between
+(<tt class="computeroutput">ad_secure_conn_p</tt> is true). There is also an optional
+<span class="emphasis"><em>session_id</em></span> flag to access data from sessions other than the current one.</p></div><div class="sect3" lang="en"><div class="titlepage"><div><div><h4 class="title"><a name="parameters"></a>Parameters</h4></div></div><div></div></div><p>
+<span class="strong">SessionTimeout</span> the maximum time in seconds (default 1200)
+between requests that are part of the same session </p><p><span class="strong">SessionRenew</span> the time in seconds (default 300) between
 reissue of the session cookie. The minimum time that can pass after a session
 cookie is issued and before it is rejected is (SessionTimeout -
 SessionRenew). This parameter is used so that only one session_id cookie is
 set on a single page even if there are multiple images that are being
-downloaded.</p><p><span class="strong"><strong>SessionLifetime</strong></span> the maximum possible lifetime of a
-session in seconds (default 604800 = 7 days)</p><p><span class="strong"><strong>NumberOfCachedSecretTokens</strong></span> the number of secret tokens to
-cache. (default 100)</p></div></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="security-design-future"></a>Future Improvements</h3></div></div></div><div class="sect3" lang="en"><div class="titlepage"><div><div><h4 class="title"><a name="PRNG-impl"></a>PRNG implementation</h4></div></div></div><p>
+downloaded.</p><p><span class="strong">SessionLifetime</span> the maximum possible lifetime of a
+session in seconds (default 604800 = 7 days)</p><p><span class="strong">NumberOfCachedSecretTokens</span> the number of secret tokens to
+cache. (default 100)</p></div></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="security-design-future"></a>Future Improvements</h3></div></div><div></div></div><div class="sect3" lang="en"><div class="titlepage"><div><div><h4 class="title"><a name="PRNG-impl"></a>PRNG implementation</h4></div></div><div></div></div><p>
 The pseudorandom number generator used in the OpenACS is cryptographically weak,
-and depends primarily on the randomness of the <code class="computeroutput">ns_rand</code> function
+and depends primarily on the randomness of the <tt class="computeroutput">ns_rand</tt> function
 for its randomness. The implementation of the PRNG could be substantially
 improved. 
-</p></div><div class="sect3" lang="en"><div class="titlepage"><div><div><h4 class="title"><a name="ad_user_login"></a><code class="computeroutput">ad_user_login</code></h4></div></div></div><p>
+</p></div><div class="sect3" lang="en"><div class="titlepage"><div><div><h4 class="title"><a name="ad_user_login"></a><tt class="computeroutput">ad_user_login</tt></h4></div></div><div></div></div><p>
 Add a password argument. It is non-optimal to make the default behavior to
 assume that the password was provided. 
-</p></div><div class="sect3" lang="en"><div class="titlepage"><div><div><h4 class="title"><a name="secret-tokens"></a>Secret Tokens</h4></div></div></div><p>
+</p></div><div class="sect3" lang="en"><div class="titlepage"><div><div><h4 class="title"><a name="secret-tokens"></a>Secret Tokens</h4></div></div><div></div></div><p>
 The secret tokens pool is currently static. Ideally, this pool should be
 changed on a random but regular basis, and the number of secret_tokens
 increased as the number of users come to the web site. 
 </p><p>Since the security of the entire system depends on the secret tokens pool,
 access to the secret tokens table should be restricted and accessible via a
 strict PL/SQL API. This can be done by revoking standard SQL permissions on
 the table for the AOLserver user and giving those permissions to a PL/SQL
-package.</p></div><div class="sect3" lang="en"><div class="titlepage"><div><div><h4 class="title"><a name="robots"></a>Robots</h4></div></div></div><p>
+package.</p></div><div class="sect3" lang="en"><div class="titlepage"><div><div><h4 class="title"><a name="robots"></a>Robots</h4></div></div><div></div></div><p>
 Deferring session to creation until the second hit from a browser seems to be
 a good way of preventing a lot of overhead processing for robots. If we do
 this, send cookie on first hit to test if cookies are accepted, then actually
 allocate on second hit. To preserve a record of the first hit of the session,
 just include any info about that first hit in the probe cookie sent. Look at
 how usca_p (user session cookie attempted) is used in OpenACS 3.x ecommerce. 
-</p></div><div class="sect3" lang="en"><div class="titlepage"><div><div><h4 class="title"><a name="client-property-future"></a>Client properties</h4></div></div></div><p>
+</p></div><div class="sect3" lang="en"><div class="titlepage"><div><div><h4 class="title"><a name="client-property-future"></a>Client properties</h4></div></div><div></div></div><p>
 Currently there are only session properties. Because sessions have a maximum
 life, properties have a maximum life. It would be nice to expand the
 interface to allow for more persistent properties. In the past, there was a
@@ -302,7 +303,7 @@
 can be shared between concurrent sessions). The applications should have
 control over the deletion patterns, but should not be able to ignore the
 amount of data stored. 
-</p></div><div class="sect3" lang="en"><div class="titlepage"><div><div><h4 class="title"><a name="session-information"></a>Session information</h4></div></div></div><p>
+</p></div><div class="sect3" lang="en"><div class="titlepage"><div><div><h4 class="title"><a name="session-information"></a>Session information</h4></div></div><div></div></div><p>
 It would be nice to keep some info about sessions: first hit, last hit, and
 URLs visited come to mind. Both logging and API for accessing this info would
 be nice. WimpyPoint is an application that already wants to use this
@@ -311,7 +312,7 @@
 analyzers (leaving it in server memory for applications to access). Putting
 it into the database at all is probably too big a hammer. Certainly putting
 it into the database on every hit is too big a hammer. 
-</p></div><div class="sect3" lang="en"><div class="titlepage"><div><div><h4 class="title"><a name="cookieless-sessions"></a>Cookieless Sessions</h4></div></div></div><p>Two trends drive the requirement for removing cookie dependence. WAP
+</p></div><div class="sect3" lang="en"><div class="titlepage"><div><div><h4 class="title"><a name="cookieless-sessions"></a>Cookieless Sessions</h4></div></div><div></div></div><p>Two trends drive the requirement for removing cookie dependence. WAP
 browsers that do not have cookies, and publc perceptions of cookies as an
 invasion of privacy. The rely on the cookies mechanism in HTTP to distinguish
 one request from the next, and we trust it to force requests from the same
@@ -330,21 +331,21 @@
 Both of these problems can be mitigated by doing detection of cookie support
 (see the section on robot detection). To help deal with the first problem, One
 could also make the restriction that secure sessions are only allowed over
-cookied HTTP.</p></div></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="security-design-vulnerability"></a>Vulnerability Analysis</h3></div></div></div><p>
+cookied HTTP.</p></div></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="security-design-vulnerability"></a>Vulnerability Analysis</h3></div></div><div></div></div><p>
 This section is not meant to be a comprehensive analysis of the
 vulnerabilities of the security system. Listed below are possible attack
 points for the system; these vulnerabilities are currently theoretical in
 nature. The major cryptographic vulnerability of the system stems from the
 pseudorandom nature of the random number generators used in the system. 
-</p><div class="itemizedlist"><ul type="disc"><li><p><span class="strong"><strong>Cryptographically weak PRNG</strong></span> see
-above.</p></li><li><p><span class="strong"><strong>Dependence on <code class="computeroutput">sample</code>
-SQL command</strong></span> The list of random token that are placed in the secret
+</p><div class="itemizedlist"><ul type="disc"><li><p><span class="strong">Cryptographically weak PRNG</span> see
+above.</p></li><li><p><span class="strong">Dependence on <tt class="computeroutput">sample</tt>
+SQL command</span> The list of random token that are placed in the secret
 tokens cache is randomly chosen by the Oracle
-<code class="computeroutput">sample</code> command. This command may not be
+<tt class="computeroutput">sample</tt> command. This command may not be
 entirely random, so predicting the contents of the secret tokens cache may not
-be as difficult as someone may anticipate.</p></li><li><p><span class="strong"><strong>Dependence on
-<code class="computeroutput">ns_rand</code></strong></span> The actual token that is
+be as difficult as someone may anticipate.</p></li><li><p><span class="strong">Dependence on
+<tt class="computeroutput">ns_rand</tt></span> The actual token that is
 chosen from the cache to be used is chosen by a call to
-<code class="computeroutput">ns_rand</code>.</p></li><li><p><span class="strong"><strong><code class="computeroutput">ad_secure_conn_p</code></strong></span>
+<tt class="computeroutput">ns_rand</tt>.</p></li><li><p><span class="strong"><tt class="computeroutput">ad_secure_conn_p</tt></span>
 As discussed above, the security of the secure sessions authentication system is
 dependent upon this function.</p></li></ul></div></div></div><div class="navfooter"><hr><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="security-requirements.html">Prev</a> </td><td width="20%" align="center"><a accesskey="h" href="index.html">Home</a></td><td width="40%" align="right"> <a accesskey="n" href="security-notes.html">Next</a></td></tr><tr><td width="40%" align="left">Security Requirements </td><td width="20%" align="center"><a accesskey="u" href="kernel-doc.html">Up</a></td><td width="40%" align="right"> Security Notes</td></tr></table><hr><address><a href="mailto:docs@openacs.org">docs@openacs.org</a></address></div><a name="comments"></a><center><a href="http://openacs.org/doc/current/security-design.html#comments">View comments on this page at openacs.org</a></center></body></html>
Index: openacs-4/packages/acs-core-docs/www/security-notes.html
===================================================================
RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/security-notes.html,v
diff -u -r1.42 -r1.42.4.1
--- openacs-4/packages/acs-core-docs/www/security-notes.html	17 Jul 2006 05:38:32 -0000	1.42
+++ openacs-4/packages/acs-core-docs/www/security-notes.html	3 Feb 2008 12:07:41 -0000	1.42.4.1
@@ -1,11 +1,12 @@
-<html><head><meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"><title>Security Notes</title><meta name="generator" content="DocBook XSL Stylesheets V1.70.1"><link rel="home" href="index.html" title="OpenACS Core Documentation"><link rel="up" href="kernel-doc.html" title="Chapter�15.�Kernel Documentation"><link rel="previous" href="security-design.html" title="Security Design"><link rel="next" href="rp-requirements.html" title="Request Processor Requirements"><link rel="stylesheet" href="openacs.css" type="text/css"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><a href="http://openacs.org"><img src="/doc/images/alex.jpg" border="0" alt="Alex logo"></a><table width="100%" summary="Navigation header" border="0"><tr><td width="20%" align="left"><a accesskey="p" href="security-design.html">Prev</a> </td><th width="60%" align="center">Chapter�15.�Kernel Documentation</th><td width="20%" align="right"> <a accesskey="n" href="rp-requirements.html">Next</a></td></tr></table><hr></div><div class="sect1" lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="security-notes"></a>Security Notes</h2></div></div></div><div class="authorblurb"><p>By Richard Li</p>
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html><head><meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"><title>Security Notes</title><meta name="generator" content="DocBook XSL Stylesheets V1.60.1"><link rel="home" href="index.html" title="OpenACS Core Documentation"><link rel="up" href="kernel-doc.html" title="Chapter�15.�Kernel Documentation"><link rel="previous" href="security-design.html" title="Security Design"><link rel="next" href="rp-requirements.html" title="Request Processor Requirements"><link rel="stylesheet" href="openacs.css" type="text/css"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><a href="http://openacs.org"><img src="/doc/images/alex.jpg" border="0" alt="Alex logo"></a><table width="100%" summary="Navigation header" border="0"><tr><td width="20%" align="left"><a accesskey="p" href="security-design.html">Prev</a> </td><th width="60%" align="center">Chapter�15.�Kernel Documentation</th><td width="20%" align="right"> <a accesskey="n" href="rp-requirements.html">Next</a></td></tr></table><hr></div><div class="sect1" lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="security-notes"></a>Security Notes</h2></div></div><div></div></div><div class="authorblurb"><p>By Richard Li</p>
           OpenACS docs are written by the named authors, and may be edited
           by OpenACS documentation staff.
         </div><p>
 The security system was designed for security. Thus, decisions requiring
 trade-offs between ease-of-use and security tend to result in a system that
 may not be as easy to use but is more secure. 
-</p><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="security-notes-https-sessions"></a>HTTPS and the sessions system</h3></div></div></div><p>
+</p><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="security-notes-https-sessions"></a>HTTPS and the sessions system</h3></div></div><div></div></div><p>
 
 If a user switches to HTTPS after logging into the system via HTTP, the user
 must obtain a secure token. To insure security, the <span class="emphasis"><em>only way</em></span> to
@@ -20,21 +21,21 @@
 issues a secure token, the method of authentication must be as strong as the
 method of transmission.</p><p>If a developer truly does not want such a level of protection, this system
 can be disabled via source code modification only. This can be accomplished
-by commenting out the following lines in the <code class="computeroutput">sec_handler</code>
-procedure defined in <code class="computeroutput">security-procs.tcl</code>:</p><pre class="programlisting">
+by commenting out the following lines in the <tt class="computeroutput">sec_handler</tt>
+procedure defined in <tt class="computeroutput">security-procs.tcl</tt>:</p><pre class="programlisting">
 
     if { [ad_secure_conn_p] &amp;&amp; ![ad_login_page] } {
-        set s_token_cookie [ns_urldecode [ad_get_cookie "ad_secure_token"]]
+        set s_token_cookie [ns_urldecode [ad_get_cookie &quot;ad_secure_token&quot;]]
         
         if { [empty_string_p $s_token_cookie] || [string compare $s_token_cookie [lindex [sec_get_session_info $session_id] 2]] != 0 } {
         # token is incorrect or nonexistent, so we force relogin.
-        ad_returnredirect "/register/index?return_url=[ns_urlencode [ad_conn url]?[ad_conn query]]"
+        ad_returnredirect &quot;/register/index?return_url=[ns_urlencode [ad_conn url]?[ad_conn query]]&quot;
         }
     }
 
 </pre><p>The source code must also be edited if the user login pages have been
 moved out of an OpenACS system. This information is contained by the
-<code class="computeroutput">ad_login_page</code> procedure in <code class="computeroutput">security-procs.tcl</code>:</p><pre class="programlisting">
+<tt class="computeroutput">ad_login_page</tt> procedure in <tt class="computeroutput">security-procs.tcl</tt>:</p><pre class="programlisting">
 
 ad_proc -private ad_login_page {} {
     
@@ -43,7 +44,7 @@
 } {
 
     set url [ad_conn url]
-    if { [string match "*register/*" $url] || [string match "/index*" $url] } {
+    if { [string match &quot;*register/*&quot; $url] || [string match &quot;/index*&quot; $url] } {
     return 1
     }
 
@@ -53,5 +54,5 @@
 </pre><p>
 The set of string match expressions in the procedure above should be extended
 appropriately for other registration pages. This procedure does not use
-<code class="computeroutput">ad_parameter</code> or regular expressions for performance reasons, as
+<tt class="computeroutput">ad_parameter</tt> or regular expressions for performance reasons, as
 it is called by the request processor. </p><div class="cvstag">($Id$)</div></div></div><div class="navfooter"><hr><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="security-design.html">Prev</a> </td><td width="20%" align="center"><a accesskey="h" href="index.html">Home</a></td><td width="40%" align="right"> <a accesskey="n" href="rp-requirements.html">Next</a></td></tr><tr><td width="40%" align="left">Security Design </td><td width="20%" align="center"><a accesskey="u" href="kernel-doc.html">Up</a></td><td width="40%" align="right"> Request Processor Requirements</td></tr></table><hr><address><a href="mailto:docs@openacs.org">docs@openacs.org</a></address></div><a name="comments"></a><center><a href="http://openacs.org/doc/current/security-notes.html#comments">View comments on this page at openacs.org</a></center></body></html>
Index: openacs-4/packages/acs-core-docs/www/security-requirements.html
===================================================================
RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/security-requirements.html,v
diff -u -r1.28 -r1.28.4.1
--- openacs-4/packages/acs-core-docs/www/security-requirements.html	17 Jul 2006 05:38:32 -0000	1.28
+++ openacs-4/packages/acs-core-docs/www/security-requirements.html	3 Feb 2008 12:07:41 -0000	1.28.4.1
@@ -1,46 +1,47 @@
-<html><head><meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"><title>Security Requirements</title><meta name="generator" content="DocBook XSL Stylesheets V1.70.1"><link rel="home" href="index.html" title="OpenACS Core Documentation"><link rel="up" href="kernel-doc.html" title="Chapter�15.�Kernel Documentation"><link rel="previous" href="i18n-requirements.html" title="OpenACS Internationalization Requirements"><link rel="next" href="security-design.html" title="Security Design"><link rel="stylesheet" href="openacs.css" type="text/css"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><a href="http://openacs.org"><img src="/doc/images/alex.jpg" border="0" alt="Alex logo"></a><table width="100%" summary="Navigation header" border="0"><tr><td width="20%" align="left"><a accesskey="p" href="i18n-requirements.html">Prev</a> </td><th width="60%" align="center">Chapter�15.�Kernel Documentation</th><td width="20%" align="right"> <a accesskey="n" href="security-design.html">Next</a></td></tr></table><hr></div><div class="sect1" lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="security-requirements"></a>Security Requirements</h2></div></div></div><div class="authorblurb"><p>By Richard Li</p>
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html><head><meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"><title>Security Requirements</title><meta name="generator" content="DocBook XSL Stylesheets V1.60.1"><link rel="home" href="index.html" title="OpenACS Core Documentation"><link rel="up" href="kernel-doc.html" title="Chapter�15.�Kernel Documentation"><link rel="previous" href="i18n-requirements.html" title="OpenACS Internationalization Requirements"><link rel="next" href="security-design.html" title="Security Design"><link rel="stylesheet" href="openacs.css" type="text/css"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><a href="http://openacs.org"><img src="/doc/images/alex.jpg" border="0" alt="Alex logo"></a><table width="100%" summary="Navigation header" border="0"><tr><td width="20%" align="left"><a accesskey="p" href="i18n-requirements.html">Prev</a> </td><th width="60%" align="center">Chapter�15.�Kernel Documentation</th><td width="20%" align="right"> <a accesskey="n" href="security-design.html">Next</a></td></tr></table><hr></div><div class="sect1" lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="security-requirements"></a>Security Requirements</h2></div></div><div></div></div><div class="authorblurb"><p>By Richard Li</p>
           OpenACS docs are written by the named authors, and may be edited
           by OpenACS documentation staff.
-        </div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="security-requirements-intro"></a>Introduction</h3></div></div></div><p>
+        </div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="security-requirements-intro"></a>Introduction</h3></div></div><div></div></div><p>
 This document lists the requirements for the security system for the OpenACS. 
-</p></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="security-requirements-vision"></a>Vision Statement</h3></div></div></div><p>
+</p></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="security-requirements-vision"></a>Vision Statement</h3></div></div><div></div></div><p>
 Virtually all web sites support personalized content based on user identity.
 The level of personalization may be as simple as displaying the name of the
 user on certain pages or can be as sophisticated as dynamically recommending
 sections of site that the user may be interested in based on prior browsing
 history. In any case, the user's identity must be validated and made
 available to the rest of the system. In addition, sites such as ecommerce
 vendors require that the user identity be securely validated. 
-</p></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="security-requirements-system-overview"></a>Security System Overview</h3></div></div></div><p>
+</p></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="security-requirements-system-overview"></a>Security System Overview</h3></div></div><div></div></div><p>
 The security system consists of a number of subsystems. 
-</p><p><span class="strong"><strong>Signed Cookies</strong></span></p><p>
+</p><p><span class="strong">Signed Cookies</span></p><p>
 Cookies play a key role in storing user information. However, since they are
 stored in plaintext on a user's system, the validity of cookies is an
 important issue in trusting cookie information. Thus, we want to be able to
 validate a cookie, but we also want to validate the cookie without a database
 hit. 
-</p><div class="itemizedlist"><ul type="disc"><li><p><span class="strong"><strong>10.0 Guaranteed Tamper Detection</strong></span> Any tampering of cookie
-data should be easily detectable by the web server.</p></li><li><p><span class="strong"><strong>10.1 Performance and Scalability</strong></span> Validation and
+</p><div class="itemizedlist"><ul type="disc"><li><p><span class="strong">10.0 Guaranteed Tamper Detection</span> Any tampering of cookie
+data should be easily detectable by the web server.</p></li><li><p><span class="strong">10.1 Performance and Scalability</span> Validation and
 verification of the cookie should be easily scalable and should not require a
-database query on every hit.</p></li></ul></div><p><span class="strong"><strong>Session Properties</strong></span></p><p>
+database query on every hit.</p></li></ul></div><p><span class="strong">Session Properties</span></p><p>
 Applications should be able to store session-level properties in a database
 table. 
-</p><div class="itemizedlist"><ul type="disc"><li><p><span class="strong"><strong>11.0 Storage API</strong></span> Session-level data should be accessible
-via an API.</p></li><li><p><span class="strong"><strong>11.1 Purge Mechanism</strong></span> An efficient pruning mechanism
+</p><div class="itemizedlist"><ul type="disc"><li><p><span class="strong">11.0 Storage API</span> Session-level data should be accessible
+via an API.</p></li><li><p><span class="strong">11.1 Purge Mechanism</span> An efficient pruning mechanism
 should be used to prevent old session level properties from filling up the
-table.</p></li></ul></div><p><span class="strong"><strong>Login</strong></span></p><p>
+table.</p></li></ul></div><p><span class="strong">Login</span></p><p>
 The security system should support the concept of persistent user logins.
 This persistence takes several forms. 
-</p><div class="itemizedlist"><ul type="disc"><li><p><span class="strong"><strong>12.0 Permanent Login</strong></span> Users should be able to maintain a
-permanent user login so that they never need to type their password.</p></li><li><p><span class="strong"><strong>12.1 Session Login</strong></span> The security system should support
+</p><div class="itemizedlist"><ul type="disc"><li><p><span class="strong">12.0 Permanent Login</span> Users should be able to maintain a
+permanent user login so that they never need to type their password.</p></li><li><p><span class="strong">12.1 Session Login</span> The security system should support
 the concept of a session, with authentication tokens that become invalid
-after a certain period of time.</p></li><li><p><span class="strong"><strong>12.2 Session Definition</strong></span> A session is a sequence of
+after a certain period of time.</p></li><li><p><span class="strong">12.2 Session Definition</span> A session is a sequence of
 clicks by one user from one browser in which no two clicks are separated by
-more than some constant (the session timeout).</p></li><li><p><span class="strong"><strong>12.3 Stateless</strong></span> The security system should not require
+more than some constant (the session timeout).</p></li><li><p><span class="strong">12.3 Stateless</span> The security system should not require
 state that is stored in the server. Required state may reside only in the
 user request (including cookies), and in the database. A single user should
 be able to log in to the system even if the user is sent to a different
-AOLserver for each step of the login process (e.g., by a load balancer).</p></li><li><p><span class="strong"><strong>12.4 Secure</strong></span> The security system should not store
-passwords in clear text in the database.</p></li></ul></div><div class="itemizedlist"><ul type="disc"><li><p><span class="strong"><strong>13.0 SSL Hardware</strong></span> The system must work when the SSL
+AOLserver for each step of the login process (e.g., by a load balancer).</p></li><li><p><span class="strong">12.4 Secure</span> The security system should not store
+passwords in clear text in the database.</p></li></ul></div><div class="itemizedlist"><ul type="disc"><li><p><span class="strong">13.0 SSL Hardware</span> The system must work when the SSL
 processing occurs outside of the web server (in specialized hardware, in a
 firewall, etc.).</p></li></ul></div></div></div><div class="navfooter"><hr><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="i18n-requirements.html">Prev</a> </td><td width="20%" align="center"><a accesskey="h" href="index.html">Home</a></td><td width="40%" align="right"> <a accesskey="n" href="security-design.html">Next</a></td></tr><tr><td width="40%" align="left">OpenACS Internationalization Requirements </td><td width="20%" align="center"><a accesskey="u" href="kernel-doc.html">Up</a></td><td width="40%" align="right"> Security Design</td></tr></table><hr><address><a href="mailto:docs@openacs.org">docs@openacs.org</a></address></div><a name="comments"></a><center><a href="http://openacs.org/doc/current/security-requirements.html#comments">View comments on this page at openacs.org</a></center></body></html>
Index: openacs-4/packages/acs-core-docs/www/snapshot-backup.html
===================================================================
RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/snapshot-backup.html,v
diff -u -r1.8 -r1.8.4.1
--- openacs-4/packages/acs-core-docs/www/snapshot-backup.html	17 Jul 2006 05:38:32 -0000	1.8
+++ openacs-4/packages/acs-core-docs/www/snapshot-backup.html	3 Feb 2008 12:07:41 -0000	1.8.4.1
@@ -1,4 +1,5 @@
-<html><head><meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"><title>Manual backup and recovery</title><meta name="generator" content="DocBook XSL Stylesheets V1.70.1"><link rel="home" href="index.html" title="OpenACS Core Documentation"><link rel="up" href="backup-recovery.html" title="Chapter�8.�Backup and Recovery"><link rel="previous" href="install-next-backups.html" title="Backup Strategy"><link rel="next" href="automated-backup.html" title="Automated Backup"><link rel="stylesheet" href="openacs.css" type="text/css"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><a href="http://openacs.org"><img src="/doc/images/alex.jpg" border="0" alt="Alex logo"></a><table width="100%" summary="Navigation header" border="0"><tr><td width="20%" align="left"><a accesskey="p" href="install-next-backups.html">Prev</a> </td><th width="60%" align="center">Chapter�8.�Backup and Recovery</th><td width="20%" align="right"> <a accesskey="n" href="automated-backup.html">Next</a></td></tr></table><hr></div><div class="sect1" lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="snapshot-backup"></a>Manual backup and recovery</h2></div></div></div><p>This section describes how to make a one-time backup and
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html><head><meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"><title>Manual backup and recovery</title><meta name="generator" content="DocBook XSL Stylesheets V1.60.1"><link rel="home" href="index.html" title="OpenACS Core Documentation"><link rel="up" href="backup-recovery.html" title="Chapter�8.�Backup and Recovery"><link rel="previous" href="install-next-backups.html" title="Backup Strategy"><link rel="next" href="automated-backup.html" title="Automated Backup"><link rel="stylesheet" href="openacs.css" type="text/css"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><a href="http://openacs.org"><img src="/doc/images/alex.jpg" border="0" alt="Alex logo"></a><table width="100%" summary="Navigation header" border="0"><tr><td width="20%" align="left"><a accesskey="p" href="install-next-backups.html">Prev</a> </td><th width="60%" align="center">Chapter�8.�Backup and Recovery</th><td width="20%" align="right"> <a accesskey="n" href="automated-backup.html">Next</a></td></tr></table><hr></div><div class="sect1" lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="snapshot-backup"></a>Manual backup and recovery</h2></div></div><div></div></div><p>This section describes how to make a one-time backup and
     restore of the files and database.  This is useful for rolling
     back to known-good versions of a service, such as at initial
     installation and just before an upgrade.  First, you back up the
@@ -7,28 +8,28 @@
     including the AOLserver config files, is then in tree for regular
     file system backup.</p><div class="orderedlist"><ol type="1"><li><p><b>Back up the database to a file.�</b></p><div class="itemizedlist"><ul type="disc"><li><p><a name="oracle-snapshot-backup"></a><b>Oracle.�</b></p><div class="itemizedlist"><ul type="circle"><li><p> 
               Download the backup script. Save the file <a href="files/export-oracle.txt" target="_top">export-oracle.txt</a> as
-              <code class="filename">/var/tmp/export-oracle.txt</code>
+              <tt class="filename">/var/tmp/export-oracle.txt</tt>
               </p></li><li><p>
               Login as root. The following commands will install the export script:
-              </p><pre class="programlisting">[joeuser ~]$ <strong class="userinput"><code>su -</code></strong>
-[root ~]# <strong class="userinput"><code>cp /var/tmp/export-oracle.txt /usr/sbin/export-oracle</code></strong>
-[root ~]# <strong class="userinput"><code>chmod 700 /usr/sbin/export-oracle</code></strong></pre></li><li><p>
+              </p><pre class="programlisting">[joeuser ~]$ <b class="userinput"><tt>su -</tt></b>
+[root ~]# <b class="userinput"><tt>cp /var/tmp/export-oracle.txt /usr/sbin/export-oracle</tt></b>
+[root ~]# <b class="userinput"><tt>chmod 700 /usr/sbin/export-oracle</tt></b></pre></li><li><p>
               Setup the export directory; this is the directory where backups will
               be stored. We recommend the directory
-              <code class="filename">/ora8/m02/oracle-exports</code>.</p><pre class="programlisting">[root ~]# <strong class="userinput"><code>mkdir <span class="replaceable"><span class="replaceable">/ora8/m02/</span></span>oracle-exports</code></strong>
-[root ~]# <strong class="userinput"><code>chown oracle:dba <span class="replaceable"><span class="replaceable">/ora8/m02/</span></span>oracle-exports</code></strong>
-[root ~]# <strong class="userinput"><code>chmod 770 <span class="replaceable"><span class="replaceable">/ora8/m02/</span></span>oracle-exports</code></strong></pre></li><li><p> 
+              <tt class="filename">/ora8/m02/oracle-exports</tt>.</p><pre class="programlisting">[root ~]# <b class="userinput"><tt>mkdir <span class="replaceable"><span class="replaceable">/ora8/m02/</span></span>oracle-exports</tt></b>
+[root ~]# <b class="userinput"><tt>chown oracle:dba <span class="replaceable"><span class="replaceable">/ora8/m02/</span></span>oracle-exports</tt></b>
+[root ~]# <b class="userinput"><tt>chmod 770 <span class="replaceable"><span class="replaceable">/ora8/m02/</span></span>oracle-exports</tt></b></pre></li><li><p> 
               Now edit
-              <code class="filename">/usr/sbin/export-oracle</code> and
-              change the <code class="computeroutput">SERVICE_NAME</code> and
-              <code class="computeroutput">DATABASE_PASSWORD</code> fields to
+              <tt class="filename">/usr/sbin/export-oracle</tt> and
+              change the <tt class="computeroutput">SERVICE_NAME</tt> and
+              <tt class="computeroutput">DATABASE_PASSWORD</tt> fields to
               their correct values. If you want to use a directory other than
-              <code class="filename">/ora8/m02/oracle-exports</code>, you
+              <tt class="filename">/ora8/m02/oracle-exports</tt>, you
               also need to change the
-              <code class="computeroutput">exportdir</code> setting.
+              <tt class="computeroutput">exportdir</tt> setting.
               </p><p>
                 Test the export procedure by running the command:
-              </p><pre class="programlisting">[root ~]# <strong class="userinput"><code>/usr/sbin/export-oracle</code></strong>
+              </p><pre class="programlisting">[root ~]# <b class="userinput"><tt>/usr/sbin/export-oracle</tt></b>
 mv: /ora8/m02/oracle-exports/oraexport-service_name.dmp.gz: No such file or directory
 
 Export: Release 8.1.6.1.0 - Production on Sun Jun 11 18:07:45 2000
@@ -63,70 +64,70 @@
   . exporting dimensions
   . exporting post-schema procedural objects and actions
   . exporting statistics
-Export terminated successfully without warnings.</pre></li></ul></div></li><li><p><a name="postgres-snapshot-backup"></a><b>PostgreSQL.�</b>Create a backup file and verify that it was created and has a reasonable size (several megabytes).</p><pre class="screen">[root root]# <strong class="userinput"><code>su - $OPENACS_SERVICE_NAME</code></strong>
-[$OPENACS_SERVICE_NAME $OPENACS_SERVICE_NAME]$ <strong class="userinput"><code>pg_dump -f /var/lib/aolserver/<span class="replaceable"><span class="replaceable">$OPENACS_SERVICE_NAME</span></span>/database-backup/before_upgrade_to_4.6.dmp <span class="replaceable"><span class="replaceable">$OPENACS_SERVICE_NAME</span></span></code></strong>
-[$OPENACS_SERVICE_NAME $OPENACS_SERVICE_NAME]$ <strong class="userinput"><code>ls -al /var/lib/aolserver/<span class="replaceable"><span class="replaceable">$OPENACS_SERVICE_NAME</span></span>/database-backup/before_upgrade_to_4.6.dmp </code></strong>
+Export terminated successfully without warnings.</pre></li></ul></div></li><li><p><a name="postgres-snapshot-backup"></a><b>PostgreSQL.�</b>Create a backup file and verify that it was created and has a reasonable size (several megabytes).</p><pre class="screen">[root root]# <b class="userinput"><tt>su - $OPENACS_SERVICE_NAME</tt></b>
+[$OPENACS_SERVICE_NAME $OPENACS_SERVICE_NAME]$ <b class="userinput"><tt>pg_dump -f /var/lib/aolserver/<span class="replaceable"><span class="replaceable">$OPENACS_SERVICE_NAME</span></span>/database-backup/before_upgrade_to_4.6.dmp <span class="replaceable"><span class="replaceable">$OPENACS_SERVICE_NAME</span></span></tt></b>
+[$OPENACS_SERVICE_NAME $OPENACS_SERVICE_NAME]$ <b class="userinput"><tt>ls -al /var/lib/aolserver/<span class="replaceable"><span class="replaceable">$OPENACS_SERVICE_NAME</span></span>/database-backup/before_upgrade_to_4.6.dmp </tt></b>
 -rw-rw-r-x    1 $OPENACS_SERVICE_NAME  $OPENACS_SERVICE_NAME   4005995 Feb 21 18:28 /var/lib/aolserver/$OPENACS_SERVICE_NAME/database-backup/before_upgrade_to_4.6.dmp
-[$OPENACS_SERVICE_NAME $OPENACS_SERVICE_NAME]$ <strong class="userinput"><code>exit</code></strong>
+[$OPENACS_SERVICE_NAME $OPENACS_SERVICE_NAME]$ <b class="userinput"><tt>exit</tt></b>
 [root root]#
 <span class="action"><span class="action">su - $OPENACS_SERVICE_NAME
 pg_dump -f /var/lib/aolserver/<span class="replaceable"><span class="replaceable">$OPENACS_SERVICE_NAME</span></span>/database-backup/before_upgrade_to_4.6.dmp <span class="replaceable"><span class="replaceable">openacs-dev</span></span>
 ls -al /var/lib/aolserver/<span class="replaceable"><span class="replaceable">$OPENACS_SERVICE_NAME</span></span>/database-backup/before_upgrade_to_4.6.dmp
 exit</span></span></pre></li></ul></div></li><li><a name="backup-file-system"></a><p><b>Back up the file system.�</b>Back up all of the files in the service, including the
           database backup file but excluding the auto-generated
-          <code class="filename">supervise</code> directory, which is
-          unneccesary and has complicated permissions.  </p><p>In the tar command,</p><div class="itemizedlist"><ul type="disc"><li><p><code class="computeroutput">c</code> create a
-            new tar archive</p></li><li><p><code class="computeroutput">p</code> preserves permissions.</p></li><li><p><code class="computeroutput">s</code> preserves file sort order</p></li><li><p><code class="computeroutput">z</code> compresses the output with gzip.</p></li><li><p>The <code class="computeroutput">--exclude</code> clauses skips some daemontools files that
+          <tt class="filename">supervise</tt> directory, which is
+          unneccesary and has complicated permissions.  </p><p>In the tar command,</p><div class="itemizedlist"><ul type="disc"><li><p><tt class="computeroutput">c</tt> create a
+            new tar archive</p></li><li><p><tt class="computeroutput">p</tt> preserves permissions.</p></li><li><p><tt class="computeroutput">s</tt> preserves file sort order</p></li><li><p><tt class="computeroutput">z</tt> compresses the output with gzip.</p></li><li><p>The <tt class="computeroutput">--exclude</tt> clauses skips some daemontools files that
             are owned by root and thus cannot be backed up by the
             service owner.  These files are autogenerated and we don't
-            break anything by omitting them.</p></li><li><p>The <code class="computeroutput">--file</code> clause
+            break anything by omitting them.</p></li><li><p>The <tt class="computeroutput">--file</tt> clause
             specifies the name of the output file to be generated; we
             manually add the correct extensions.</p></li><li><p>The last clause,
-            <code class="filename">/var/lib/aolserver/<span class="replaceable"><span class="replaceable">$OPENACS_SERVICE_NAME</span></span>/</code>,
+            <tt class="filename">/var/lib/aolserver/<span class="replaceable"><span class="replaceable">$OPENACS_SERVICE_NAME</span></span>/</tt>,
             specifies the starting point for backup.  Tar defaults to
-            recursive backup.</p></li></ul></div><pre class="screen">[root root]# <strong class="userinput"><code>su - <span class="replaceable"><span class="replaceable">$OPENACS_SERVICE_NAME</span></span></code></strong>
-[$OPENACS_SERVICE_NAME $OPENACS_SERVICE_NAME]$ <strong class="userinput"><code>tar -cpsz --exclude /var/lib/aolserver/<span class="replaceable"><span class="replaceable">$OPENACS_SERVICE_NAME</span></span>/etc/daemontools/supervise \
-   --file /var/tmp/<span class="replaceable"><span class="replaceable">$OPENACS_SERVICE_NAME</span></span>-backup.tar.gz /var/lib/aolserver/<span class="replaceable"><span class="replaceable">$OPENACS_SERVICE_NAME</span></span>/</code></strong>
+            recursive backup.</p></li></ul></div><pre class="screen">[root root]# <b class="userinput"><tt>su - <span class="replaceable"><span class="replaceable">$OPENACS_SERVICE_NAME</span></span></tt></b>
+[$OPENACS_SERVICE_NAME $OPENACS_SERVICE_NAME]$ <b class="userinput"><tt>tar -cpsz --exclude /var/lib/aolserver/<span class="replaceable"><span class="replaceable">$OPENACS_SERVICE_NAME</span></span>/etc/daemontools/supervise \
+   --file /var/tmp/<span class="replaceable"><span class="replaceable">$OPENACS_SERVICE_NAME</span></span>-backup.tar.gz /var/lib/aolserver/<span class="replaceable"><span class="replaceable">$OPENACS_SERVICE_NAME</span></span>/</tt></b>
 tar: Removing leading `/' from member names
-[$OPENACS_SERVICE_NAME $OPENACS_SERVICE_NAME]$</pre></li><li><p><b>Suffer a catastrophic failure on your production system.�</b>(We'll simulate this step)</p><pre class="screen">[root root]# <strong class="userinput"><code>svc -d /service/$OPENACS_SERVICE_NAME</code></strong>
-[root root]# <strong class="userinput"><code>mv /var/lib/aolserver/$OPENACS_SERVICE_NAME/ /var/lib/aolserver/$OPENACS_SERVICE_NAME.lost</code></strong>
-[root root]#<strong class="userinput"><code> rm /service/$OPENACS_SERVICE_NAME</code></strong>
+[$OPENACS_SERVICE_NAME $OPENACS_SERVICE_NAME]$</pre></li><li><p><b>Suffer a catastrophic failure on your production system.�</b>(We'll simulate this step)</p><pre class="screen">[root root]# <b class="userinput"><tt>svc -d /service/$OPENACS_SERVICE_NAME</tt></b>
+[root root]# <b class="userinput"><tt>mv /var/lib/aolserver/$OPENACS_SERVICE_NAME/ /var/lib/aolserver/$OPENACS_SERVICE_NAME.lost</tt></b>
+[root root]#<b class="userinput"><tt> rm /service/$OPENACS_SERVICE_NAME</tt></b>
 rm: remove symbolic link `/service/$OPENACS_SERVICE_NAME'? y
-[root root]# <strong class="userinput"><code>ps -auxw | grep $OPENACS_SERVICE_NAME</code></strong>
+[root root]# <b class="userinput"><tt>ps -auxw | grep $OPENACS_SERVICE_NAME</tt></b>
 root      1496  0.0  0.0  1312  252 ?        S    16:58   0:00 supervise $OPENACS_SERVICE_NAME
-[root root]#<strong class="userinput"><code> kill<span class="replaceable"><span class="replaceable"> 1496</span></span></code></strong>
-[root root]# <strong class="userinput"><code>ps -auxw | grep $OPENACS_SERVICE_NAME</code></strong>
-[root root]# <strong class="userinput"><code>su - postgres</code></strong>
-[postgres pgsql]$ <strong class="userinput"><code>dropdb $OPENACS_SERVICE_NAME</code></strong>
+[root root]#<b class="userinput"><tt> kill<span class="replaceable"><span class="replaceable"> 1496</span></span></tt></b>
+[root root]# <b class="userinput"><tt>ps -auxw | grep $OPENACS_SERVICE_NAME</tt></b>
+[root root]# <b class="userinput"><tt>su - postgres</tt></b>
+[postgres pgsql]$ <b class="userinput"><tt>dropdb $OPENACS_SERVICE_NAME</tt></b>
 DROP DATABASE
-[postgres pgsql]$ <strong class="userinput"><code>dropuser $OPENACS_SERVICE_NAME</code></strong>
+[postgres pgsql]$ <b class="userinput"><tt>dropuser $OPENACS_SERVICE_NAME</tt></b>
 DROP USER
-[postgres pgsql]$ <strong class="userinput"><code>exit</code></strong>
+[postgres pgsql]$ <b class="userinput"><tt>exit</tt></b>
 logout
 [root root]#</pre></li><li><p><a name="recovery"></a><b>Recovery.�</b></p><div class="orderedlist"><ol type="a"><li><p>Restore the operating system and required software.
             You can do this with standard backup processes or by
             keeping copies of the install material (OS CDs, OpenACS
             tarball and supporting software) and repeating the install
-            guide.  Recreate the service user (<span class="replaceable"><span class="replaceable">$OPENACS_SERVICE_NAME</span></span>).</p></li><li><p>Restore the OpenACS files and database backup file.</p><pre class="screen">[root root]# <strong class="userinput"><code>su - <span class="replaceable"><span class="replaceable">$OPENACS_SERVICE_NAME</span></span></code></strong>
-[$OPENACS_SERVICE_NAME $OPENACS_SERVICE_NAME]$ <strong class="userinput"><code>cd /var/lib/aolserver</code></strong>
-[$OPENACS_SERVICE_NAME aolserver]$<strong class="userinput"><code> tar xzf /var/tmp/$OPENACS_SERVICE_NAME-backup.tar.gz</code></strong>
-[$OPENACS_SERVICE_NAME aolserver]$ <strong class="userinput"><code>chmod -R 775 <span class="replaceable"><span class="replaceable">$OPENACS_SERVICE_NAME</span></span></code></strong>
-[$OPENACS_SERVICE_NAME aolserver]$ <strong class="userinput"><code>chown -R <span class="replaceable"><span class="replaceable">$OPENACS_SERVICE_NAME.web</span></span> <span class="replaceable"><span class="replaceable">$OPENACS_SERVICE_NAME</span></span></code></strong></pre></li><li><p>Restore the database</p><div class="itemizedlist"><ul type="disc"><li><p><b>Oracle.�</b></p><div class="orderedlist"><ol type="i"><li><p>Set up a clean Oracle database user and
-                    tablespace with the same names as the ones exported from (<a href="openacs.html#install-openacs-prepare-oracle">more information</a>).</p></li><li><p>Invoke the import command</p><pre class="screen"><span class="action"><span class="action">imp <span class="replaceable"><span class="replaceable">$OPENACS_SERVICE_NAME</span></span>/<span class="replaceable"><span class="replaceable">$OPENACS_SERVICE_NAME</span></span> FILE=/var/lib/aolserver/<span class="replaceable"><span class="replaceable">$OPENACS_SERVICE_NAME</span></span>/database-backup/nighty_backup.dmp FULL=Y</span></span></pre></li></ol></div></li><li><p><a name="restore-postgres"></a><b>Postgres.�</b>If the database user does not already exist, create it.</p><pre class="screen">[root root]# <strong class="userinput"><code>su - postgres</code></strong>
-[postgres ~]$ <strong class="userinput"><code>createuser <span class="replaceable"><span class="replaceable">$OPENACS_SERVICE_NAME</span></span></code></strong>
-Shall the new user be allowed to create databases? (y/n) <strong class="userinput"><code>y</code></strong>
-Shall the new user be allowed to create more new users? (y/n) <strong class="userinput"><code>y</code></strong>
+            guide.  Recreate the service user (<span class="replaceable"><span class="replaceable">$OPENACS_SERVICE_NAME</span></span>).</p></li><li><p>Restore the OpenACS files and database backup file.</p><pre class="screen">[root root]# <b class="userinput"><tt>su - <span class="replaceable"><span class="replaceable">$OPENACS_SERVICE_NAME</span></span></tt></b>
+[$OPENACS_SERVICE_NAME $OPENACS_SERVICE_NAME]$ <b class="userinput"><tt>cd /var/lib/aolserver</tt></b>
+[$OPENACS_SERVICE_NAME aolserver]$<b class="userinput"><tt> tar xzf /var/tmp/$OPENACS_SERVICE_NAME-backup.tar.gz</tt></b>
+[$OPENACS_SERVICE_NAME aolserver]$ <b class="userinput"><tt>chmod -R 775 <span class="replaceable"><span class="replaceable">$OPENACS_SERVICE_NAME</span></span></tt></b>
+[$OPENACS_SERVICE_NAME aolserver]$ <b class="userinput"><tt>chown -R <span class="replaceable"><span class="replaceable">$OPENACS_SERVICE_NAME.web</span></span> <span class="replaceable"><span class="replaceable">$OPENACS_SERVICE_NAME</span></span></tt></b></pre></li><li><p>Restore the database</p><div class="itemizedlist"><ul type="disc"><li><p><b>Oracle.�</b></p><div class="orderedlist"><ol type="i"><li><p>Set up a clean Oracle database user and
+                    tablespace with the same names as the ones exported from (<a href="openacs.html#install-openacs-prepare-oracle">more information</a>).</p></li><li><p>Invoke the import command</p><pre class="screen"><span class="action"><span class="action">imp <span class="replaceable"><span class="replaceable">$OPENACS_SERVICE_NAME</span></span>/<span class="replaceable"><span class="replaceable">$OPENACS_SERVICE_NAME</span></span> FILE=/var/lib/aolserver/<span class="replaceable"><span class="replaceable">$OPENACS_SERVICE_NAME</span></span>/database-backup/nighty_backup.dmp FULL=Y</span></span></pre></li></ol></div></li><li><p><a name="restore-postgres"></a><b>Postgres.�</b>If the database user does not already exist, create it.</p><pre class="screen">[root root]# <b class="userinput"><tt>su - postgres</tt></b>
+[postgres ~]$ <b class="userinput"><tt>createuser <span class="replaceable"><span class="replaceable">$OPENACS_SERVICE_NAME</span></span></tt></b>
+Shall the new user be allowed to create databases? (y/n) <b class="userinput"><tt>y</tt></b>
+Shall the new user be allowed to create more new users? (y/n) <b class="userinput"><tt>y</tt></b>
 CREATE USER
-[postgres ~]$ <strong class="userinput"><code>exit</code></strong>
-</pre><p>Because of a bug in Postgres backup-recovery, database objects are not guaranteed to be created in the right order.  In practice, running the OpenACS initialization script is always sufficient to create any out-of-order database objects.  Next, restore the database from the dump file.  The restoration will show some error messages at the beginning for objects that were pre-created from the OpenACS initialization script, which can be ignored.</p><pre class="screen">[root root]# <strong class="userinput"><code>su - <span class="replaceable"><span class="replaceable">$OPENACS_SERVICE_NAME</span></span></code></strong>
-[$OPENACS_SERVICE_NAME ~]$ <strong class="userinput"><code>createdb <span class="replaceable"><span class="replaceable">$OPENACS_SERVICE_NAME</span></span></code></strong>
+[postgres ~]$ <b class="userinput"><tt>exit</tt></b>
+</pre><p>Because of a bug in Postgres backup-recovery, database objects are not guaranteed to be created in the right order.  In practice, running the OpenACS initialization script is always sufficient to create any out-of-order database objects.  Next, restore the database from the dump file.  The restoration will show some error messages at the beginning for objects that were pre-created from the OpenACS initialization script, which can be ignored.</p><pre class="screen">[root root]# <b class="userinput"><tt>su - <span class="replaceable"><span class="replaceable">$OPENACS_SERVICE_NAME</span></span></tt></b>
+[$OPENACS_SERVICE_NAME ~]$ <b class="userinput"><tt>createdb <span class="replaceable"><span class="replaceable">$OPENACS_SERVICE_NAME</span></span></tt></b>
 CREATE DATABASE
-[$OPENACS_SERVICE_NAME ~]$<strong class="userinput"><code> psql -f /var/lib/aolserver/<span class="replaceable"><span class="replaceable">$OPENACS_SERVICE_NAME</span></span>/packages/acs-kernel/sql/postgresql/postgresql.sql <span class="replaceable"><span class="replaceable">$OPENACS_SERVICE_NAME</span></span></code></strong>
+[$OPENACS_SERVICE_NAME ~]$<b class="userinput"><tt> psql -f /var/lib/aolserver/<span class="replaceable"><span class="replaceable">$OPENACS_SERVICE_NAME</span></span>/packages/acs-kernel/sql/postgresql/postgresql.sql <span class="replaceable"><span class="replaceable">$OPENACS_SERVICE_NAME</span></span></tt></b>
 <span class="emphasis"><em>(many lines omitted)</em></span>
-[$OPENACS_SERVICE_NAME ~]$ <strong class="userinput"><code>psql <span class="replaceable"><span class="replaceable">$OPENACS_SERVICE_NAME</span></span> &lt; /var/lib/aolserver/<span class="replaceable"><span class="replaceable">$OPENACS_SERVICE_NAME</span></span>/database-backup/<span class="replaceable"><span class="replaceable">database-backup.dmp</span></span></code></strong>
+[$OPENACS_SERVICE_NAME ~]$ <b class="userinput"><tt>psql <span class="replaceable"><span class="replaceable">$OPENACS_SERVICE_NAME</span></span> &lt; /var/lib/aolserver/<span class="replaceable"><span class="replaceable">$OPENACS_SERVICE_NAME</span></span>/database-backup/<span class="replaceable"><span class="replaceable">database-backup.dmp</span></span></tt></b>
 <span class="emphasis"><em>(many lines omitted)</em></span>
-[$OPENACS_SERVICE_NAME ~]$ <strong class="userinput"><code>exit</code></strong>
-[postgres ~]$ <strong class="userinput"><code>exit</code></strong>
-logout</pre></li></ul></div></li><li><p>Activate the service</p><pre class="screen">[root root]# <strong class="userinput"><code>ln -s /var/lib/aolserver/<span class="replaceable"><span class="replaceable">$OPENACS_SERVICE_NAME</span></span>/etc/daemontools /service/<span class="replaceable"><span class="replaceable">$OPENACS_SERVICE_NAME</span></span></code></strong>
-[root root]# <strong class="userinput"><code>sleep 10</code></strong>
-[root root]# <strong class="userinput"><code>svgroup web /service/<span class="replaceable"><span class="replaceable">$OPENACS_SERVICE_NAME</span></span></code></strong></pre></li></ol></div></li></ol></div></div><div class="navfooter"><hr><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="install-next-backups.html">Prev</a> </td><td width="20%" align="center"><a accesskey="h" href="index.html">Home</a></td><td width="40%" align="right"> <a accesskey="n" href="automated-backup.html">Next</a></td></tr><tr><td width="40%" align="left">Backup Strategy </td><td width="20%" align="center"><a accesskey="u" href="backup-recovery.html">Up</a></td><td width="40%" align="right"> Automated Backup</td></tr></table><hr><address><a href="mailto:docs@openacs.org">docs@openacs.org</a></address></div><a name="comments"></a><center><a href="http://openacs.org/doc/current/snapshot-backup.html#comments">View comments on this page at openacs.org</a></center></body></html>
+[$OPENACS_SERVICE_NAME ~]$ <b class="userinput"><tt>exit</tt></b>
+[postgres ~]$ <b class="userinput"><tt>exit</tt></b>
+logout</pre></li></ul></div></li><li><p>Activate the service</p><pre class="screen">[root root]# <b class="userinput"><tt>ln -s /var/lib/aolserver/<span class="replaceable"><span class="replaceable">$OPENACS_SERVICE_NAME</span></span>/etc/daemontools /service/<span class="replaceable"><span class="replaceable">$OPENACS_SERVICE_NAME</span></span></tt></b>
+[root root]# <b class="userinput"><tt>sleep 10</tt></b>
+[root root]# <b class="userinput"><tt>svgroup web /service/<span class="replaceable"><span class="replaceable">$OPENACS_SERVICE_NAME</span></span></tt></b></pre></li></ol></div></li></ol></div></div><div class="navfooter"><hr><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="install-next-backups.html">Prev</a> </td><td width="20%" align="center"><a accesskey="h" href="index.html">Home</a></td><td width="40%" align="right"> <a accesskey="n" href="automated-backup.html">Next</a></td></tr><tr><td width="40%" align="left">Backup Strategy </td><td width="20%" align="center"><a accesskey="u" href="backup-recovery.html">Up</a></td><td width="40%" align="right"> Automated Backup</td></tr></table><hr><address><a href="mailto:docs@openacs.org">docs@openacs.org</a></address></div><a name="comments"></a><center><a href="http://openacs.org/doc/current/snapshot-backup.html#comments">View comments on this page at openacs.org</a></center></body></html>
Index: openacs-4/packages/acs-core-docs/www/style-guide.html
===================================================================
RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/style-guide.html,v
diff -u -r1.21 -r1.21.4.1
--- openacs-4/packages/acs-core-docs/www/style-guide.html	17 Jul 2006 05:38:32 -0000	1.21
+++ openacs-4/packages/acs-core-docs/www/style-guide.html	3 Feb 2008 12:07:41 -0000	1.21.4.1
@@ -1,8 +1,9 @@
-<html><head><meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"><title>OpenACS Style Guide</title><meta name="generator" content="DocBook XSL Stylesheets V1.70.1"><link rel="home" href="index.html" title="OpenACS Core Documentation"><link rel="up" href="eng-standards.html" title="Chapter�12.�Engineering Standards"><link rel="previous" href="eng-standards.html" title="Chapter�12.�Engineering Standards"><link rel="next" href="cvs-guidelines.html" title="
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html><head><meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"><title>OpenACS Style Guide</title><meta name="generator" content="DocBook XSL Stylesheets V1.60.1"><link rel="home" href="index.html" title="OpenACS Core Documentation"><link rel="up" href="eng-standards.html" title="Chapter�12.�Engineering Standards"><link rel="previous" href="eng-standards.html" title="Chapter�12.�Engineering Standards"><link rel="next" href="cvs-guidelines.html" title="
     CVS Guidelines
-  "><link rel="stylesheet" href="openacs.css" type="text/css"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><a href="http://openacs.org"><img src="/doc/images/alex.jpg" border="0" alt="Alex logo"></a><table width="100%" summary="Navigation header" border="0"><tr><td width="20%" align="left"><a accesskey="p" href="eng-standards.html">Prev</a> </td><th width="60%" align="center">Chapter�12.�Engineering Standards</th><td width="20%" align="right"> <a accesskey="n" href="cvs-guidelines.html">Next</a></td></tr></table><hr></div><div class="sect1" lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="style-guide"></a>OpenACS Style Guide</h2></div></div></div><p>
+  "><link rel="stylesheet" href="openacs.css" type="text/css"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><a href="http://openacs.org"><img src="/doc/images/alex.jpg" border="0" alt="Alex logo"></a><table width="100%" summary="Navigation header" border="0"><tr><td width="20%" align="left"><a accesskey="p" href="eng-standards.html">Prev</a> </td><th width="60%" align="center">Chapter�12.�Engineering Standards</th><td width="20%" align="right"> <a accesskey="n" href="cvs-guidelines.html">Next</a></td></tr></table><hr></div><div class="sect1" lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="style-guide"></a>OpenACS Style Guide</h2></div></div><div></div></div><p>
     By Jeff Davis
-  </p><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="style-guide-motivation"></a>Motivation</h3></div></div></div><p>
+  </p><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="style-guide-motivation"></a>Motivation</h3></div></div><div></div></div><p>
       Why have coding standards for OpenACS?  And if the code works why change it to
       adhere to some arbitrary rules?
     </p><p>
@@ -11,7 +12,7 @@
       lines of tcl code, about 460,000 lines of sql (in datamodel
       scripts and .xql files), about 80,000 lines of markup in .adp
       files, and about 100,000 lines of documentation.  All told, just
-      about a million lines of "stuff".  In terms of logical units
+      about a million lines of &quot;stuff&quot;.  In terms of logical units
       there are about 160 packages, 800 tables, 2,000 stored
       procedures, about 2,000 functional pages, and about 3,200 tcl
       procedures.
@@ -27,7 +28,7 @@
       over a long period by a lot of different people, OpenACS 
       sometimes lacks this basic guessability and in the interest 
       of bringing it into line we have advanced these guidelines.
-    </p></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="style-commandments"></a>Commandments</h3></div></div></div><p>
+    </p></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="style-commandments"></a>Commandments</h3></div></div><div></div></div><p>
       Here is a short list of the basic rules code contributed to 
       OpenACS should follow...
     </p><div class="orderedlist"><ol type="1"><li><p><b>Follow the file naming and the package structure rules.�</b>
@@ -74,8 +75,8 @@
             toolkit more useful for everyone and more easily extended.
           </p></li><li><p><b>Make sure your datamodel create/drop scripts work.�</b>
             Break the table creation out from the package/stored
-            procedure creation and use <code class="computeroutput">create or
-            replace</code> where possible so that scripts
+            procedure creation and use <tt class="computeroutput">create or
+            replace</tt> where possible so that scripts
             can be sourced more than once.  Make sure your drop script
             works if data has been inserted (and permissioned and
             notifications have been attached etc).
@@ -89,6 +90,6 @@
         </p></li><li><p><b>Solicit code reviews.�</b>
             Ask others to look over your code and provide feedback and do 
             the same for others.  
-          </p></li></ol></div></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="style-guide-rev-history"></a>Revision History</h3></div></div></div><div class="informaltable"><table cellspacing="0" border="1"><colgroup><col><col><col><col></colgroup><thead><tr><th>Document Revision #</th><th>Action Taken, Notes</th><th>When?</th><th>By Whom?</th></tr></thead><tbody><tr><td>0.1</td><td>Creation</td><td>12/2003</td><td>Jeff Davis</td></tr></tbody></table></div><div class="cvstag">($Id$)</div></div></div><div class="navfooter"><hr><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="eng-standards.html">Prev</a> </td><td width="20%" align="center"><a accesskey="h" href="index.html">Home</a></td><td width="40%" align="right"> <a accesskey="n" href="cvs-guidelines.html">Next</a></td></tr><tr><td width="40%" align="left">Chapter�12.�Engineering Standards </td><td width="20%" align="center"><a accesskey="u" href="eng-standards.html">Up</a></td><td width="40%" align="right"> 
+          </p></li></ol></div></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="style-guide-rev-history"></a>Revision History</h3></div></div><div></div></div><div class="informaltable"><table cellspacing="0" border="1"><colgroup><col><col><col><col></colgroup><thead><tr><th>Document Revision #</th><th>Action Taken, Notes</th><th>When?</th><th>By Whom?</th></tr></thead><tbody><tr><td>0.1</td><td>Creation</td><td>12/2003</td><td>Jeff Davis</td></tr></tbody></table></div><div class="cvstag">($Id$)</div></div></div><div class="navfooter"><hr><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="eng-standards.html">Prev</a> </td><td width="20%" align="center"><a accesskey="h" href="index.html">Home</a></td><td width="40%" align="right"> <a accesskey="n" href="cvs-guidelines.html">Next</a></td></tr><tr><td width="40%" align="left">Chapter�12.�Engineering Standards </td><td width="20%" align="center"><a accesskey="u" href="eng-standards.html">Up</a></td><td width="40%" align="right"> 
     CVS Guidelines
   </td></tr></table><hr><address><a href="mailto:docs@openacs.org">docs@openacs.org</a></address></div><a name="comments"></a><center><a href="http://openacs.org/doc/current/style-guide.html#comments">View comments on this page at openacs.org</a></center></body></html>
Index: openacs-4/packages/acs-core-docs/www/subsites-design.html
===================================================================
RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/subsites-design.html,v
diff -u -r1.28 -r1.28.4.1
--- openacs-4/packages/acs-core-docs/www/subsites-design.html	17 Jul 2006 05:38:32 -0000	1.28
+++ openacs-4/packages/acs-core-docs/www/subsites-design.html	3 Feb 2008 12:07:41 -0000	1.28.4.1
@@ -1,9 +1,10 @@
-<html><head><meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"><title>Subsites Design Document</title><meta name="generator" content="DocBook XSL Stylesheets V1.70.1"><link rel="home" href="index.html" title="OpenACS Core Documentation"><link rel="up" href="kernel-doc.html" title="Chapter�15.�Kernel Documentation"><link rel="previous" href="subsites-requirements.html" title="Subsites Requirements"><link rel="next" href="apm-requirements.html" title="Package Manager Requirements"><link rel="stylesheet" href="openacs.css" type="text/css"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><a href="http://openacs.org"><img src="/doc/images/alex.jpg" border="0" alt="Alex logo"></a><table width="100%" summary="Navigation header" border="0"><tr><td width="20%" align="left"><a accesskey="p" href="subsites-requirements.html">Prev</a> </td><th width="60%" align="center">Chapter�15.�Kernel Documentation</th><td width="20%" align="right"> <a accesskey="n" href="apm-requirements.html">Next</a></td></tr></table><hr></div><div class="sect1" lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="subsites-design"></a>Subsites Design Document</h2></div></div></div><div class="authorblurb"><p>By <a href="http://planitia.org" target="_top">Rafael H. Schloming</a> </p>
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html><head><meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"><title>Subsites Design Document</title><meta name="generator" content="DocBook XSL Stylesheets V1.60.1"><link rel="home" href="index.html" title="OpenACS Core Documentation"><link rel="up" href="kernel-doc.html" title="Chapter�15.�Kernel Documentation"><link rel="previous" href="subsites-requirements.html" title="Subsites Requirements"><link rel="next" href="apm-requirements.html" title="Package Manager Requirements"><link rel="stylesheet" href="openacs.css" type="text/css"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><a href="http://openacs.org"><img src="/doc/images/alex.jpg" border="0" alt="Alex logo"></a><table width="100%" summary="Navigation header" border="0"><tr><td width="20%" align="left"><a accesskey="p" href="subsites-requirements.html">Prev</a> </td><th width="60%" align="center">Chapter�15.�Kernel Documentation</th><td width="20%" align="right"> <a accesskey="n" href="apm-requirements.html">Next</a></td></tr></table><hr></div><div class="sect1" lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="subsites-design"></a>Subsites Design Document</h2></div></div><div></div></div><div class="authorblurb"><p>By <a href="http://planitia.org" target="_top">Rafael H. Schloming</a> </p>
           OpenACS docs are written by the named authors, and may be edited
           by OpenACS documentation staff.
         </div><p><span class="emphasis"><em>*Note* This document has not gone through the any of the
 required QA process yet. It is being tagged as stable due to high
-demand.</em></span></p><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="subsites-design-essentials"></a>Essentials</h3></div></div></div><div class="itemizedlist"><ul type="disc"><li><p><a href="subsites-requirements.html">OpenACS 4 Subsites Requirements</a></p></li></ul></div></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="subsites-design-intro"></a>Introduction</h3></div></div></div><p>An OpenACS 4 subsite is a managed suite of applications that work together for
+demand.</em></span></p><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="subsites-design-essentials"></a>Essentials</h3></div></div><div></div></div><div class="itemizedlist"><ul type="disc"><li><p><a href="subsites-requirements.html">OpenACS 4 Subsites Requirements</a></p></li></ul></div></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="subsites-design-intro"></a>Introduction</h3></div></div><div></div></div><p>An OpenACS 4 subsite is a managed suite of applications that work together for
 a particular user community. This definition covers a very broad range of
 requirements: from a Geocities style homepage where a user can install
 whatever available application he wants (e.g. a single user could have their
@@ -16,35 +17,35 @@
 the Request Processor. Since the design and implementation directly
 associated with subsites is actually minimal, a discussion of subsites design
 is, in fact, a discussion of how core OpenACS 4 components implicitly support
-subsites as a whole.</p></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="subsites-design-hist-considerations"></a>Historical Considerations</h3></div></div></div><p>The subsites problem actually has several quite diverse origins. It was
+subsites as a whole.</p></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="subsites-design-hist-considerations"></a>Historical Considerations</h3></div></div><div></div></div><p>The subsites problem actually has several quite diverse origins. It was
 originally recognized as a toolkit feature in the form of
-"scoping". The basic concept behind scoping was to allow one scoped
+&quot;scoping&quot;. The basic concept behind scoping was to allow one scoped
 OpenACS installation to behave as multiple unscoped OpenACS installations so that one
 OpenACS install could serve multiple communities. Each piece of application data
-was tagged with a "scope" consisting of the (user_id, group_id,
+was tagged with a &quot;scope&quot; consisting of the (user_id, group_id,
 scope) triple. In practice the highly denormalized data models that this
 method uses produced large amounts of very redundant code and in general made
-it an extremely cumbersome process to "scopify" a module.</p><p>Before the advent of scoping there were several cases of client projects
+it an extremely cumbersome process to &quot;scopify&quot; a module.</p><p>Before the advent of scoping there were several cases of client projects
 implementing their own version of scoping in special cases. One example being
 the wineaccess multi-retailer ecommerce. (Remember the other examples and get
 details. Archnet?, iluvcamp?)</p><p>The requirements of all these different projects vary greatly, but the one
 consistent theme among all of them is the concept that various areas of the
 web site have their own private version of a module. Because this theme is so
 dominant, this is the primary problem that the OpenACS4 implementation of
-subsites addresses.</p></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="subsites-design-competitors"></a>Competitive Analysis</h3></div></div></div><p>...</p></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="subsites-design-design-tradeoffs"></a>Design Tradeoffs</h3></div></div></div><p>The current implementation of package instances and subsites allows
+subsites addresses.</p></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="subsites-design-competitors"></a>Competitive Analysis</h3></div></div><div></div></div><p>...</p></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="subsites-design-design-tradeoffs"></a>Design Tradeoffs</h3></div></div><div></div></div><p>The current implementation of package instances and subsites allows
 extremely flexible URL configurations. This has the benefit of allowing
 multiple instances of the same package to be installed in one subsite, but
 can potentially complicate the process of integrating packages with each
 other since it is likely people will want packages that live at non standard
 URLs to operate together. This requirement would cause some packages to have
 more configuration options than normal since hard-coding the URLs would not
-be feasible anymore.</p></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="subsites-design-api"></a>API</h3></div></div></div><p>This section will cover all the APIs relevant to subsites, and so will
-consist of portions of the APIs of several systems.</p><p><span class="strong"><strong>Packages</strong></span></p><p>The following package is provided for instantiation of packages. The
+be feasible anymore.</p></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="subsites-design-api"></a>API</h3></div></div><div></div></div><p>This section will cover all the APIs relevant to subsites, and so will
+consist of portions of the APIs of several systems.</p><p><span class="strong">Packages</span></p><p>The following package is provided for instantiation of packages. The
 apm_package.new function can be used to create a package of any type known to
 the system. The apm_package_types table can be queried for a list of
 installed packages. (See APM docs for more detail XXX: insert link here)</p><pre class="programlisting">
 
-<code class="computeroutput">create or replace package apm_package
+<tt class="computeroutput">create or replace package apm_package
 as
 
   function new (
@@ -97,9 +98,9 @@
 end apm_package;
 /
 show errors
-</code>
+</tt>
 
-</pre><p><span class="strong"><strong>Site Nodes</strong></span></p><p>This data model keeps track of what packages are being served from what
+</pre><p><span class="strong">Site Nodes</span></p><p>This data model keeps track of what packages are being served from what
 URLs. You can think of this as a kind of rp_register_directory_map on drugs.
 This table represents a fully hierarchical site map. The directory_p column
 indicates whether or not the node is a leaf node. The pattern_p column
@@ -109,7 +110,7 @@
 node URL. The object_id column contains the object mounted on the URL
 represented by the node. In most cases this will be a package instance.</p><pre class="programlisting">
 
-<code class="computeroutput">create table site_nodes (
+<tt class="computeroutput">create table site_nodes (
     node_id     constraint site_nodes_node_id_fk
             references acs_objects (object_id)
             constraint site_nodes_node_id_pk
@@ -133,11 +134,11 @@
     object_id   constraint site_nodes_object_id_fk
             references acs_objects (object_id)
 );
-</code>
+</tt>
 
 </pre><p>The following package is provided for creating nodes.</p><pre class="programlisting">
 
-<code class="computeroutput">create or replace package site_node
+<tt class="computeroutput">create or replace package site_node
 as
 
   -- Create a new site node. If you set directory_p to be 'f' then you
@@ -178,34 +179,34 @@
 end;
 /
 show errors
-</code>
+</tt>
 
-</pre><p><span class="strong"><strong>Request Processor</strong></span></p><p>Once the above APIs are used to create packages and mount them on a
+</pre><p><span class="strong">Request Processor</span></p><p>Once the above APIs are used to create packages and mount them on a
 specific site node, the following request processor APIs can be used to allow
 the package to serve content appropriate to the package instance.</p><pre class="programlisting">
 
-<code class="computeroutput">[ad_conn node_id]
+<tt class="computeroutput">[ad_conn node_id]
 [ad_conn package_id]
 [ad_conn package_url]
-</code>
+</tt>
 
-</pre></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="subsites-design-data-model"></a>Data Model Discussion</h3></div></div></div><p>The subsites implementation doesn't really have it's own data
+</pre></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="subsites-design-data-model"></a>Data Model Discussion</h3></div></div><div></div></div><p>The subsites implementation doesn't really have it's own data
 model, although it depends heavily on the site-nodes data model, and the APM
-data model.</p></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="subsites-design-ui"></a>User Interface</h3></div></div></div><p>The primary elements of the subsite user interface consist of the subsite
+data model.</p></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="subsites-design-ui"></a>User Interface</h3></div></div><div></div></div><p>The primary elements of the subsite user interface consist of the subsite
 admin pages. These pages are divided up into two areas: Group administration,
 and the site map. The group administration pages allow a subsite
 administrator to create and modify groups. The site map pages allow a subsite
 administrator to install, remove, configure, and control access to packages.
 The site map interface is the primary point of entry for most of the things a
-subsite administrator would want to do.</p></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="subsites-design-config"></a>Configuration/Parameters</h3></div></div></div><p>...</p></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="subsites-design-future"></a>Future Improvements/Areas of Likely Change</h3></div></div></div><p>The current subsites implementation addresses the most basic functionality
+subsite administrator would want to do.</p></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="subsites-design-config"></a>Configuration/Parameters</h3></div></div><div></div></div><p>...</p></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="subsites-design-future"></a>Future Improvements/Areas of Likely Change</h3></div></div><div></div></div><p>The current subsites implementation addresses the most basic functionality
 required for subsites. It is likely that as developers begin to use the
 subsites system for more sophisticated projects, it will become necessary to
 develop tools to help build tightly integrated packages. The general area
-this falls under is "inter-package communication". An actual
+this falls under is &quot;inter-package communication&quot;. An actual
 implementation of this could be anything from clever use of configuration
 parameters to lots of package level introspection. Another area that is
-currently underdeveloped is the ability to "tar up" and distribute
+currently underdeveloped is the ability to &quot;tar up&quot; and distribute
 a particular configuration of site nodes/packages. As we build more
 fundamental applications that can be applied in more general areas, this
 feature will become more and more in demand since more problems will be
-solvable by configuration instead of coding.</p></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="subsites-design-authors"></a>Authors</h3></div></div></div><p><a href="mailto:rhs@mit.edu" target="_top">rhs@mit.edu</a></p></div></div><div class="navfooter"><hr><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="subsites-requirements.html">Prev</a> </td><td width="20%" align="center"><a accesskey="h" href="index.html">Home</a></td><td width="40%" align="right"> <a accesskey="n" href="apm-requirements.html">Next</a></td></tr><tr><td width="40%" align="left">Subsites Requirements </td><td width="20%" align="center"><a accesskey="u" href="kernel-doc.html">Up</a></td><td width="40%" align="right"> Package Manager Requirements</td></tr></table><hr><address><a href="mailto:docs@openacs.org">docs@openacs.org</a></address></div><a name="comments"></a><center><a href="http://openacs.org/doc/current/subsites-design.html#comments">View comments on this page at openacs.org</a></center></body></html>
+solvable by configuration instead of coding.</p></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="subsites-design-authors"></a>Authors</h3></div></div><div></div></div><p><a href="mailto:rhs@mit.edu" target="_top">rhs@mit.edu</a></p></div></div><div class="navfooter"><hr><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="subsites-requirements.html">Prev</a> </td><td width="20%" align="center"><a accesskey="h" href="index.html">Home</a></td><td width="40%" align="right"> <a accesskey="n" href="apm-requirements.html">Next</a></td></tr><tr><td width="40%" align="left">Subsites Requirements </td><td width="20%" align="center"><a accesskey="u" href="kernel-doc.html">Up</a></td><td width="40%" align="right"> Package Manager Requirements</td></tr></table><hr><address><a href="mailto:docs@openacs.org">docs@openacs.org</a></address></div><a name="comments"></a><center><a href="http://openacs.org/doc/current/subsites-design.html#comments">View comments on this page at openacs.org</a></center></body></html>
Index: openacs-4/packages/acs-core-docs/www/subsites-requirements.html
===================================================================
RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/subsites-requirements.html,v
diff -u -r1.27 -r1.27.4.1
--- openacs-4/packages/acs-core-docs/www/subsites-requirements.html	17 Jul 2006 05:38:32 -0000	1.27
+++ openacs-4/packages/acs-core-docs/www/subsites-requirements.html	3 Feb 2008 12:07:41 -0000	1.27.4.1
@@ -1,30 +1,31 @@
-<html><head><meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"><title>Subsites Requirements</title><meta name="generator" content="DocBook XSL Stylesheets V1.70.1"><link rel="home" href="index.html" title="OpenACS Core Documentation"><link rel="up" href="kernel-doc.html" title="Chapter�15.�Kernel Documentation"><link rel="previous" href="groups-design.html" title="Groups Design"><link rel="next" href="subsites-design.html" title="Subsites Design Document"><link rel="stylesheet" href="openacs.css" type="text/css"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><a href="http://openacs.org"><img src="/doc/images/alex.jpg" border="0" alt="Alex logo"></a><table width="100%" summary="Navigation header" border="0"><tr><td width="20%" align="left"><a accesskey="p" href="groups-design.html">Prev</a> </td><th width="60%" align="center">Chapter�15.�Kernel Documentation</th><td width="20%" align="right"> <a accesskey="n" href="subsites-design.html">Next</a></td></tr></table><hr></div><div class="sect1" lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="subsites-requirements"></a>Subsites Requirements</h2></div></div></div><div class="authorblurb"><p>By <a href="http://planitia.org" target="_top">Rafael H. Schloming</a> and Dennis Gregorovic</p>
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html><head><meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"><title>Subsites Requirements</title><meta name="generator" content="DocBook XSL Stylesheets V1.60.1"><link rel="home" href="index.html" title="OpenACS Core Documentation"><link rel="up" href="kernel-doc.html" title="Chapter�15.�Kernel Documentation"><link rel="previous" href="groups-design.html" title="Groups Design"><link rel="next" href="subsites-design.html" title="Subsites Design Document"><link rel="stylesheet" href="openacs.css" type="text/css"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><a href="http://openacs.org"><img src="/doc/images/alex.jpg" border="0" alt="Alex logo"></a><table width="100%" summary="Navigation header" border="0"><tr><td width="20%" align="left"><a accesskey="p" href="groups-design.html">Prev</a> </td><th width="60%" align="center">Chapter�15.�Kernel Documentation</th><td width="20%" align="right"> <a accesskey="n" href="subsites-design.html">Next</a></td></tr></table><hr></div><div class="sect1" lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="subsites-requirements"></a>Subsites Requirements</h2></div></div><div></div></div><div class="authorblurb"><p>By <a href="http://planitia.org" target="_top">Rafael H. Schloming</a> and Dennis Gregorovic</p>
           OpenACS docs are written by the named authors, and may be edited
           by OpenACS documentation staff.
-        </div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="subsites-requirements-intro"></a>Introduction</h3></div></div></div><p>The following is a requirements document for OpenACS 4 Subsites, part of the
+        </div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="subsites-requirements-intro"></a>Introduction</h3></div></div><div></div></div><p>The following is a requirements document for OpenACS 4 Subsites, part of the
 OpenACS 4 Kernel. The Subsites system allows one OpenACS server instance to serve
 multiple user communities, by enabling the suite of available OpenACS
-applications to be customized for defined user communities.</p></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="subsites-requirements-vision"></a>Vision Statement</h3></div></div></div><p>Many online communities are also collections of discrete subcommunities,
+applications to be customized for defined user communities.</p></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="subsites-requirements-vision"></a>Vision Statement</h3></div></div><div></div></div><p>Many online communities are also collections of discrete subcommunities,
 reflecting real-world relationships. For example, a corporate
 intranet/extranet website serves both units within the company (e.g.,
 offices, departments, teams, projects) and external parties (e.g., customers,
 partners, vendors). Subsites enable a single OpenACS instance to provide each
-subcommunity with its own "virtual website," by assembling OpenACS
+subcommunity with its own &quot;virtual website,&quot; by assembling OpenACS
 packages that together deliver a feature set tailored to the needs of the
-subcommunity.</p></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="subsites-requirements-system-overview"></a>System Overview</h3></div></div></div><p>The OpenACS subsite system allows a single OpenACS installation to serve multiple
+subcommunity.</p></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="subsites-requirements-system-overview"></a>System Overview</h3></div></div><div></div></div><p>The OpenACS subsite system allows a single OpenACS installation to serve multiple
 communities. At an implementation level this is primarily accomplished by
-having an application "scope" its content to a particular package
+having an application &quot;scope&quot; its content to a particular package
 instance. The <a href="rp-design.html" title="Request Processor Design">request
 processor</a> then figures out which package_id a particular URL references
-and then provides this information through the <code class="computeroutput">ad_conn</code> api (<code class="computeroutput">[ad_conn
-package_id]</code>, <code class="computeroutput">[ad_conn package_url]</code>).</p><p>The other piece of the subsite system is a subsite package that provides
-subsite admins a "control panel" for administering their subsite.
+and then provides this information through the <tt class="computeroutput">ad_conn</tt> api (<tt class="computeroutput">[ad_conn
+package_id]</tt>, <tt class="computeroutput">[ad_conn package_url]</tt>).</p><p>The other piece of the subsite system is a subsite package that provides
+subsite admins a &quot;control panel&quot; for administering their subsite.
 This is the same package used to provide all the community core functionality
-available at the "main" site which is in fact simply another
-subsite.</p></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="subsites-requirements-use-cases"></a>Use-cases and User-scenarios</h3></div></div></div><p>The Subsites functionality is intended for use by two different classes of
+available at the &quot;main&quot; site which is in fact simply another
+subsite.</p></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="subsites-requirements-use-cases"></a>Use-cases and User-scenarios</h3></div></div><div></div></div><p>The Subsites functionality is intended for use by two different classes of
 users:</p><div class="orderedlist"><ol type="1"><li><p>Package programmers (referred to as 'the programmer') must
 develop subcommunity-aware applications.</p></li><li><p>Site administrators (referred to as 'the administrator') use
-subsites to provide tailored "virtual websites" to different
+subsites to provide tailored &quot;virtual websites&quot; to different
 subcommunities.</p></li></ol></div><p>Joe Programmer is working on the forum package and wants to make it
 subsite-aware. Using [ad_conn package_id], Joe adds code that only displays
 forum messages associated with the current package instance. Joe is happy to
@@ -39,18 +40,18 @@
 http://www.company.com/offices/boston/forum, and similarly for the Austin
 office. At this point, the Boston and Austin office admins can customize the
 configurations for each of their forums, or they can just use the
-defaults.</p></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="subsites-requirements-links"></a>Related Links</h3></div></div></div><div class="itemizedlist"><ul type="disc"><li><p><a href="subsites-design.html">OpenACS 4 Subsites Design Document</a></p></li><li><p>Test plan (Not available yet)</p></li></ul></div></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="subsites-requirements-api"></a>Requirements: Programmer's API</h3></div></div></div><p>A subsite API is required for programmers to ensure their packages are
-subsite-aware. The following functions should be sufficient for this:</p><p><span class="strong"><strong>10.10.0 Package creation</strong></span></p><p>The system must provide an API call to create a package, and it must be
-possible for the context (to which the package belongs) to be specified.</p><p><span class="strong"><strong>10.20.0 Package deletion</strong></span></p><p>The system must provide an API call to delete a package and all related
-objects in the subsite's context.</p><p><span class="strong"><strong>10.30.0 Object's package information</strong></span></p><p>Given an object ID, the system must provide an API call to determine the
-package (ID) to which the object belongs.</p><p><span class="strong"><strong>10.40.0 URL from package</strong></span></p><p>Given a package (ID), the system must provide an API call to return the
-canonical URL for that package.</p><p><span class="strong"><strong>10.50.0 Main subsite's package_id</strong></span></p><p>The system must provide an API call to return a package ID corresponding
-to the main subsite's package ID (the degenerate subsite).</p></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="subsites-requirements-ui"></a>Requirements: The User Interface</h3></div></div></div><p><span class="strong"><strong>The Programmer's User Interface</strong></span></p><p>There is no programmer's UI, other than the API described above.</p><p><span class="strong"><strong>The Administrator's User Interface</strong></span></p><p>The UI for administrators is a set of HTML pages that are used to drive
+defaults.</p></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="subsites-requirements-links"></a>Related Links</h3></div></div><div></div></div><div class="itemizedlist"><ul type="disc"><li><p><a href="subsites-design.html">OpenACS 4 Subsites Design Document</a></p></li><li><p>Test plan (Not available yet)</p></li></ul></div></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="subsites-requirements-api"></a>Requirements: Programmer's API</h3></div></div><div></div></div><p>A subsite API is required for programmers to ensure their packages are
+subsite-aware. The following functions should be sufficient for this:</p><p><span class="strong">10.10.0 Package creation</span></p><p>The system must provide an API call to create a package, and it must be
+possible for the context (to which the package belongs) to be specified.</p><p><span class="strong">10.20.0 Package deletion</span></p><p>The system must provide an API call to delete a package and all related
+objects in the subsite's context.</p><p><span class="strong">10.30.0 Object's package information</span></p><p>Given an object ID, the system must provide an API call to determine the
+package (ID) to which the object belongs.</p><p><span class="strong">10.40.0 URL from package</span></p><p>Given a package (ID), the system must provide an API call to return the
+canonical URL for that package.</p><p><span class="strong">10.50.0 Main subsite's package_id</span></p><p>The system must provide an API call to return a package ID corresponding
+to the main subsite's package ID (the degenerate subsite).</p></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="subsites-requirements-ui"></a>Requirements: The User Interface</h3></div></div><div></div></div><p><span class="strong">The Programmer's User Interface</span></p><p>There is no programmer's UI, other than the API described above.</p><p><span class="strong">The Administrator's User Interface</span></p><p>The UI for administrators is a set of HTML pages that are used to drive
 the underlying API for package instance management (i.e. adding, removing, or
 altering packages). It is restricted to administrators of the current subsite
 such that administrators can only manage their own subsites. Of course,
-Site-Wide Administrators can manage all subsites.</p><div class="itemizedlist"><ul type="disc"><li><p><span class="strong"><strong>20.10.0 Package creation</strong></span></p><p><span class="strong"><strong>20.10.1</strong></span> The administrator should be able to create a
-package and make it available at a URL underneath the subsite.</p></li><li><p><span class="strong"><strong>20.20.0 Package deactivation</strong></span></p><p><span class="strong"><strong>20.20.1</strong></span> The administrator should be able to deactivate
-any package, causing it to be inaccessible to users.</p><p><span class="strong"><strong>20.20.5</strong></span> Deactivating a package makes the package no
+Site-Wide Administrators can manage all subsites.</p><div class="itemizedlist"><ul type="disc"><li><p><span class="strong">20.10.0 Package creation</span></p><p><span class="strong">20.10.1</span> The administrator should be able to create a
+package and make it available at a URL underneath the subsite.</p></li><li><p><span class="strong">20.20.0 Package deactivation</span></p><p><span class="strong">20.20.1</span> The administrator should be able to deactivate
+any package, causing it to be inaccessible to users.</p><p><span class="strong">20.20.5</span> Deactivating a package makes the package no
 longer accessible, but it does not remove data created within the context of
-that package.</p></li></ul></div></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="subsites-requirements-rev-history"></a>Revision History</h3></div></div></div><div class="informaltable"><table cellspacing="0" border="1"><colgroup><col><col><col><col></colgroup><tbody><tr><td><span class="strong"><strong>Document Revision #</strong></span></td><td><span class="strong"><strong>Action Taken, Notes</strong></span></td><td><span class="strong"><strong>When?</strong></span></td><td><span class="strong"><strong>By Whom?</strong></span></td></tr><tr><td>0.1</td><td>Creation</td><td>08/18/2000</td><td>Dennis Gregorovic</td></tr><tr><td>0.2</td><td>Edited, reviewed</td><td>08/29/2000</td><td>Kai Wu</td></tr></tbody></table></div></div></div><div class="navfooter"><hr><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="groups-design.html">Prev</a> </td><td width="20%" align="center"><a accesskey="h" href="index.html">Home</a></td><td width="40%" align="right"> <a accesskey="n" href="subsites-design.html">Next</a></td></tr><tr><td width="40%" align="left">Groups Design </td><td width="20%" align="center"><a accesskey="u" href="kernel-doc.html">Up</a></td><td width="40%" align="right"> Subsites Design Document</td></tr></table><hr><address><a href="mailto:docs@openacs.org">docs@openacs.org</a></address></div><a name="comments"></a><center><a href="http://openacs.org/doc/current/subsites-requirements.html#comments">View comments on this page at openacs.org</a></center></body></html>
+that package.</p></li></ul></div></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="subsites-requirements-rev-history"></a>Revision History</h3></div></div><div></div></div><div class="informaltable"><table cellspacing="0" border="1"><colgroup><col><col><col><col></colgroup><tbody><tr><td><span class="strong">Document Revision #</span></td><td><span class="strong">Action Taken, Notes</span></td><td><span class="strong">When?</span></td><td><span class="strong">By Whom?</span></td></tr><tr><td>0.1</td><td>Creation</td><td>08/18/2000</td><td>Dennis Gregorovic</td></tr><tr><td>0.2</td><td>Edited, reviewed</td><td>08/29/2000</td><td>Kai Wu</td></tr></tbody></table></div></div></div><div class="navfooter"><hr><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="groups-design.html">Prev</a> </td><td width="20%" align="center"><a accesskey="h" href="index.html">Home</a></td><td width="40%" align="right"> <a accesskey="n" href="subsites-design.html">Next</a></td></tr><tr><td width="40%" align="left">Groups Design </td><td width="20%" align="center"><a accesskey="u" href="kernel-doc.html">Up</a></td><td width="40%" align="right"> Subsites Design Document</td></tr></table><hr><address><a href="mailto:docs@openacs.org">docs@openacs.org</a></address></div><a name="comments"></a><center><a href="http://openacs.org/doc/current/subsites-requirements.html#comments">View comments on this page at openacs.org</a></center></body></html>
Index: openacs-4/packages/acs-core-docs/www/subsites.html
===================================================================
RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/subsites.html,v
diff -u -r1.42 -r1.42.4.1
--- openacs-4/packages/acs-core-docs/www/subsites.html	17 Jul 2006 05:38:32 -0000	1.42
+++ openacs-4/packages/acs-core-docs/www/subsites.html	3 Feb 2008 12:07:41 -0000	1.42.4.1
@@ -1,7 +1,8 @@
-<html><head><meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"><title>Writing OpenACS Application Pages</title><meta name="generator" content="DocBook XSL Stylesheets V1.70.1"><link rel="home" href="index.html" title="OpenACS Core Documentation"><link rel="up" href="dev-guide.html" title="Chapter�11.�Development Reference"><link rel="previous" href="permissions.html" title="Groups, Context, Permissions"><link rel="next" href="parties.html" title="Parties in OpenACS"><link rel="stylesheet" href="openacs.css" type="text/css"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><a href="http://openacs.org"><img src="/doc/images/alex.jpg" border="0" alt="Alex logo"></a><table width="100%" summary="Navigation header" border="0"><tr><td width="20%" align="left"><a accesskey="p" href="permissions.html">Prev</a> </td><th width="60%" align="center">Chapter�11.�Development Reference</th><td width="20%" align="right"> <a accesskey="n" href="parties.html">Next</a></td></tr></table><hr></div><div class="sect1" lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="subsites"></a>Writing OpenACS Application Pages</h2></div></div></div><div class="authorblurb"><p>By Rafael H. Schloming and Pete Su</p>
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html><head><meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"><title>Writing OpenACS Application Pages</title><meta name="generator" content="DocBook XSL Stylesheets V1.60.1"><link rel="home" href="index.html" title="OpenACS Core Documentation"><link rel="up" href="dev-guide.html" title="Chapter�11.�Development Reference"><link rel="previous" href="permissions.html" title="Groups, Context, Permissions"><link rel="next" href="parties.html" title="Parties in OpenACS"><link rel="stylesheet" href="openacs.css" type="text/css"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><a href="http://openacs.org"><img src="/doc/images/alex.jpg" border="0" alt="Alex logo"></a><table width="100%" summary="Navigation header" border="0"><tr><td width="20%" align="left"><a accesskey="p" href="permissions.html">Prev</a> </td><th width="60%" align="center">Chapter�11.�Development Reference</th><td width="20%" align="right"> <a accesskey="n" href="parties.html">Next</a></td></tr></table><hr></div><div class="sect1" lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="subsites"></a>Writing OpenACS Application Pages</h2></div></div><div></div></div><div class="authorblurb"><p>By Rafael H. Schloming and Pete Su</p>
           OpenACS docs are written by the named authors, and may be edited
           by OpenACS documentation staff.
-        </div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="subsites-overview"></a>Overview</h3></div></div></div><p>
+        </div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="subsites-overview"></a>Overview</h3></div></div><div></div></div><p>
 In this document, we'll examine the user interface pages of the Notes
 application in more detail, covering two separate aspects of page
 development in OpenACS. First, we'll talk about the code needed to make
@@ -10,7 +11,7 @@
 form-based user interfaces in OpenACS. While these seem like unrelated
 topics, they both come up in the example page that we are going to
 look at, so it makes sense to address them at the same time.
-</p></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="subsites-instances"></a>Application Instances and Subsites</h3></div></div></div><p>
+</p></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="subsites-instances"></a>Application Instances and Subsites</h3></div></div><div></div></div><p>
 As you will recall from the <a href="packages.html" title="OpenACS Packages">packages</a> tutorial, the Request
 Processor (RP) and Package Manager (APM) allow site
 administrators to define an arbitrary mapping from URLs in the site to
@@ -21,63 +22,63 @@
 particular URL.  The tutorial also showed how a given URL is
 translated into a physical file to serve using the site map. We'll
 repeat this description here, assuming that you have mounted an
-instance of Notes at the URL <code class="computeroutput">/notes</code> as we did in the <a href="packages.html#packages-looks" title="What a Package Looks Like">packages-example</a>:
+instance of Notes at the URL <tt class="computeroutput">/notes</tt> as we did in the <a href="packages.html#packages-looks" title="What a Package Looks Like">packages-example</a>:
 </p><div class="itemizedlist"><ul type="disc"><li><p>
-AOLserver receives your request for the URL <code class="computeroutput">/notes/somepage</code>.
+AOLserver receives your request for the URL <tt class="computeroutput">/notes/somepage</tt>.
 </p></li><li><p>
 This URL is passed to the request processor.
 </p></li><li><p>
 The RP looks up the URL in the site map, and sees that the object
-mounted at that location is an instance of the <code class="computeroutput">notes</code>
+mounted at that location is an instance of the <tt class="computeroutput">notes</tt>
 application. 
 </p></li><li><p>
 The RP asks the package manager where in the file system the Notes
 package lives. In the standard case, this would be
-<code class="computeroutput">ROOT/packages/notes</code>.
+<tt class="computeroutput">ROOT/packages/notes</tt>.
 </p></li><li><p>
 The RP translates the URL to serve a page relative to the page root of
 the application, which is
-<code class="computeroutput">ROOT/packages/notes/www/</code>. Therefore, the page that is
-finally served is <code class="computeroutput">ROOT/packages/notes/www/hello.html</code>,
+<tt class="computeroutput">ROOT/packages/notes/www/</tt>. Therefore, the page that is
+finally served is <tt class="computeroutput">ROOT/packages/notes/www/hello.html</tt>,
 which is what we wanted.
 </p></li></ul></div><p>
 What is missing from this description is a critical fact for
 application developers: In addition to working out what file to serve,
 the RP also stores information about which package instance the file
 belongs to into the AOLserver connection environment. The following
-<code class="computeroutput">ad_conn</code> interfaces can be used to extract this
+<tt class="computeroutput">ad_conn</tt> interfaces can be used to extract this
 information:
-</p><div class="variablelist"><dl><dt><span class="term"><code class="computeroutput">[ad_conn package_url]</code></span></dt><dd><p>
+</p><div class="variablelist"><dl><dt><span class="term"><tt class="computeroutput">[ad_conn package_url]</tt></span></dt><dd><p>
 If the URL refers to a package instance, this is the URL to the root
 of the tree where the package is mounted.
-</p></dd><dt><span class="term"><code class="computeroutput">[ad_conn package_id]</code></span></dt><dd><p>
+</p></dd><dt><span class="term"><tt class="computeroutput">[ad_conn package_id]</tt></span></dt><dd><p>
 If the URL refers to a package instance, this is the ID of that
 package instance.
-</p></dd><dt><span class="term"><code class="computeroutput">[ad_conn package_key]</code>
+</p></dd><dt><span class="term"><tt class="computeroutput">[ad_conn package_key]</tt>
 
 </span></dt><dd><p>
 If the URL refers to a package instance, this is the unique key name
 of the package.
-</p></dd><dt><span class="term"><code class="computeroutput">[ad_conn extra_url]</code>
+</p></dd><dt><span class="term"><tt class="computeroutput">[ad_conn extra_url]</tt>
 
 </span></dt><dd><p>
 If we found the URL in the site map, this is the tail of the URL
 following the part that matched a site map entry.
 </p></dd></dl></div><p>
 In the Notes example, we are particularly interested in the
-<code class="computeroutput">package_id</code> field.  If you study the data model and code,
+<tt class="computeroutput">package_id</tt> field.  If you study the data model and code,
 you'll see why. As we said before in the <a href="objects.html" title="OpenACS Data Models and the Object System">data modeling</a> tutorial, the Notes application points the
-<code class="computeroutput">context_id</code> of each Note object that it creates to the
-package instance that created it. That is, the <code class="computeroutput">context_id</code>
-corresponds exactly to the <code class="computeroutput">package_id</code> that comes in from
+<tt class="computeroutput">context_id</tt> of each Note object that it creates to the
+package instance that created it. That is, the <tt class="computeroutput">context_id</tt>
+corresponds exactly to the <tt class="computeroutput">package_id</tt> that comes in from
 the RP. This is convenient because it allows the administrator and the
 owner of the package to easily define access control policies for all
 the notes in a particular instance just my setting permissions on the
 package instance itself.
 </p><p>
 The code for adding and editing notes, in
-<code class="computeroutput">notes/www/add-edit.tcl</code>, shows how this works. At the top
-of the page, we extract the <code class="computeroutput">package_id</code> and use it to do
+<tt class="computeroutput">notes/www/add-edit.tcl</tt>, shows how this works. At the top
+of the page, we extract the <tt class="computeroutput">package_id</tt> and use it to do
 permission checks:
 </p><pre class="programlisting">
 
@@ -86,11 +87,11 @@
 if {[info exists note_id]} {
       permission::require_permission -object_id $note_id -privilege write
 
-      set context_bar [ad_context_bar "Edit Note"]
+      set context_bar [ad_context_bar &quot;Edit Note&quot;]
 } else {
       permission::require_permission -object_id $note_id -privilege create
 
-      set context_bar [ad_context_bar "New Note"]
+      set context_bar [ad_context_bar &quot;New Note&quot;]
 }
 
 </pre><p>
@@ -99,7 +100,7 @@
 for each action.
 </p><p>
 Later, when we actually create a note, the SQL that we run ensures
-that the <code class="computeroutput">context_id</code> is set the right way:
+that the <tt class="computeroutput">context_id</tt> is set the right way:
 </p><pre class="programlisting">
 
 db_dml new_note {
@@ -123,25 +124,25 @@
 without generating a lot of duplicated HTML in your pages. It also
 encapsulates most of the common logic that we use in dealing with
 forms, which we'll discuss next.
-</p></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="subsites-using-forms"></a>Using Forms</h3></div></div></div><p>
+</p></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="subsites-using-forms"></a>Using Forms</h3></div></div><div></div></div><p>
 The forms API is pretty simple: You use calls in the
-<code class="computeroutput">template::form</code> namespace in your Tcl script to create
+<tt class="computeroutput">template::form</tt> namespace in your Tcl script to create
 form elements. The final template page then picks this stuff up and
 lays the form out for the user. The form is set up to route submit
 buttons and whatnot back to the same Tcl script that set up the
 form, so your Tcl script will also contain the logic needed to process
 these requests.
 </p><p>
 So, given this outline, here is a breakdown of how the forms code
-works in the <code class="computeroutput">add-edit.tcl</code> page. First, we create a form object
-called <code class="computeroutput">new_note</code>:
+works in the <tt class="computeroutput">add-edit.tcl</tt> page. First, we create a form object
+called <tt class="computeroutput">new_note</tt>:
 </p><pre class="programlisting">
 
 template::form create new_note
 
 </pre><p>
 All the forms related code in this page will refer back to this
-object. In addition, the <code class="computeroutput">adp</code> part of this page does
+object. In addition, the <tt class="computeroutput">adp</tt> part of this page does
 nothing but display the form object:
 </p><pre class="programlisting">
 
@@ -152,7 +153,7 @@
 &lt;hr&gt;
 
 &lt;center&gt;
-&lt;formtemplate id="new_note"&gt;&lt;/formtemplate&gt;
+&lt;formtemplate id=&quot;new_note&quot;&gt;&lt;/formtemplate&gt;
 &lt;/center&gt;
 
 </pre><p>
@@ -175,9 +176,9 @@
 }
 
 </pre><p>
-The <code class="computeroutput">if_request</code> call returns true if we are asking the
+The <tt class="computeroutput">if_request</tt> call returns true if we are asking the
 page to render the form for the first time. That is, we are rendering
-the form to ask the user for input. The <code class="computeroutput">tcl</code> part of a
+the form to ask the user for input. The <tt class="computeroutput">tcl</tt> part of a
 form page can be called in 3 different states: the initial request,
 the initial submission, and the validated submission. These states
 reflect the typical logic of a forms based page in OpenACS:
@@ -190,16 +191,16 @@
 Finally, control passes to the page that performs the update in the
 database.
 </p></li></ul></div><p>
-The rest of the <code class="computeroutput">if</code> condition figures out if we are
+The rest of the <tt class="computeroutput">if</tt> condition figures out if we are
 creating a new note or editing an existing note. If
-<code class="computeroutput">note_id</code> is passed to us from the calling page, we assume
+<tt class="computeroutput">note_id</tt> is passed to us from the calling page, we assume
 that we are editing an existing note. In this case, we do a database
 query to grab the data for the note so we can populate the form with
 it.
 </p><p>
 The next two calls create form elements where the user can insert or
 edit the title and body of the Note. The interface to
-<code class="computeroutput">template::element</code> is pretty straightforward.
+<tt class="computeroutput">template::element</tt> is pretty straightforward.
 </p><p>
 Finally, the code at the bottom of the page performs the actual
 database updates when the form is submitted and validated:
@@ -233,7 +234,7 @@
     }
   }
 
-  ad_returnredirect "."
+  ad_returnredirect &quot;.&quot;
 }
 
 </pre><p>
@@ -242,7 +243,7 @@
 the HTML rendering, input validation and database transaction logic on
 your behalf. This means that you can write pages without duplicating
 all of that code in every set of pages that uses forms.
-</p></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="subsites-how-it-all-fits"></a>How it All Fits</h3></div></div></div><p>
+</p></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="subsites-how-it-all-fits"></a>How it All Fits</h3></div></div><div></div></div><p>
 To watch all of this work, use the installer to update the Notes
 package with the new code that you grabbed out of CVS or the package
 repository, mount an instance of Notes somewhere in your server and
@@ -253,15 +254,15 @@
 visible to that user. The end result is a site where users can come
 and write notes to themselves.
 </p><p>
-This is a good example of the leverage available in the OpenACS 5.2.3rc1
+This is a good example of the leverage available in the OpenACS 5.4.0
 system. The code that we have written for Notes is not at all more
 complex than a similar application without access control or site map
 awareness. By adding a small amount of code, we have taken a small,
 simple, and special purpose application to something that has the
 potential to be a very useful, general-purpose tool, complete with
 multi-user features, access control, and centralized administration.
-</p></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="subsites-summary"></a>Summary</h3></div></div></div><p>
-In OpenACS 5.2.3rc1, application pages and scripts can be aware of the package
+</p></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="subsites-summary"></a>Summary</h3></div></div><div></div></div><p>
+In OpenACS 5.4.0, application pages and scripts can be aware of the package
 instance, or subsite in which they are executing. This is a powerful
 general purpose mechanism that can be used to structure web services
 in very flexible ways.
Index: openacs-4/packages/acs-core-docs/www/tcl-doc.html
===================================================================
RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/tcl-doc.html,v
diff -u -r1.43 -r1.43.4.1
--- openacs-4/packages/acs-core-docs/www/tcl-doc.html	17 Jul 2006 05:38:32 -0000	1.43
+++ openacs-4/packages/acs-core-docs/www/tcl-doc.html	3 Feb 2008 12:07:41 -0000	1.43.4.1
@@ -1,7 +1,8 @@
-<html><head><meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"><title>Documenting Tcl Files: Page Contracts and Libraries</title><meta name="generator" content="DocBook XSL Stylesheets V1.70.1"><link rel="home" href="index.html" title="OpenACS Core Documentation"><link rel="up" href="kernel-doc.html" title="Chapter�15.�Kernel Documentation"><link rel="previous" href="rp-design.html" title="Request Processor Design"><link rel="next" href="bootstrap-acs.html" title="Bootstrapping OpenACS"><link rel="stylesheet" href="openacs.css" type="text/css"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><a href="http://openacs.org"><img src="/doc/images/alex.jpg" border="0" alt="Alex logo"></a><table width="100%" summary="Navigation header" border="0"><tr><td width="20%" align="left"><a accesskey="p" href="rp-design.html">Prev</a> </td><th width="60%" align="center">Chapter�15.�Kernel Documentation</th><td width="20%" align="right"> <a accesskey="n" href="bootstrap-acs.html">Next</a></td></tr></table><hr></div><div class="sect1" lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="tcl-doc"></a>Documenting Tcl Files: Page Contracts and Libraries</h2></div></div></div><div class="authorblurb"><p>By <a href="mailto:jsalz@mit.edu" target="_top">Jon Salz</a> on 3 July 2000 </p>
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html><head><meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"><title>Documenting Tcl Files: Page Contracts and Libraries</title><meta name="generator" content="DocBook XSL Stylesheets V1.60.1"><link rel="home" href="index.html" title="OpenACS Core Documentation"><link rel="up" href="kernel-doc.html" title="Chapter�15.�Kernel Documentation"><link rel="previous" href="rp-design.html" title="Request Processor Design"><link rel="next" href="bootstrap-acs.html" title="Bootstrapping OpenACS"><link rel="stylesheet" href="openacs.css" type="text/css"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><a href="http://openacs.org"><img src="/doc/images/alex.jpg" border="0" alt="Alex logo"></a><table width="100%" summary="Navigation header" border="0"><tr><td width="20%" align="left"><a accesskey="p" href="rp-design.html">Prev</a> </td><th width="60%" align="center">Chapter�15.�Kernel Documentation</th><td width="20%" align="right"> <a accesskey="n" href="bootstrap-acs.html">Next</a></td></tr></table><hr></div><div class="sect1" lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="tcl-doc"></a>Documenting Tcl Files: Page Contracts and Libraries</h2></div></div><div></div></div><div class="authorblurb"><p>By <a href="mailto:jsalz@mit.edu" target="_top">Jon Salz</a> on 3 July 2000 </p>
           OpenACS docs are written by the named authors, and may be edited
           by OpenACS documentation staff.
-        </div><div class="itemizedlist"><ul type="disc"><li><p>Tcl procedures: /packages/acs-kernel/tcl-documentation-procs.tcl</p></li></ul></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="tcl-doc-bigpicture"></a>The Big Picture</h3></div></div></div><p>In versions of the OpenACS prior to 3.4, <a href="/doc/standards" target="_top">the standard
+        </div><div class="itemizedlist"><ul type="disc"><li><p>Tcl procedures: /packages/acs-kernel/tcl-documentation-procs.tcl</p></li></ul></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="tcl-doc-bigpicture"></a>The Big Picture</h3></div></div><div></div></div><p>In versions of the OpenACS prior to 3.4, <a href="/doc/standards" target="_top">the standard
 place</a> to document Tcl files (both Tcl pages and Tcl library files) was in
 a comment at the top of the file:</p><pre class="programlisting">
 #
@@ -15,44 +16,44 @@
 #
 </pre><p>
 In addition, the inputs expected by a Tcl page (i.e., form variables) would
-be enumerated in a call to <code class="computeroutput">ad_page_variables</code>, in effect,
+be enumerated in a call to <tt class="computeroutput">ad_page_variables</tt>, in effect,
 documenting the page's argument list. 
 </p><p>The problem with these practices is that the documentation is only
 accessible by reading the source file itself. For this reason, ACS 3.4
 introduces a new API for documenting Tcl files and, on top of that, a
-web-based user interface for browsing the documentation:</p><div class="itemizedlist"><ul type="disc"><li><p><span class="strong"><strong><code class="computeroutput"><a href="tcl-doc.html#tcl-doc-ad-page-contract" title="ad_page_contract">ad_page_contract</a></code></strong></span>: Every Tcl page
-has a <span class="strong"><strong>contract</strong></span> that explicitly defines what inputs the page
-expects (with more precision than <code class="computeroutput">ad_page_variables</code>) and
+web-based user interface for browsing the documentation:</p><div class="itemizedlist"><ul type="disc"><li><p><span class="strong"><tt class="computeroutput"><a href="tcl-doc.html#tcl-doc-ad-page-contract" title="ad_page_contract">ad_page_contract</a></tt></span>: Every Tcl page
+has a <span class="strong">contract</span> that explicitly defines what inputs the page
+expects (with more precision than <tt class="computeroutput">ad_page_variables</tt>) and
 incorporates metadata about the page (what used to live in the top-of-page
-comment). Like <code class="computeroutput">ad_page_variables</code>, <code class="computeroutput">ad_page_contract</code>
-also sets the specified variables in the context of the Tcl page.</p></li><li><p><span class="strong"><strong><code class="computeroutput"><a href="tcl-doc.html#tcl-doc-ad-library" title="ad_library">ad_library</a></code></strong></span>: To be
+comment). Like <tt class="computeroutput">ad_page_variables</tt>, <tt class="computeroutput">ad_page_contract</tt>
+also sets the specified variables in the context of the Tcl page.</p></li><li><p><span class="strong"><tt class="computeroutput"><a href="tcl-doc.html#tcl-doc-ad-library" title="ad_library">ad_library</a></tt></span>: To be
 called at the top of every library file (i.e., all files in the
-<code class="computeroutput">/tcl/</code> directory under the server root and
-<code class="computeroutput">*-procs.tcl</code> files under <code class="computeroutput">/packages/</code>).</p></li></ul></div><p>
+<tt class="computeroutput">/tcl/</tt> directory under the server root and
+<tt class="computeroutput">*-procs.tcl</tt> files under <tt class="computeroutput">/packages/</tt>).</p></li></ul></div><p>
 This has the following benefits: 
 </p><div class="itemizedlist"><ul type="disc"><li><p>Facilitates automatic generation of human-readable documentation.</p></li><li><p>Promotes security, by introducing a standard and automated way to check
 inputs to scripts for correctness.</p></li><li><p>Allows graphical designers to determine easily how to customize
 sites' UIs, e.g., what properties are available in templates.</p></li><li><p>Allows the request processor to be intelligent: a script can specify in
 its contract which type of abstract document it
 returns, and the request processor can transform it automatically into
 something useful to a particular user agent. (Don't worry about this for
-now - it's not complete for ACS 3.4.)</p></li></ul></div></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="tcl-doc-ad-page-contract"></a>ad_page_contract</h3></div></div></div><p>
-Currently <code class="computeroutput">ad_page_contract</code> serves mostly as a replacement for
-<code class="computeroutput">ad_page_variables</code>. Eventually, it will be integrated closely
+now - it's not complete for ACS 3.4.)</p></li></ul></div></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="tcl-doc-ad-page-contract"></a>ad_page_contract</h3></div></div><div></div></div><p>
+Currently <tt class="computeroutput">ad_page_contract</tt> serves mostly as a replacement for
+<tt class="computeroutput">ad_page_variables</tt>. Eventually, it will be integrated closely
 with the documents API so that each script's contract will document
 precisely the set of properties available to graphical designers in
 templates. (Document API integration is subject to change, so we don't
 decsribe it here yet; for now, you can just consider
-<code class="computeroutput">ad_page_contract</code> a newer, better, documented
-<code class="computeroutput">ad_page_variables</code>.) 
-</p><p>Let's look at an example usage of <code class="computeroutput">ad_page_contract</code>:</p><pre class="programlisting">
+<tt class="computeroutput">ad_page_contract</tt> a newer, better, documented
+<tt class="computeroutput">ad_page_variables</tt>.) 
+</p><p>Let's look at an example usage of <tt class="computeroutput">ad_page_contract</tt>:</p><pre class="programlisting">
 
 # /packages/acs-kernel/api-doc/www/package-view.tcl
 ad_page_contract {
     version_id:integer
     public_p:optional
     kind
-    { format "html" }
+    { format &quot;html&quot; }
 } {
     Shows APIs for a particular package.
 
@@ -70,83 +71,83 @@
 
 </pre><p>
 Note that: 
-</p><div class="itemizedlist"><ul type="disc"><li><p><span class="strong"><strong>By convention, <code class="computeroutput">ad_page_contract</code> should be preceded
-by a comment line containing the file's path</strong></span>. The comment is on
+</p><div class="itemizedlist"><ul type="disc"><li><p><span class="strong">By convention, <tt class="computeroutput">ad_page_contract</tt> should be preceded
+by a comment line containing the file's path</span>. The comment is on
 line 1, and the contract starts on line 2.
-</p></li><li><p><span class="strong"><strong><code class="computeroutput">ad_page_contract</code></strong></span>'s first argument is
-the list of expected arguments from the HTTP query (<code class="computeroutput">version_id</code>,
-<code class="computeroutput">public_p</code>, <code class="computeroutput">kind</code>, and <code class="computeroutput">format</code>). Like
-<code class="computeroutput">ad_page_variables</code>, <code class="computeroutput">ad_page_contract</code> sets the
+</p></li><li><p><span class="strong"><tt class="computeroutput">ad_page_contract</tt></span>'s first argument is
+the list of expected arguments from the HTTP query (<tt class="computeroutput">version_id</tt>,
+<tt class="computeroutput">public_p</tt>, <tt class="computeroutput">kind</tt>, and <tt class="computeroutput">format</tt>). Like
+<tt class="computeroutput">ad_page_variables</tt>, <tt class="computeroutput">ad_page_contract</tt> sets the
 corresponding Tcl variables when the page is executed.
-</p></li><li><p><span class="strong"><strong>Arguments can have defaults</strong></span>, specified using the same
-syntax as in the Tcl <code class="computeroutput">proc</code> (a two-element list where the first
+</p></li><li><p><span class="strong">Arguments can have defaults</span>, specified using the same
+syntax as in the Tcl <tt class="computeroutput">proc</tt> (a two-element list where the first
 element is the parameter name and the second argument is the default value).
 
-</p></li><li><p><span class="strong"><strong>Arguments can have flags</strong></span>, specified by following the
+</p></li><li><p><span class="strong">Arguments can have flags</span>, specified by following the
 name of the query argument with a colon and one or more of the following
-strings (separated by commas): </p><div class="itemizedlist"><ul type="circle"><li><p><span class="strong"><strong><code class="computeroutput">optional</code></strong></span>: the query argument doesn't
+strings (separated by commas): </p><div class="itemizedlist"><ul type="circle"><li><p><span class="strong"><tt class="computeroutput">optional</tt></span>: the query argument doesn't
 need to be provided; if it's not, the variable for that argument simply
 won't be set. For instance, if I call the script above without a
-<code class="computeroutput">public_p</code> in the query, then in the page body <code class="computeroutput">[info exists
-public_p]</code> will return 0.
-</p></li><li><p><span class="strong"><strong><code class="computeroutput">integer</code></strong></span>: the argument must be an integer
-(<code class="computeroutput">ad_page_contract</code> will fail and display and error if not). This
+<tt class="computeroutput">public_p</tt> in the query, then in the page body <tt class="computeroutput">[info exists
+public_p]</tt> will return 0.
+</p></li><li><p><span class="strong"><tt class="computeroutput">integer</tt></span>: the argument must be an integer
+(<tt class="computeroutput">ad_page_contract</tt> will fail and display and error if not). This
 flag, like the next, is intended to prevent clients from fudging query
 arguments to trick scripts into executing arbitrary SQL. 
 
-</p></li><li><p><span class="strong"><strong><code class="computeroutput">sql_identifier</code></strong></span>: the argument must be a SQL
-identifier (i.e., <code class="computeroutput">[string is wordchar $the_query_var]</code> must
+</p></li><li><p><span class="strong"><tt class="computeroutput">sql_identifier</tt></span>: the argument must be a SQL
+identifier (i.e., <tt class="computeroutput">[string is wordchar $the_query_var]</tt> must
 return true). 
 
-</p></li><li><p><span class="strong"><strong><code class="computeroutput">trim</code></strong></span>: the argument will be [string
+</p></li><li><p><span class="strong"><tt class="computeroutput">trim</tt></span>: the argument will be [string
 trim]'ed. 
 
-</p></li><li><p><span class="strong"><strong><code class="computeroutput">multiple</code></strong></span>: the argument may be specified
+</p></li><li><p><span class="strong"><tt class="computeroutput">multiple</tt></span>: the argument may be specified
 arbitrarily many times in the query string, and the variable will be set to a
 list of all those values (or an empty list if it's unspecified). This is
-analogous to the <code class="computeroutput">-multiple-list</code> flag to
-<code class="computeroutput">ad_page_variables</code>, and is useful for handling form input
-generated by <code class="computeroutput">&lt;SELECT MULTIPLE&gt;</code> tags and checkboxes. </p><p>For instance, if <code class="computeroutput">dest_user_id:multiple</code> is specified in the
+analogous to the <tt class="computeroutput">-multiple-list</tt> flag to
+<tt class="computeroutput">ad_page_variables</tt>, and is useful for handling form input
+generated by <tt class="computeroutput">&lt;SELECT MULTIPLE&gt;</tt> tags and checkboxes. </p><p>For instance, if <tt class="computeroutput">dest_user_id:multiple</tt> is specified in the
 contract, and the query string is</p><pre class="programlisting">
 
 ?dest_user_id=913&amp;dest_user_id=891&amp;dest_user_id=9
 
 </pre><p>
-then <code class="computeroutput">$dest_user_id</code> is set to <code class="computeroutput">[list 913 891 9]</code>.
+then <tt class="computeroutput">$dest_user_id</tt> is set to <tt class="computeroutput">[list 913 891 9]</tt>.
 
 
-</p></li><li><p><span class="strong"><strong><code class="computeroutput">array</code></strong></span>: the argument may be specified
+</p></li><li><p><span class="strong"><tt class="computeroutput">array</tt></span>: the argument may be specified
 arbitrarily many times in the query string, with parameter names with
-suffixes like <code class="computeroutput">_1</code>, <code class="computeroutput">_2</code>, <code class="computeroutput">_3</code>, etc. The
+suffixes like <tt class="computeroutput">_1</tt>, <tt class="computeroutput">_2</tt>, <tt class="computeroutput">_3</tt>, etc. The
 variable is set to a list of all those values (or an empty list if none are
-specified). </p><p>For instance, if <code class="computeroutput">dest_user_id:array</code> is specified in the
+specified). </p><p>For instance, if <tt class="computeroutput">dest_user_id:array</tt> is specified in the
 contract, and the query string is</p><pre class="programlisting">
 
 ?dest_user_id_0=913&amp;dest_user_id_1=891&amp;dest_user_id_2=9
 
 </pre><p>
-then <code class="computeroutput">$dest_user_id</code> is set to <code class="computeroutput">[list 913 891 9]</code>.</p></li></ul></div></li><li><p><span class="strong"><strong>You can provide structured, HTML-formatted documentation for your
-contract</strong></span>. Note that format is derived heavily from Javadoc: a
+then <tt class="computeroutput">$dest_user_id</tt> is set to <tt class="computeroutput">[list 913 891 9]</tt>.</p></li></ul></div></li><li><p><span class="strong">You can provide structured, HTML-formatted documentation for your
+contract</span>. Note that format is derived heavily from Javadoc: a
 general description of the script's functionality, followed optionally by
-a series of named attributes tagged by at symbols (<code class="computeroutput">@</code>). You are
+a series of named attributes tagged by at symbols (<tt class="computeroutput">@</tt>). You are
 encouraged to provide: 
 </p><div class="itemizedlist"><ul type="circle"><li><p>A description of the functionality of the page. If the description
 contains more than one sentence, the first sentence should be a brief
 summary. 
 
-</p></li><li><p>A <span class="strong"><strong><code class="computeroutput">@param</code></strong></span> tag for each allowable query
+</p></li><li><p>A <span class="strong"><tt class="computeroutput">@param</tt></span> tag for each allowable query
 argument. The format is </p><pre class="programlisting">
 
 @param <span class="emphasis"><em>parameter-name</em></span> <span class="emphasis"><em>description...</em></span>
 
-</pre></li><li><p>An <span class="strong"><strong><code class="computeroutput">@author</code></strong></span> tag for each author. Specify the
-author's name, followed his or her email address in parentheses.</p></li><li><p>A <span class="strong"><strong><code class="computeroutput">@creation-date</code></strong></span> tag indicating when the
-script was first created.</p></li><li><p>A <span class="strong"><strong><code class="computeroutput">@cvs-id</code></strong></span> tag containing the page's CVS
-identification string. Just use <code class="computeroutput">$Id: tcl-documentation.html,v 1.2
-2000/09/19 07:22:35 ron Exp $</code> when creating the file, and CVS will
+</pre></li><li><p>An <span class="strong"><tt class="computeroutput">@author</tt></span> tag for each author. Specify the
+author's name, followed his or her email address in parentheses.</p></li><li><p>A <span class="strong"><tt class="computeroutput">@creation-date</tt></span> tag indicating when the
+script was first created.</p></li><li><p>A <span class="strong"><tt class="computeroutput">@cvs-id</tt></span> tag containing the page's CVS
+identification string. Just use <tt class="computeroutput">$Id: tcl-documentation.html,v 1.2
+2000/09/19 07:22:35 ron Exp $</tt> when creating the file, and CVS will
 substitute an appropriate string when you check the file in.</p></li></ul></div><p>
- These <code class="computeroutput">@</code> tags are optional, but highly recommended!</p></li></ul></div></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="tcl-doc-ad-library"></a>ad_library</h3></div></div></div><p>
-<code class="computeroutput">ad_library</code> provides a replacement for the informal documentation
+ These <tt class="computeroutput">@</tt> tags are optional, but highly recommended!</p></li></ul></div></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="tcl-doc-ad-library"></a>ad_library</h3></div></div><div></div></div><p>
+<tt class="computeroutput">ad_library</tt> provides a replacement for the informal documentation
 (described above) found at the beginning of every Tcl page. Instead of: 
 </p><pre class="programlisting">
 
@@ -177,11 +178,11 @@
 </pre><p>
 Note that format is derived heavily from Javadoc: a general description of
 the script's functionality, followed optionally by a series of named
-attributes tagged by at symbols (<code class="computeroutput">@</code>). HTML formatting is allowed.
+attributes tagged by at symbols (<tt class="computeroutput">@</tt>). HTML formatting is allowed.
 You are encouraged to provide: 
-</p><div class="itemizedlist"><ul type="disc"><li><p>An <span class="strong"><strong><code class="computeroutput">@author</code></strong></span> tag for each author. Specify the
-author's name, followed his or her email address in parentheses.</p></li><li><p>A <span class="strong"><strong><code class="computeroutput">@creation-date</code></strong></span> tag indicating when the
-script was first created.</p></li><li><p>A <span class="strong"><strong><code class="computeroutput">@cvs-id</code></strong></span> tag containing the page's CVS
-identification string. Just use <code class="computeroutput">$Id: tcl-documentation.html,v 1.2
-2000/09/19 07:22:35 ron Exp $</code> when creating the file, and CVS will
+</p><div class="itemizedlist"><ul type="disc"><li><p>An <span class="strong"><tt class="computeroutput">@author</tt></span> tag for each author. Specify the
+author's name, followed his or her email address in parentheses.</p></li><li><p>A <span class="strong"><tt class="computeroutput">@creation-date</tt></span> tag indicating when the
+script was first created.</p></li><li><p>A <span class="strong"><tt class="computeroutput">@cvs-id</tt></span> tag containing the page's CVS
+identification string. Just use <tt class="computeroutput">$Id: tcl-documentation.html,v 1.2
+2000/09/19 07:22:35 ron Exp $</tt> when creating the file, and CVS will
 substitute an appropriate string when you check the file in.</p></li></ul></div><div class="cvstag">($Id$)</div></div></div><div class="navfooter"><hr><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="rp-design.html">Prev</a> </td><td width="20%" align="center"><a accesskey="h" href="index.html">Home</a></td><td width="40%" align="right"> <a accesskey="n" href="bootstrap-acs.html">Next</a></td></tr><tr><td width="40%" align="left">Request Processor Design </td><td width="20%" align="center"><a accesskey="u" href="kernel-doc.html">Up</a></td><td width="40%" align="right"> Bootstrapping OpenACS</td></tr></table><hr><address><a href="mailto:docs@openacs.org">docs@openacs.org</a></address></div><a name="comments"></a><center><a href="http://openacs.org/doc/current/tcl-doc.html#comments">View comments on this page at openacs.org</a></center></body></html>
Index: openacs-4/packages/acs-core-docs/www/templates.html
===================================================================
RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/templates.html,v
diff -u -r1.42 -r1.42.4.1
--- openacs-4/packages/acs-core-docs/www/templates.html	17 Jul 2006 05:38:32 -0000	1.42
+++ openacs-4/packages/acs-core-docs/www/templates.html	3 Feb 2008 12:07:41 -0000	1.42.4.1
@@ -1,7 +1,8 @@
-<html><head><meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"><title>Using Templates in OpenACS</title><meta name="generator" content="DocBook XSL Stylesheets V1.70.1"><link rel="home" href="index.html" title="OpenACS Core Documentation"><link rel="up" href="dev-guide.html" title="Chapter�11.�Development Reference"><link rel="previous" href="db-api.html" title="The OpenACS Database Access API"><link rel="next" href="permissions.html" title="Groups, Context, Permissions"><link rel="stylesheet" href="openacs.css" type="text/css"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><a href="http://openacs.org"><img src="/doc/images/alex.jpg" border="0" alt="Alex logo"></a><table width="100%" summary="Navigation header" border="0"><tr><td width="20%" align="left"><a accesskey="p" href="db-api.html">Prev</a> </td><th width="60%" align="center">Chapter�11.�Development Reference</th><td width="20%" align="right"> <a accesskey="n" href="permissions.html">Next</a></td></tr></table><hr></div><div class="sect1" lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="templates"></a>Using Templates in OpenACS</h2></div></div></div><div class="authorblurb"><p>By Pete Su</p>
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html><head><meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"><title>Using Templates in OpenACS</title><meta name="generator" content="DocBook XSL Stylesheets V1.60.1"><link rel="home" href="index.html" title="OpenACS Core Documentation"><link rel="up" href="dev-guide.html" title="Chapter�11.�Development Reference"><link rel="previous" href="db-api.html" title="The OpenACS Database Access API"><link rel="next" href="permissions.html" title="Groups, Context, Permissions"><link rel="stylesheet" href="openacs.css" type="text/css"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><a href="http://openacs.org"><img src="/doc/images/alex.jpg" border="0" alt="Alex logo"></a><table width="100%" summary="Navigation header" border="0"><tr><td width="20%" align="left"><a accesskey="p" href="db-api.html">Prev</a> </td><th width="60%" align="center">Chapter�11.�Development Reference</th><td width="20%" align="right"> <a accesskey="n" href="permissions.html">Next</a></td></tr></table><hr></div><div class="sect1" lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="templates"></a>Using Templates in OpenACS</h2></div></div><div></div></div><div class="authorblurb"><p>By Pete Su</p>
           OpenACS docs are written by the named authors, and may be edited
           by OpenACS documentation staff.
-        </div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="templates-overview"></a>Overview</h3></div></div></div><p>
+        </div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="templates-overview"></a>Overview</h3></div></div><div></div></div><p>
 The OpenACS Template System (ATS) is designed to allow developers to
 cleanly separate <span class="emphasis"><em>application logic</em></span> from <span class="emphasis"><em>display
 logic</em></span>. The intent is to have all of the logic related to
@@ -12,12 +13,12 @@
 graphic designers to work more independently.
 </p><p>
 In ATS, you write two files for every user-visible page in the
-system. One is a plain <code class="computeroutput">.tcl</code> file and the other is a
-special <code class="computeroutput">.adp</code> file. The <code class="computeroutput">.tcl</code> file runs a
+system. One is a plain <tt class="computeroutput">.tcl</tt> file and the other is a
+special <tt class="computeroutput">.adp</tt> file. The <tt class="computeroutput">.tcl</tt> file runs a
 script that sets up a set of name/value bindings that we call <span class="emphasis"><em>data
 sources</em></span>. These <a href="/doc/acs-templating/guide/data.html" target="_top">data sources</a> are generally the results of Tcl and/or database queries
 or some combination thereof. The template system automatically makes
-them available to the <code class="computeroutput">.adp</code> file, or the display part of
+them available to the <tt class="computeroutput">.adp</tt> file, or the display part of
 the template, which is written in a combination of HTML, special
 template related tags, and data source substitutions.
 </p><p>
@@ -28,7 +29,7 @@
 actually add notes to the database, how to provide a separate instance
 of the Notes application to every user and how to design appropriate
 access control policies for the system.
-</p></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="templates-entering-notes"></a>Entering Notes</h3></div></div></div><p>
+</p></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="templates-entering-notes"></a>Entering Notes</h3></div></div><div></div></div><p>
 In order for the Notes application to be useful, we have to allow
 users to enter data into the database. Typically, this takes two
 pages: one that displays a form for data entry, and another page that
@@ -38,10 +39,10 @@
 the system since we won't be displaying much data, but we'll cover
 more on that end later.
 </p><p>
-The <code class="computeroutput">.tcl</code> file for the form entry template is pretty
+The <tt class="computeroutput">.tcl</tt> file for the form entry template is pretty
 simple. Here, the only thing we need from the database is a new ID for
 the note object to be inserted. Open up a file called
-<code class="computeroutput">note-add.tcl</code> in the <code class="computeroutput">ROOT/packages/notes/www</code>
+<tt class="computeroutput">note-add.tcl</tt> in the <tt class="computeroutput">ROOT/packages/notes/www</tt>
 directory, and put the following code in it:
 </p><pre class="programlisting">
 
@@ -68,74 +69,74 @@
     where forum_id = :user_id
 }
 
-set page_title "Add a note for $user_name"
-set submit_label "Add"
-set target "note-add-2"
+set page_title &quot;Add a note for $user_name&quot;
+set submit_label &quot;Add&quot;
+set target &quot;note-add-2&quot;
 set note_id [db_nextval acs_object_id_seq]
 
-ad_return_template "note-add"
+ad_return_template &quot;note-add&quot;
 
 </pre><p>
 Some things to note about this code:
 </p><div class="itemizedlist"><ul type="disc"><li><p>
 The procedure <a href="tcl-doc.html#tcl-doc-ad-page-contract" title="ad_page_contract">ad_page_contract</a> is
-always the first thing a <code class="computeroutput">.tcl</code> file calls, if it's under
+always the first thing a <tt class="computeroutput">.tcl</tt> file calls, if it's under
 the www/ directory (i.e. not a Tcl library file). It does validation
 of input values from the HTTP request (i.e. form variables) and in
-this case, the <code class="computeroutput">-properties</code> clause is used to set up the
-data sources that we will ship over to the <code class="computeroutput">.adp</code> part of
+this case, the <tt class="computeroutput">-properties</tt> clause is used to set up the
+data sources that we will ship over to the <tt class="computeroutput">.adp</tt> part of
 the page. In this case, we only use the simplest possible kind of data
-source, called a <code class="computeroutput">onevalue</code>, which hold just a single
+source, called a <tt class="computeroutput">onevalue</tt>, which hold just a single
 string value.  Later on, we'll see how to use more powerful kinds of
 data sources for representing multiple rows from an SQL query.  You
 also include overall documentation for the page in the contract, and
 OpenACS has automatic tools that extract this documentation and make it
 browsable.
 </p></li><li><p>
-After being declared in the <code class="computeroutput">ad_page_contract</code>, each
+After being declared in the <tt class="computeroutput">ad_page_contract</tt>, each
 property is just a simple Tcl variable. The template system passes the
-final value of the variable to the <code class="computeroutput">.adp</code> template when the
-<code class="computeroutput">.tcl</code> file is processed.
+final value of the variable to the <tt class="computeroutput">.adp</tt> template when the
+<tt class="computeroutput">.tcl</tt> file is processed.
 </p></li><li><p>
-The call <code class="computeroutput">ad_return_template</code> tells the template system
-what <code class="computeroutput">.adp</code> template page to fetch to display the
+The call <tt class="computeroutput">ad_return_template</tt> tells the template system
+what <tt class="computeroutput">.adp</tt> template page to fetch to display the
 properties that have been processed. By default, the template system
-will look for a file by the same name as the <code class="computeroutput">.tcl</code> file
-that just ran, but with an <code class="computeroutput">.adp</code> extension.
+will look for a file by the same name as the <tt class="computeroutput">.tcl</tt> file
+that just ran, but with an <tt class="computeroutput">.adp</tt> extension.
 </p></li></ul></div><p>
-Next we write the corresponding <code class="computeroutput">.adp</code> page. This page
+Next we write the corresponding <tt class="computeroutput">.adp</tt> page. This page
 outputs HTML for the form, and also contains placeholders whose values
-are substituted in from the properties set up by the <code class="computeroutput">.tcl</code>
-file.  Create a file called <code class="computeroutput">note-add.adp</code> in your editor,
+are substituted in from the properties set up by the <tt class="computeroutput">.tcl</tt>
+file.  Create a file called <tt class="computeroutput">note-add.adp</tt> in your editor,
 and insert this text:
 </p><pre class="programlisting">
 
-&lt;master src="master"&gt;
-&lt;property name="title"&gt;@page_title@&lt;/property&gt;
-&lt;property name="context_bar"&gt;@context_bar@&lt;/property&gt;
+&lt;master src=&quot;master&quot;&gt;
+&lt;property name=&quot;title&quot;&gt;@page_title@&lt;/property&gt;
+&lt;property name=&quot;context_bar&quot;&gt;@context_bar@&lt;/property&gt;
 
 &lt;form action=@target@&gt;
 &lt;p&gt;Title: 
-&lt;input type="text" name="title" value=""&gt;
+&lt;input type=&quot;text&quot; name=&quot;title&quot; value=&quot;&quot;&gt;
 &lt;/p&gt;
 &lt;p&gt;Body: 
-&lt;input type="text" name="title" value=""&gt;
+&lt;input type=&quot;text&quot; name=&quot;title&quot; value=&quot;&quot;&gt;
 &lt;/p&gt;
 &lt;p&gt;
 &lt;center&gt;
-&lt;input type=submit value="@submit_label@"&gt;
+&lt;input type=submit value=&quot;@submit_label@&quot;&gt;
 &lt;/center&gt;
 &lt;/p&gt;
 &lt;/form&gt;
 
 </pre><p>
 The main point to note here is: when you want to substitute a value
-into a page, you put the name of the data source between two "@"
+into a page, you put the name of the data source between two &quot;@&quot;
 characters. Another point to note is the use of a master template:
 Master templates allow you do centralize display code that is used
 throughout an application in a single file. In this case, we intend to
 have a master template that does the standard page headers and footers
-for us - create the <code class="computeroutput">master.adp</code> file, which looks like
+for us - create the <tt class="computeroutput">master.adp</tt> file, which looks like
 this:
 </p><pre class="programlisting">
 
@@ -144,29 +145,29 @@
 &lt;%= [eval ad_context_bar $context_bar] %&gt; 
 &lt;hr&gt; 
 &lt;slave&gt; 
-&lt;br clear="all"&gt; 
+&lt;br clear=&quot;all&quot;&gt; 
 &lt;%= [ad_footer] %&gt;
 
 </pre><p>
 The main subtlety in this code is the inline Tcl code for running
 procs to build the header, footer, context bar, etc.  Also, note the
 property substitutions that happen here, the values of which are set
-up in the <code class="computeroutput">&lt;property&gt;</code> tags in the slave page.  
+up in the <tt class="computeroutput">&lt;property&gt;</tt> tags in the slave page.  
 </p><p>
 After putting all these files into
-<code class="computeroutput">ROOT/packages/notes/www</code>, you should be able to go to
-<code class="computeroutput">/notes/</code> URL for your server and see the input form.
-</p></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="templates-summary"></a>Summary</h3></div></div></div><p>
+<tt class="computeroutput">ROOT/packages/notes/www</tt>, you should be able to go to
+<tt class="computeroutput">/notes/</tt> URL for your server and see the input form.
+</p></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="templates-summary"></a>Summary</h3></div></div><div></div></div><p>
 Templates separate application logic from display logic by requiring
 the developer to write pages in two stages, one file for database
 queries and application logic, and another for display. In OpenACS, the
-logic part of the page is just a <code class="computeroutput">.tcl</code> that sets up
+logic part of the page is just a <tt class="computeroutput">.tcl</tt> that sets up
 <span class="emphasis"><em>data sources</em></span> that are used by the display part of the page. The
-display part of the page is an <code class="computeroutput">.adp</code> file with some
+display part of the page is an <tt class="computeroutput">.adp</tt> file with some
 special tags and notations for dealing with display logic and
 inserting properties into the text of the page. Later on we'll get
 into templates more deeply, and show how to use database queries as
 data sources.
-</p></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="templates-documentation"></a>Documentation</h3></div></div></div><p>
+</p></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="templates-documentation"></a>Documentation</h3></div></div><div></div></div><p>
 <a href="/doc/acs-templating/" target="_top">Templating system documentation</a>
 </p><div class="cvstag">($Id$)</div></div></div><div class="navfooter"><hr><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="db-api.html">Prev</a> </td><td width="20%" align="center"><a accesskey="h" href="index.html">Home</a></td><td width="40%" align="right"> <a accesskey="n" href="permissions.html">Next</a></td></tr><tr><td width="40%" align="left">The OpenACS Database Access API </td><td width="20%" align="center"><a accesskey="u" href="dev-guide.html">Up</a></td><td width="40%" align="right"> Groups, Context, Permissions</td></tr></table><hr><address><a href="mailto:docs@openacs.org">docs@openacs.org</a></address></div><a name="comments"></a><center><a href="http://openacs.org/doc/current/templates.html#comments">View comments on this page at openacs.org</a></center></body></html>
Index: openacs-4/packages/acs-core-docs/www/tutorial-admin-pages.html
===================================================================
RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/tutorial-admin-pages.html,v
diff -u -r1.8 -r1.8.4.1
--- openacs-4/packages/acs-core-docs/www/tutorial-admin-pages.html	17 Jul 2006 05:38:32 -0000	1.8
+++ openacs-4/packages/acs-core-docs/www/tutorial-admin-pages.html	3 Feb 2008 12:07:41 -0000	1.8.4.1
@@ -1,4 +1,5 @@
-<html><head><meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"><title>Admin Pages</title><meta name="generator" content="DocBook XSL Stylesheets V1.70.1"><link rel="home" href="index.html" title="OpenACS Core Documentation"><link rel="up" href="tutorial-advanced.html" title="Chapter�10.�Advanced Topics"><link rel="previous" href="tutorial-comments.html" title="Adding Comments"><link rel="next" href="tutorial-categories.html" title="Categories"><link rel="stylesheet" href="openacs.css" type="text/css"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><a href="http://openacs.org"><img src="/doc/images/alex.jpg" border="0" alt="Alex logo"></a><table width="100%" summary="Navigation header" border="0"><tr><td width="20%" align="left"><a accesskey="p" href="tutorial-comments.html">Prev</a> </td><th width="60%" align="center">Chapter�10.�Advanced Topics</th><td width="20%" align="right"> <a accesskey="n" href="tutorial-categories.html">Next</a></td></tr></table><hr></div><div class="sect1" lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="tutorial-admin-pages"></a>Admin Pages</h2></div></div></div><p>
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html><head><meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"><title>Admin Pages</title><meta name="generator" content="DocBook XSL Stylesheets V1.60.1"><link rel="home" href="index.html" title="OpenACS Core Documentation"><link rel="up" href="tutorial-advanced.html" title="Chapter�10.�Advanced Topics"><link rel="previous" href="tutorial-comments.html" title="Adding Comments"><link rel="next" href="tutorial-categories.html" title="Categories"><link rel="stylesheet" href="openacs.css" type="text/css"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><a href="http://openacs.org"><img src="/doc/images/alex.jpg" border="0" alt="Alex logo"></a><table width="100%" summary="Navigation header" border="0"><tr><td width="20%" align="left"><a accesskey="p" href="tutorial-comments.html">Prev</a> </td><th width="60%" align="center">Chapter�10.�Advanced Topics</th><td width="20%" align="right"> <a accesskey="n" href="tutorial-categories.html">Next</a></td></tr></table><hr></div><div class="sect1" lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="tutorial-admin-pages"></a>Admin Pages</h2></div></div><div></div></div><p>
      There are at least two flavors of admin user interface:
      </p><div class="itemizedlist"><ul type="disc"><li><p>Admins use same pages as all other users, except
        that they are offered admin links and buttons where appropriate.
@@ -9,24 +10,24 @@
        access to data that users aren't interested in or aren't allowed
        to see you will need dedicated admin pages.  The conventional
        place to put those dedicated admin pages is in the
- <code class="computeroutput">/var/lib/aolserver/<span class="replaceable"><span class="replaceable">$OPENACS_SERVICE_NAME</span></span>/packages/myfirstpackage/www/admin</code>
+ <tt class="computeroutput">/var/lib/aolserver/<span class="replaceable"><span class="replaceable">$OPENACS_SERVICE_NAME</span></span>/packages/myfirstpackage/www/admin</tt>
  directory.
-      </p><pre class="screen">[$OPENACS_SERVICE_NAME www]$ <strong class="userinput"><code>mkdir admin</code></strong></pre><pre class="screen">[$OPENACS_SERVICE_NAME www]$ <strong class="userinput"><code>cd admin</code></strong></pre><p>
+      </p><pre class="screen">[$OPENACS_SERVICE_NAME www]$ <b class="userinput"><tt>mkdir admin</tt></b></pre><pre class="screen">[$OPENACS_SERVICE_NAME www]$ <b class="userinput"><tt>cd admin</tt></b></pre><p>
       Even if your application doesn't need any admin pages of its own you will
       usually need at least one simple page with a bunch of links to existing
       administration UI such as Category Management or standard Parameters UI.
       Adding the link to Category Management is described in the section on
       categories.  The listing below adds a link to the Parameters UI of our
       package.
-      </p><pre class="screen">[$OPENACS_SERVICE_NAME admin]$ <strong class="userinput"><code>vi index.adp</code></strong></pre><pre class="programlisting">
+      </p><pre class="screen">[$OPENACS_SERVICE_NAME admin]$ <b class="userinput"><tt>vi index.adp</tt></b></pre><pre class="programlisting">
 &lt;master&gt;
-&lt;property name="title"&gt;@title;noquote@&lt;/property&gt;
-&lt;property name="context"&gt;@context;noquote@&lt;/property&gt;
+&lt;property name=&quot;title&quot;&gt;@title;noquote@&lt;/property&gt;
+&lt;property name=&quot;context&quot;&gt;@context;noquote@&lt;/property&gt;
 
-&lt;ul class="action-links"&gt;
-  &lt;li&gt;&lt;a href="@parameters_url@" title="Set parameters" class="action_link"&gt;Set parameters&lt;/a&gt;&lt;/li&gt;
+&lt;ul class=&quot;action-links&quot;&gt;
+  &lt;li&gt;&lt;a href=&quot;@parameters_url@&quot; title=&quot;Set parameters&quot; class=&quot;action_link&quot;&gt;Set parameters&lt;/a&gt;&lt;/li&gt;
 &lt;/ul&gt;
-</pre><pre class="screen">[$OPENACS_SERVICE_NAME admin]$ <strong class="userinput"><code>vi index.tcl</code></strong></pre><pre class="programlisting">
+</pre><pre class="screen">[$OPENACS_SERVICE_NAME admin]$ <b class="userinput"><tt>vi index.tcl</tt></b></pre><pre class="programlisting">
 ad_page_contract {} {
 } -properties {
     context_bar
@@ -40,25 +41,25 @@
 
 set context [list]
 
-set title "Administration"
+set title &quot;Administration&quot;
 
-set parameters_url [export_vars -base "/shared/parameters" {
+set parameters_url [export_vars -base &quot;/shared/parameters&quot; {
   package_id { return_url [ad_return_url] }
 }]
 
 </pre><p>
 Now that you have the first admin page it would be nice to have a link to it
 somewhere in the system so that admins don't have to type in the
-<code class="computeroutput">/admin</code> every time they need to reach it.  You
+<tt class="computeroutput">/admin</tt> every time they need to reach it.  You
 could put a static link to the toplevel
-<code class="computeroutput">index.adp</code> but that might be distracting for
+<tt class="computeroutput">index.adp</tt> but that might be distracting for
 people who are not admins.  Besides, some people consider it impolite to first
-offer a link and then display a nasty "You don't have permission to access this
-page" message.
+offer a link and then display a nasty &quot;You don't have permission to access this
+page&quot; message.
 </p><p>
 In order to display the link to the admin page only to users that have admin
 privileges add the following code near the top of
-<code class="computeroutput">/var/lib/aolserver/<span class="replaceable"><span class="replaceable">$OPENACS_SERVICE_NAME</span></span>/packages/myfirstpackage/www/admin/index.tcl</code>:
+<tt class="computeroutput">/var/lib/aolserver/<span class="replaceable"><span class="replaceable">$OPENACS_SERVICE_NAME</span></span>/packages/myfirstpackage/www/admin/index.tcl</tt>:
 </p><pre class="programlisting">
 
 set package_id [ad_conn package_id]
@@ -67,14 +68,14 @@
   -privilege admin -party_id [ad_conn untrusted_user_id]]
 
 if { $admin_p } {
-    set admin_url "admin"
+    set admin_url &quot;admin&quot;
     set admin_title Administration
 }
 </pre><p>
 In 
-<code class="computeroutput">/var/lib/aolserver/<span class="replaceable"><span class="replaceable">$OPENACS_SERVICE_NAME</span></span>/packages/myfirstpackage/www/admin/index.adp</code> put:
+<tt class="computeroutput">/var/lib/aolserver/<span class="replaceable"><span class="replaceable">$OPENACS_SERVICE_NAME</span></span>/packages/myfirstpackage/www/admin/index.adp</tt> put:
 </p><pre class="programlisting">
 &lt;if @admin_p@ ne nil&gt;
-  &lt;a href="@admin_url@"&gt;@admin_title@&lt;/a&gt;
+  &lt;a href=&quot;@admin_url@&quot;&gt;@admin_title@&lt;/a&gt;
 &lt;/if&gt;
 </pre></li></ul></div></div><div class="navfooter"><hr><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="tutorial-comments.html">Prev</a> </td><td width="20%" align="center"><a accesskey="h" href="index.html">Home</a></td><td width="40%" align="right"> <a accesskey="n" href="tutorial-categories.html">Next</a></td></tr><tr><td width="40%" align="left">Adding Comments </td><td width="20%" align="center"><a accesskey="u" href="tutorial-advanced.html">Up</a></td><td width="40%" align="right"> Categories</td></tr></table><hr><address><a href="mailto:docs@openacs.org">docs@openacs.org</a></address></div><a name="comments"></a><center><a href="http://openacs.org/doc/current/tutorial-admin-pages.html#comments">View comments on this page at openacs.org</a></center></body></html>
Index: openacs-4/packages/acs-core-docs/www/tutorial-advanced.html
===================================================================
RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/tutorial-advanced.html,v
diff -u -r1.29 -r1.29.4.1
--- openacs-4/packages/acs-core-docs/www/tutorial-advanced.html	17 Jul 2006 05:38:32 -0000	1.29
+++ openacs-4/packages/acs-core-docs/www/tutorial-advanced.html	3 Feb 2008 12:07:41 -0000	1.29.4.1
@@ -1,4 +1,5 @@
-<html><head><meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"><title>Chapter�10.�Advanced Topics</title><meta name="generator" content="DocBook XSL Stylesheets V1.70.1"><link rel="home" href="index.html" title="OpenACS Core Documentation"><link rel="up" href="acs-package-dev.html" title="Part�III.�For OpenACS Package Developers"><link rel="previous" href="tutorial-debug.html" title="Debugging and Automated Testing"><link rel="next" href="tutorial-specs.html" title="Write the Requirements and Design Specs"><link rel="stylesheet" href="openacs.css" type="text/css"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><a href="http://openacs.org"><img src="/doc/images/alex.jpg" border="0" alt="Alex logo"></a><table width="100%" summary="Navigation header" border="0"><tr><td width="20%" align="left"><a accesskey="p" href="tutorial-debug.html">Prev</a> </td><th width="60%" align="center">Part�III.�For OpenACS Package Developers</th><td width="20%" align="right"> <a accesskey="n" href="tutorial-specs.html">Next</a></td></tr></table><hr></div><div class="chapter" lang="en"><div class="titlepage"><div><div><h2 class="title"><a name="tutorial-advanced"></a>Chapter�10.�Advanced Topics</h2></div></div></div><div class="toc"><p><b>Table of Contents</b></p><dl><dt><span class="sect1"><a href="tutorial-specs.html">Write the Requirements and Design Specs</a></span></dt><dt><span class="sect1"><a href="tutorial-cvs.html">Add the new package to CVS</a></span></dt><dt><span class="sect1"><a href="tutorial-etp-templates.html">OpenACS Edit This Page Templates</a></span></dt><dt><span class="sect1"><a href="tutorial-comments.html">Adding Comments</a></span></dt><dt><span class="sect1"><a href="tutorial-admin-pages.html">Admin Pages</a></span></dt><dt><span class="sect1"><a href="tutorial-categories.html">Categories</a></span></dt><dt><span class="sect1"><a href="profile-code.html">Profile your code</a></span></dt><dt><span class="sect1"><a href="tutorial-distribute.html">Prepare the package for distribution.</a></span></dt><dt><span class="sect1"><a href="tutorial-upgrades.html">Distributing upgrades of your package</a></span></dt><dt><span class="sect1"><a href="tutorial-notifications.html">Notifications</a></span></dt><dt><span class="sect1"><a href="tutorial-hierarchical.html">Hierarchical data</a></span></dt><dt><span class="sect1"><a href="tutorial-vuh.html">Using .vuh files for pretty urls</a></span></dt><dt><span class="sect1"><a href="tutorial-css-layout.html">Laying out a page with CSS instead of tables</a></span></dt><dt><span class="sect1"><a href="tutorial-html-email.html">Sending HTML email from your application</a></span></dt><dt><span class="sect1"><a href="tutorial-caching.html">Basic Caching</a></span></dt><dt><span class="sect1"><a href="tutorial-schedule-procs.html">Scheduled Procedures</a></span></dt><dt><span class="sect1"><a href="tutorial-wysiwyg-editor.html">Enabling WYSIWYG</a></span></dt><dt><span class="sect1"><a href="tutorial-parameters.html">Adding in parameters for your package</a></span></dt><dt><span class="sect1"><a href="tutorial-upgrade-scripts.html">Writing upgrade scripts</a></span></dt><dt><span class="sect1"><a href="tutorial-second-database.html">Connect to a second database</a></span></dt><dt><span class="sect1"><a href="tutorial-future-topics.html">Future Topics</a></span></dt></dl></div><div class="authorblurb"><p>by <a href="mailto:joel@aufrecht.org" target="_top">Joel Aufrecht</a></p>
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html><head><meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"><title>Chapter�10.�Advanced Topics</title><meta name="generator" content="DocBook XSL Stylesheets V1.60.1"><link rel="home" href="index.html" title="OpenACS Core Documentation"><link rel="up" href="acs-package-dev.html" title="Part�III.�For OpenACS Package Developers"><link rel="previous" href="tutorial-debug.html" title="Debugging and Automated Testing"><link rel="next" href="tutorial-specs.html" title="Write the Requirements and Design Specs"><link rel="stylesheet" href="openacs.css" type="text/css"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><a href="http://openacs.org"><img src="/doc/images/alex.jpg" border="0" alt="Alex logo"></a><table width="100%" summary="Navigation header" border="0"><tr><td width="20%" align="left"><a accesskey="p" href="tutorial-debug.html">Prev</a> </td><th width="60%" align="center">Part�III.�For OpenACS Package Developers</th><td width="20%" align="right"> <a accesskey="n" href="tutorial-specs.html">Next</a></td></tr></table><hr></div><div class="chapter" lang="en"><div class="titlepage"><div><div><h2 class="title"><a name="tutorial-advanced"></a>Chapter�10.�Advanced Topics</h2></div></div><div></div></div><div class="toc"><p><b>Table of Contents</b></p><dl><dt><a href="tutorial-specs.html">Write the Requirements and Design Specs</a></dt><dt><a href="tutorial-cvs.html">Add the new package to CVS</a></dt><dt><a href="tutorial-etp-templates.html">OpenACS Edit This Page Templates</a></dt><dt><a href="tutorial-comments.html">Adding Comments</a></dt><dt><a href="tutorial-admin-pages.html">Admin Pages</a></dt><dt><a href="tutorial-categories.html">Categories</a></dt><dt><a href="profile-code.html">Profile your code</a></dt><dt><a href="tutorial-distribute.html">Prepare the package for distribution.</a></dt><dt><a href="tutorial-upgrades.html">Distributing upgrades of your package</a></dt><dt><a href="tutorial-notifications.html">Notifications</a></dt><dt><a href="tutorial-hierarchical.html">Hierarchical data</a></dt><dt><a href="tutorial-vuh.html">Using .vuh files for pretty urls</a></dt><dt><a href="tutorial-css-layout.html">Laying out a page with CSS instead of tables</a></dt><dt><a href="tutorial-html-email.html">Sending HTML email from your application</a></dt><dt><a href="tutorial-caching.html">Basic Caching</a></dt><dt><a href="tutorial-schedule-procs.html">Scheduled Procedures</a></dt><dt><a href="tutorial-wysiwyg-editor.html">Enabling WYSIWYG</a></dt><dt><a href="tutorial-parameters.html">Adding in parameters for your package</a></dt><dt><a href="tutorial-upgrade-scripts.html">Writing upgrade scripts</a></dt><dt><a href="tutorial-second-database.html">Connect to a second database</a></dt><dt><a href="tutorial-future-topics.html">Future Topics</a></dt></dl></div><div class="authorblurb"><p>by <a href="mailto:joel@aufrecht.org" target="_top">Joel Aufrecht</a></p>
           OpenACS docs are written by the named authors, and may be edited
           by OpenACS documentation staff.
         </div><p>This tutorial covers topics which are not essential to
Index: openacs-4/packages/acs-core-docs/www/tutorial-caching.html
===================================================================
RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/tutorial-caching.html,v
diff -u -r1.5 -r1.5.4.1
--- openacs-4/packages/acs-core-docs/www/tutorial-caching.html	17 Jul 2006 05:38:32 -0000	1.5
+++ openacs-4/packages/acs-core-docs/www/tutorial-caching.html	3 Feb 2008 12:07:41 -0000	1.5.4.1
@@ -1,7 +1,8 @@
-<html><head><meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"><title>Basic Caching</title><meta name="generator" content="DocBook XSL Stylesheets V1.70.1"><link rel="home" href="index.html" title="OpenACS Core Documentation"><link rel="up" href="tutorial-advanced.html" title="Chapter�10.�Advanced Topics"><link rel="previous" href="tutorial-html-email.html" title="Sending HTML email from your application"><link rel="next" href="tutorial-schedule-procs.html" title="Scheduled Procedures"><link rel="stylesheet" href="openacs.css" type="text/css"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><a href="http://openacs.org"><img src="/doc/images/alex.jpg" border="0" alt="Alex logo"></a><table width="100%" summary="Navigation header" border="0"><tr><td width="20%" align="left"><a accesskey="p" href="tutorial-html-email.html">Prev</a> </td><th width="60%" align="center">Chapter�10.�Advanced Topics</th><td width="20%" align="right"> <a accesskey="n" href="tutorial-schedule-procs.html">Next</a></td></tr></table><hr></div><div class="sect1" lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="tutorial-caching"></a>Basic Caching</h2></div></div></div><div class="authorblurb"><p>Based on <a href="http://openacs.org/forums/message-view?message_id=157448" target="_top">a post by Dave Bauer</a>.</p>
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html><head><meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"><title>Basic Caching</title><meta name="generator" content="DocBook XSL Stylesheets V1.60.1"><link rel="home" href="index.html" title="OpenACS Core Documentation"><link rel="up" href="tutorial-advanced.html" title="Chapter�10.�Advanced Topics"><link rel="previous" href="tutorial-html-email.html" title="Sending HTML email from your application"><link rel="next" href="tutorial-schedule-procs.html" title="Scheduled Procedures"><link rel="stylesheet" href="openacs.css" type="text/css"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><a href="http://openacs.org"><img src="/doc/images/alex.jpg" border="0" alt="Alex logo"></a><table width="100%" summary="Navigation header" border="0"><tr><td width="20%" align="left"><a accesskey="p" href="tutorial-html-email.html">Prev</a> </td><th width="60%" align="center">Chapter�10.�Advanced Topics</th><td width="20%" align="right"> <a accesskey="n" href="tutorial-schedule-procs.html">Next</a></td></tr></table><hr></div><div class="sect1" lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="tutorial-caching"></a>Basic Caching</h2></div></div><div></div></div><div class="authorblurb"><p>Based on <a href="http://openacs.org/forums/message-view?message_id=157448" target="_top">a post by Dave Bauer</a>.</p>
           OpenACS docs are written by the named authors, and may be edited
           by OpenACS documentation staff.
-        </div><div class="orderedlist"><ol type="1"><li><p>Implement your proc as <code class="computeroutput">my_proc_not_cached</code></p></li><li><p>Create a version of your proc called <code class="computeroutput">my_proc</code> which wraps the non-cached version in the caching mechanism.  In this example, my_proc_not_cached takes one argument, -foo, so the wrapper passes that on.  The wrapper also uses the list command, to ensure that the arguments get passed correctly and to prevent commands passed in as arguments from being executed.</p><pre class="programlisting">ad_proc my_proc {-foo} {
+        </div><div class="orderedlist"><ol type="1"><li><p>Implement your proc as <tt class="computeroutput">my_proc_not_cached</tt></p></li><li><p>Create a version of your proc called <tt class="computeroutput">my_proc</tt> which wraps the non-cached version in the caching mechanism.  In this example, my_proc_not_cached takes one argument, -foo, so the wrapper passes that on.  The wrapper also uses the list command, to ensure that the arguments get passed correctly and to prevent commands passed in as arguments from being executed.</p><pre class="programlisting">ad_proc my_proc {-foo} {
         Get a cached version of my_proc.
 } {
     return [util_memoize [list my_proc_not_cached -foo $foo]]
Index: openacs-4/packages/acs-core-docs/www/tutorial-categories.html
===================================================================
RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/tutorial-categories.html,v
diff -u -r1.8 -r1.8.4.1
--- openacs-4/packages/acs-core-docs/www/tutorial-categories.html	17 Jul 2006 05:38:32 -0000	1.8
+++ openacs-4/packages/acs-core-docs/www/tutorial-categories.html	3 Feb 2008 12:07:41 -0000	1.8.4.1
@@ -1,12 +1,13 @@
-<html><head><meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"><title>Categories</title><meta name="generator" content="DocBook XSL Stylesheets V1.70.1"><link rel="home" href="index.html" title="OpenACS Core Documentation"><link rel="up" href="tutorial-advanced.html" title="Chapter�10.�Advanced Topics"><link rel="previous" href="tutorial-admin-pages.html" title="Admin Pages"><link rel="next" href="profile-code.html" title="Profile your code"><link rel="stylesheet" href="openacs.css" type="text/css"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><a href="http://openacs.org"><img src="/doc/images/alex.jpg" border="0" alt="Alex logo"></a><table width="100%" summary="Navigation header" border="0"><tr><td width="20%" align="left"><a accesskey="p" href="tutorial-admin-pages.html">Prev</a> </td><th width="60%" align="center">Chapter�10.�Advanced Topics</th><td width="20%" align="right"> <a accesskey="n" href="profile-code.html">Next</a></td></tr></table><hr></div><div class="sect1" lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="tutorial-categories"></a>Categories</h2></div></div></div><div class="authorblurb"><p>extended by <a href="mailto:nima.mazloumi@gmx.de" target="_top">Nima Mazloumi</a></p>
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html><head><meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"><title>Categories</title><meta name="generator" content="DocBook XSL Stylesheets V1.60.1"><link rel="home" href="index.html" title="OpenACS Core Documentation"><link rel="up" href="tutorial-advanced.html" title="Chapter�10.�Advanced Topics"><link rel="previous" href="tutorial-admin-pages.html" title="Admin Pages"><link rel="next" href="profile-code.html" title="Profile your code"><link rel="stylesheet" href="openacs.css" type="text/css"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><a href="http://openacs.org"><img src="/doc/images/alex.jpg" border="0" alt="Alex logo"></a><table width="100%" summary="Navigation header" border="0"><tr><td width="20%" align="left"><a accesskey="p" href="tutorial-admin-pages.html">Prev</a> </td><th width="60%" align="center">Chapter�10.�Advanced Topics</th><td width="20%" align="right"> <a accesskey="n" href="profile-code.html">Next</a></td></tr></table><hr></div><div class="sect1" lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="tutorial-categories"></a>Categories</h2></div></div><div></div></div><div class="authorblurb"><p>extended by <a href="mailto:nima.mazloumi@gmx.de" target="_top">Nima Mazloumi</a></p>
           OpenACS docs are written by the named authors, and may be edited
           by OpenACS documentation staff.
         </div><p>You can associate any ACS Object with one or more categories.
     In this tutorial we'll show how to equip your application with user
     interface to take advantage of the Categories service.
     </p><p>
     We'll start by installing the Categories service.  Go to
-    <code class="computeroutput">/acs/admin</code> and install it.  This step
+    <tt class="computeroutput">/acs/admin</tt> and install it.  This step
     won't be necessary for the users of your applications because you'll create
     a dependency with the Package Manager which will take care that the
     Categories service always gets installed when your application gets
@@ -28,39 +29,39 @@
           </p><p>
           The way to achieve this is is to provide a link
           to the Category Management pages.  Add the following snippet to your
-            <code class="computeroutput">/var/lib/aolserver/<span class="replaceable"><span class="replaceable">$OPENACS_SERVICE_NAME</span></span>/packages/myfirstpackage/www/admin/index.tcl</code>
+            <tt class="computeroutput">/var/lib/aolserver/<span class="replaceable"><span class="replaceable">$OPENACS_SERVICE_NAME</span></span>/packages/myfirstpackage/www/admin/index.tcl</tt>
           file:
           </p><pre class="programlisting">
-		  set category_map_url [export_vars -base "[site_node::get_package_url -package_key categories]cadmin/one-object" { { object_id $package_id } }]
+		  set category_map_url [export_vars -base &quot;[site_node::get_package_url -package_key categories]cadmin/one-object&quot; { { object_id $package_id } }]
           </pre><p>
           and the following snippet to your
-            <code class="computeroutput">/var/lib/aolserver/<span class="replaceable"><span class="replaceable">$OPENACS_SERVICE_NAME</span></span>/packages/myfirstpackage/www/admin/index.adp</code>
+            <tt class="computeroutput">/var/lib/aolserver/<span class="replaceable"><span class="replaceable">$OPENACS_SERVICE_NAME</span></span>/packages/myfirstpackage/www/admin/index.adp</tt>
           file:
           </p><pre class="programlisting">
-   			&lt;a href="@category_map_url@"&lt;#categories.Site_wide_Categories#&lt;/a&gt;
-          </pre><p>The link created by the above code (<code class="computeroutput">category_map_url</code>) 
+   			&lt;a href=&quot;@category_map_url@&quot;&lt;#categories.Site_wide_Categories#&lt;/a&gt;
+          </pre><p>The link created by the above code (<tt class="computeroutput">category_map_url</tt>) 
           will take the admin to the generic
           admin UI where he can pick category trees that make sense for this
           application.  The same UI also includes facilities to build and edit
           category trees.  Notice that the only parameter in this example is
-          <code class="computeroutput">package_id</code> so that category trees
+          <tt class="computeroutput">package_id</tt> so that category trees
           will be associated with the object identified by this
-          <code class="computeroutput">package_id</code>.  The categorization
+          <tt class="computeroutput">package_id</tt>.  The categorization
           service is actually more general than that: instead of
-          <code class="computeroutput">package_id</code> you could use an ID of
-          some other object that serves as a "container" in your application.
+          <tt class="computeroutput">package_id</tt> you could use an ID of
+          some other object that serves as a &quot;container&quot; in your application.
           For example, if your discussion forums application supports multiple
-          forums you would use <code class="computeroutput">forum_id</code> to
+          forums you would use <tt class="computeroutput">forum_id</tt> to
           associate category trees with just that one forum rather than the
           entire application instance.
         </p></li><li><p>
           Once the category trees have been selected users need a way
           to categorize items.  The easiest way to do this is by adding the
-          <code class="computeroutput">category</code> widget type of the
-          form builder to <code class="computeroutput">note-edit.tcl</code>.
-          To achieve this we'll need to use the <code class="computeroutput">-extend</code>
-          switch to the <code class="computeroutput">ad_form</code> command. Here's the "meat" of the
-          <code class="computeroutput">note-edit.tcl</code> page:</p><pre class="programlisting">
+          <tt class="computeroutput">category</tt> widget type of the
+          form builder to <tt class="computeroutput">note-edit.tcl</tt>.
+          To achieve this we'll need to use the <tt class="computeroutput">-extend</tt>
+          switch to the <tt class="computeroutput">ad_form</tt> command. Here's the &quot;meat&quot; of the
+          <tt class="computeroutput">note-edit.tcl</tt> page:</p><pre class="programlisting">
 			    #extend the form to support categories
 			    set package_id [ad_conn package_id]
 			    
@@ -71,117 +72,117 @@
     			} -new_data {
     				....
 					category::map_object -remove_old -object_id $item_id $category_ids
-            		db_dml insert_asc_named_object "insert into acs_named_objects (object_id, object_name, package_id) values ( :item_id, :title, :package_id)"
+            		db_dml insert_asc_named_object &quot;insert into acs_named_objects (object_id, object_name, package_id) values ( :item_id, :title, :package_id)&quot;
 	    		} -edit_data {
             		....
-        			db_dml update_asc_named_object "update acs_named_objects set object_name = :title, package_id = :package_id where object_id = :item_id"
+        			db_dml update_asc_named_object &quot;update acs_named_objects set object_name = :title, package_id = :package_id where object_id = :item_id&quot;
         			category::map_object -remove_old -object_id $item_id $category_ids
     			} -after_submit {
-        				ad_returnredirect "."
+        				ad_returnredirect &quot;.&quot;
         				ad_script_abort
     			}
-			</pre><p>While the <code class="computeroutput">category::ad_form::add_widgets</code> proc is taking 
+			</pre><p>While the <tt class="computeroutput">category::ad_form::add_widgets</tt> proc is taking 
 			care to extend your form with associated categories you need to ensure that your items are mapped 
 			to the corresponding category object yourself. Also since the categories package knows nothing from 
-			your objects you have to keep the <code class="computeroutput">acs_named_objects</code> table updated with 
+			your objects you have to keep the <tt class="computeroutput">acs_named_objects</tt> table updated with 
 			any changes taking place. We use the items title so that they are listed in the categories browser by 
 			title.</p><p>Make sure that you also delete these entries if your item is delete. Add this to 
 			your corresponding delete page:</p><pre class="programlisting">
-			db_dml delete_named_object "delete from acs_named_objects where object_id = :item_id"
-			</pre><p><code class="computeroutput">note-edit.tcl</code> requires a
-<code class="computeroutput">note_id</code> to determine which record
+			db_dml delete_named_object &quot;delete from acs_named_objects where object_id = :item_id&quot;
+			</pre><p><tt class="computeroutput">note-edit.tcl</tt> requires a
+<tt class="computeroutput">note_id</tt> to determine which record
 should be deleted.  It also looks for a confirmation variable, which
 should initially be absert.  If it is absent, we create a form to
 allow the user to confirm the deletion.  Note that in
-<code class="computeroutput">entry-edit.tcl</code> we used <code class="computeroutput">ad_form</code> to access the Form Template
+<tt class="computeroutput">entry-edit.tcl</tt> we used <tt class="computeroutput">ad_form</tt> to access the Form Template
 commands; here, we call them directly because we don't need the extra
 features of ad_form.  The form calls itself, but
 with hidden variables carrying both
-<code class="computeroutput">note_id</code> and
-<code class="computeroutput">confirm_p</code>.  If confirm_p is present,
+<tt class="computeroutput">note_id</tt> and
+<tt class="computeroutput">confirm_p</tt>.  If confirm_p is present,
 we delete the record, set redirection back to the index, and abort
-script execution.</p><p>The database commands:</p><pre class="screen">[$OPENACS_SERVICE_NAME@yourserver www]$ <strong class="userinput"><code>emacs note-delete.xql</code></strong></pre><pre class="programlisting">&lt;?xml version="1.0"?&gt;
+script execution.</p><p>The database commands:</p><pre class="screen">[$OPENACS_SERVICE_NAME@yourserver www]$ <b class="userinput"><tt>emacs note-delete.xql</tt></b></pre><pre class="programlisting">&lt;?xml version=&quot;1.0&quot;?&gt;
 &lt;queryset&gt;
-  &lt;fullquery name="do_delete"&gt;
+  &lt;fullquery name=&quot;do_delete&quot;&gt;
     &lt;querytext&gt;
       select samplenote__delete(:note_id)
     &lt;/querytext&gt;
   &lt;/fullquery&gt;
-  &lt;fullquery name="get_name"&gt;
+  &lt;fullquery name=&quot;get_name&quot;&gt;
     &lt;querytext&gt;
       select samplenote__name(:note_id)
     &lt;/querytext&gt;
   &lt;/fullquery&gt;
-&lt;/queryset&gt;</pre><p>And the adp page:</p><pre class="screen">[$OPENACS_SERVICE_NAME@yourserver www]$ <strong class="userinput"><code>emacs note-delete.adp</code></strong></pre><pre class="programlisting">&lt;master&gt;
-&lt;property name="title"&gt;@title@&lt;/property&gt;
-&lt;property name="context"&gt;{@title@}&lt;/property&gt;
+&lt;/queryset&gt;</pre><p>And the adp page:</p><pre class="screen">[$OPENACS_SERVICE_NAME@yourserver www]$ <b class="userinput"><tt>emacs note-delete.adp</tt></b></pre><pre class="programlisting">&lt;master&gt;
+&lt;property name=&quot;title&quot;&gt;@title@&lt;/property&gt;
+&lt;property name=&quot;context&quot;&gt;{@title@}&lt;/property&gt;
 &lt;h2&gt;@title@&lt;/h2&gt;
-&lt;formtemplate id="note-del-confirm"&gt;&lt;/formtemplate&gt;
+&lt;formtemplate id=&quot;note-del-confirm&quot;&gt;&lt;/formtemplate&gt;
 &lt;/form&gt;</pre><p>The ADP is very simple.  The
-<code class="computeroutput">formtemplate</code> tag outputs the HTML
+<tt class="computeroutput">formtemplate</tt> tag outputs the HTML
 form generated by the ad_form command with the matching name.  Test it
       by adding the new files in the APM and then deleting a few
       samplenotes.</p></li><li><p>We will now make categories optional on package instance level and 
  		  also add a configuration page to allow the package admin to enable/disable 
  		  categories for his package.
- 		  </p><p>Go to the APM and create a number parameter with the name "<code class="computeroutput">EnableCategoriesP</code>" 
- 		  and the default value "<code class="computeroutput">0</code>".</p><p>Add the following lines to your <code class="computeroutput">index.tcl</code>:</p><pre class="programlisting">
+ 		  </p><p>Go to the APM and create a number parameter with the name &quot;<tt class="computeroutput">EnableCategoriesP</tt>&quot; 
+ 		  and the default value &quot;<tt class="computeroutput">0</tt>&quot;.</p><p>Add the following lines to your <tt class="computeroutput">index.tcl</tt>:</p><pre class="programlisting">
           set return_url [ns_conn url]
-          set use_categories_p [parameter::get -parameter "EnableCategoriesP"]
+          set use_categories_p [parameter::get -parameter &quot;EnableCategoriesP&quot;]
           </pre><p>Change your to this:</p><pre class="programlisting">
 			&lt;a href=configure?&lt;%=[export_url_vars return_url]%&gt;&gt;Configure&lt;/a&gt;
 			&lt;if @use_categories_p@&gt;
-   			&lt;a href="@category_map_url@"&lt;#categories.Site_wide_Categories#&lt;/a&gt;
+   			&lt;a href=&quot;@category_map_url@&quot;&lt;#categories.Site_wide_Categories#&lt;/a&gt;
    			&lt;/if&gt;
           </pre><p>Now create a configure page</p><pre class="programlisting">
           	ad_page_contract {
     			This page allows an admin to change the categories usage mode.
 			} {
-    			{return_url ""}
+    			{return_url &quot;&quot;}
 			}
 
-			set title "Configure category mode"
+			set title &quot;Configure category mode&quot;
 			set context [list $title]
-			set use_categories_p [parameter::get -parameter "EnableCategoriesP"]
+			set use_categories_p [parameter::get -parameter &quot;EnableCategoriesP&quot;]
 
 			ad_form -name categories_mode -form {
     			{enabled_p:text(radio)
-        			{label "Enable Categories"}
+        			{label &quot;Enable Categories&quot;}
         			{options {{Yes 1} {No 0}}}
         			{value $use_categories_p}
     			}
     			{return_url:text(hidden) {value $return_url}}
-    			{submit:text(submit) {label "Set Mode"}}
+    			{submit:text(submit) {label &quot;Set Mode&quot;}}
 			} -on_submit {
-    			parameter::set_value  -parameter "EnableCategoriesP" -value $enabled_p
+    			parameter::set_value  -parameter &quot;EnableCategoriesP&quot; -value $enabled_p
     			if {![empty_string_p $return_url]} {
         			ns_returnredirect $return_url
     			}
 			}
            </pre><p>and add this to its corresponding ADP page</p><pre class="programlisting">
           	&lt;master&gt;
-			&lt;property name="title"&gt;@title@&lt;/property&gt;
-			&lt;property name="context"&gt;@context@&lt;/property&gt;
+			&lt;property name=&quot;title&quot;&gt;@title@&lt;/property&gt;
+			&lt;property name=&quot;context&quot;&gt;@context@&lt;/property&gt;
 
-			&lt;formtemplate id="categories_mode"&gt;&lt;/formtemplate&gt;
+			&lt;formtemplate id=&quot;categories_mode&quot;&gt;&lt;/formtemplate&gt;
 	      </pre><p>Reference this page from your admin page</p><pre class="programlisting">
 		#TCL:
 		set return_url [ad_conn url]
 
 		#ADP:
 		&lt;a href=configure?&lt;%=[export_url_vars return_url]%&gt;&gt;Configure&lt;/a&gt;
-		</pre><p>Change the <code class="computeroutput">note-edit.tcl</code>:</p><pre class="programlisting">
+		</pre><p>Change the <tt class="computeroutput">note-edit.tcl</tt>:</p><pre class="programlisting">
 		# Use Categories?
-		set use_categories_p [parameter::get -parameter "EnableCategoriesP" -default 0]
+		set use_categories_p [parameter::get -parameter &quot;EnableCategoriesP&quot; -default 0]
 		if { $use_categories_p == 1 } {
 			# YOUR NEW FORM DEFINITION
 		} else {
     		# YOUR OLD FORM DEFINITION
 		}
 	</pre></li><li><p>You can filter your notes using categories. The below example does not support multiple 
  	  filters and displays a category in a flat format.</p><p>The first step is to 
- 	  define the optional parameter <code class="computeroutput">category_id</code> for 
- 	  <code class="computeroutput">index.tcl</code>:</p><pre class="programlisting">
+ 	  define the optional parameter <tt class="computeroutput">category_id</tt> for 
+ 	  <tt class="computeroutput">index.tcl</tt>:</p><pre class="programlisting">
  	  	ad_page_contract {
   		YOUR TEXT
 		} {
@@ -190,18 +191,18 @@
 		}
  	  </pre><p>Now you have to check whether categories are enabled or not. If this is the case and a 
  	  category id is passed you need to extend your sql select query to support filtering. One 
- 	  way would be to extend the <code class="computeroutput">mfp::note::get</code> proc to 
- 	  support two more swiches <code class="computeroutput">-where_clause</code> and
- 	  <code class="computeroutput">-from_clause</code>.</p><pre class="programlisting">
- 	  	set use_categories_p [parameter::get -parameter "EnableCategoriesP" -default 0]
+ 	  way would be to extend the <tt class="computeroutput">mfp::note::get</tt> proc to 
+ 	  support two more swiches <tt class="computeroutput">-where_clause</tt> and
+ 	  <tt class="computeroutput">-from_clause</tt>.</p><pre class="programlisting">
+ 	  	set use_categories_p [parameter::get -parameter &quot;EnableCategoriesP&quot; -default 0]
 
 		if { $use_categories_p == 1 &amp;&amp; [exists_and_not_null category_id] } {
 
-			set from_clause "category_object_map com, acs_named_objects nam"
-			set_where_clause "com.object_id = qa.entry_id and
+			set from_clause &quot;category_object_map com, acs_named_objects nam&quot;
+			set_where_clause &quot;com.object_id = qa.entry_id and
 								nam.package_id = :package_id and
 								com.object_id = nam.object_id and
-								com.category_id = :category_id"
+								com.category_id = :category_id&quot;
 			
 			...
 								
@@ -223,14 +224,14 @@
     		if { ![empty_string_p $category_id] } {
         		set category_name [category::get_name $category_id]
         		if { [empty_string_p $category_name] } {
-            		ad_return_exception_page 404 "No such category" "Site-wide \
-          			Category with ID $category_id doesn't exist"
+            		ad_return_exception_page 404 &quot;No such category&quot; &quot;Site-wide \
+          			Category with ID $category_id doesn't exist&quot;
             		return
         		}
         		# Show Category in context bar
         		append context_base_url /cat/$category_id
         		lappend context [list $context_base_url $category_name]
-        		set type "all"
+        		set type &quot;all&quot;
     		}
 
     		# Cut the URL off the last item in the context bar
@@ -250,20 +251,20 @@
 		}
 		</pre><p>and to the corresponding index ADP page:</p><pre class="programlisting">
 		&lt;if @use_categories_p@&gt;
- 			&lt;multiple name="categories"&gt;
+ 			&lt;multiple name=&quot;categories&quot;&gt;
            		&lt;h2&gt;@categories.tree_name@
-           		&lt;group column="tree_id"&gt;
-             		&lt;a href="@package_url@cat/@categories.category_id@?@YOURPARAMS@&amp;category_id=@categories.category_id@"&gt;@categories.category_name@
+           		&lt;group column=&quot;tree_id&quot;&gt;
+             		&lt;a href=&quot;@package_url@cat/@categories.category_id@?@YOURPARAMS@&amp;category_id=@categories.category_id@&quot;&gt;@categories.category_name@
            		&lt;/group&gt;
          	&lt;/multiple&gt;
-		&lt;a href="@package_url@view?@YOURPARAMS@"&gt;All Items&lt;/if&gt;
- 	  </pre><p>Finally you need a an <code class="computeroutput">index.vuh</code> in your 
- 	  www folder to rewrite the URLs correctly, <a href="tutorial-vuh.html" title="Using .vuh files for pretty urls">the section called &#8220;Using .vuh files for pretty urls&#8221;</a>:</p><pre class="programlisting">
+		&lt;a href=&quot;@package_url@view?@YOURPARAMS@&quot;&gt;All Items&lt;/if&gt;
+ 	  </pre><p>Finally you need a an <tt class="computeroutput">index.vuh</tt> in your 
+ 	  www folder to rewrite the URLs correctly, <a href="tutorial-vuh.html" title="Using .vuh files for pretty urls">Section�, &#8220;Using .vuh files for pretty urls&#8221;</a>:</p><pre class="programlisting">
  	  	set url /[ad_conn extra_url]
 
 		if {[regexp {^/+cat/+([^/]+)/*} $url \
           ignore_whole category_id]} {
           rp_form_put category_id $category_id
 		}
-		rp_internal_redirect "/packages/YOURPACKAGE/www/index" 	  
+		rp_internal_redirect &quot;/packages/YOURPACKAGE/www/index&quot; 	  
  	  </pre><p>Now when ever the user select a category only notes that belong to this category are displayed.</p></li></ol></div></div><div class="navfooter"><hr><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="tutorial-admin-pages.html">Prev</a> </td><td width="20%" align="center"><a accesskey="h" href="index.html">Home</a></td><td width="40%" align="right"> <a accesskey="n" href="profile-code.html">Next</a></td></tr><tr><td width="40%" align="left">Admin Pages </td><td width="20%" align="center"><a accesskey="u" href="tutorial-advanced.html">Up</a></td><td width="40%" align="right"> Profile your code</td></tr></table><hr><address><a href="mailto:docs@openacs.org">docs@openacs.org</a></address></div><a name="comments"></a><center><a href="http://openacs.org/doc/current/tutorial-categories.html#comments">View comments on this page at openacs.org</a></center></body></html>
Index: openacs-4/packages/acs-core-docs/www/tutorial-comments.html
===================================================================
RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/tutorial-comments.html,v
diff -u -r1.8 -r1.8.4.1
--- openacs-4/packages/acs-core-docs/www/tutorial-comments.html	17 Jul 2006 05:38:32 -0000	1.8
+++ openacs-4/packages/acs-core-docs/www/tutorial-comments.html	3 Feb 2008 12:07:41 -0000	1.8.4.1
@@ -1,13 +1,14 @@
-<html><head><meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"><title>Adding Comments</title><meta name="generator" content="DocBook XSL Stylesheets V1.70.1"><link rel="home" href="index.html" title="OpenACS Core Documentation"><link rel="up" href="tutorial-advanced.html" title="Chapter�10.�Advanced Topics"><link rel="previous" href="tutorial-etp-templates.html" title="OpenACS Edit This Page Templates"><link rel="next" href="tutorial-admin-pages.html" title="Admin Pages"><link rel="stylesheet" href="openacs.css" type="text/css"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><a href="http://openacs.org"><img src="/doc/images/alex.jpg" border="0" alt="Alex logo"></a><table width="100%" summary="Navigation header" border="0"><tr><td width="20%" align="left"><a accesskey="p" href="tutorial-etp-templates.html">Prev</a> </td><th width="60%" align="center">Chapter�10.�Advanced Topics</th><td width="20%" align="right"> <a accesskey="n" href="tutorial-admin-pages.html">Next</a></td></tr></table><hr></div><div class="sect1" lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="tutorial-comments"></a>Adding Comments</h2></div></div></div><p>You can track comments for any ACS Object.  Here we'll track
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html><head><meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"><title>Adding Comments</title><meta name="generator" content="DocBook XSL Stylesheets V1.60.1"><link rel="home" href="index.html" title="OpenACS Core Documentation"><link rel="up" href="tutorial-advanced.html" title="Chapter�10.�Advanced Topics"><link rel="previous" href="tutorial-etp-templates.html" title="OpenACS Edit This Page Templates"><link rel="next" href="tutorial-admin-pages.html" title="Admin Pages"><link rel="stylesheet" href="openacs.css" type="text/css"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><a href="http://openacs.org"><img src="/doc/images/alex.jpg" border="0" alt="Alex logo"></a><table width="100%" summary="Navigation header" border="0"><tr><td width="20%" align="left"><a accesskey="p" href="tutorial-etp-templates.html">Prev</a> </td><th width="60%" align="center">Chapter�10.�Advanced Topics</th><td width="20%" align="right"> <a accesskey="n" href="tutorial-admin-pages.html">Next</a></td></tr></table><hr></div><div class="sect1" lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="tutorial-comments"></a>Adding Comments</h2></div></div><div></div></div><p>You can track comments for any ACS Object.  Here we'll track
      comments for notes.  On the note-edit.tcl/adp pair, which is used to
      display individual notes, we want to put a link to add comments at
      the bottom of the screen.  If there are any comments, we want to
      show them.</p><p>First, we need to generate a url for adding comments.  In note-edit.tcl:</p><pre class="programlisting">
- set comment_add_url "[general_comments_package_url]comment-add?[export_vars {
+ set comment_add_url &quot;[general_comments_package_url]comment-add?[export_vars {
   { object_id $note_id } 
   { object_name $title } 
-  { return_url "[ad_conn url]?[ad_conn query]"} 
- }]"
+  { return_url &quot;[ad_conn url]?[ad_conn query]&quot;} 
+ }]&quot;
  </pre><p>This calls a global, public tcl function that the
      general_comments package registered, to get its url. You then
      embed in that url the id of the note and its title, and set the
@@ -18,5 +19,5 @@
      show the contents of the comments, instead of just the fact that
      there are comments. Then you pass the note id, which is also the
      acs_object id.</p><p>We put our two new variables in the note-edit.adp
-     page.</p><pre class="programlisting">&lt;a href="@comment_add_url@"&gt;Add a comment&lt;/a&gt;
+     page.</p><pre class="programlisting">&lt;a href=&quot;@comment_add_url@&quot;&gt;Add a comment&lt;/a&gt;
  @comments_html@</pre></div><div class="navfooter"><hr><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="tutorial-etp-templates.html">Prev</a> </td><td width="20%" align="center"><a accesskey="h" href="index.html">Home</a></td><td width="40%" align="right"> <a accesskey="n" href="tutorial-admin-pages.html">Next</a></td></tr><tr><td width="40%" align="left">OpenACS Edit This Page Templates </td><td width="20%" align="center"><a accesskey="u" href="tutorial-advanced.html">Up</a></td><td width="40%" align="right"> Admin Pages</td></tr></table><hr><address><a href="mailto:docs@openacs.org">docs@openacs.org</a></address></div><a name="comments"></a><center><a href="http://openacs.org/doc/current/tutorial-comments.html#comments">View comments on this page at openacs.org</a></center></body></html>
Index: openacs-4/packages/acs-core-docs/www/tutorial-css-layout.html
===================================================================
RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/tutorial-css-layout.html,v
diff -u -r1.6 -r1.6.4.1
--- openacs-4/packages/acs-core-docs/www/tutorial-css-layout.html	17 Jul 2006 05:38:32 -0000	1.6
+++ openacs-4/packages/acs-core-docs/www/tutorial-css-layout.html	3 Feb 2008 12:07:41 -0000	1.6.4.1
@@ -1,31 +1,32 @@
-<html><head><meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"><title>Laying out a page with CSS instead of tables</title><meta name="generator" content="DocBook XSL Stylesheets V1.70.1"><link rel="home" href="index.html" title="OpenACS Core Documentation"><link rel="up" href="tutorial-advanced.html" title="Chapter�10.�Advanced Topics"><link rel="previous" href="tutorial-vuh.html" title="Using .vuh files for pretty urls"><link rel="next" href="tutorial-html-email.html" title="Sending HTML email from your application"><link rel="stylesheet" href="openacs.css" type="text/css"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><a href="http://openacs.org"><img src="/doc/images/alex.jpg" border="0" alt="Alex logo"></a><table width="100%" summary="Navigation header" border="0"><tr><td width="20%" align="left"><a accesskey="p" href="tutorial-vuh.html">Prev</a> </td><th width="60%" align="center">Chapter�10.�Advanced Topics</th><td width="20%" align="right"> <a accesskey="n" href="tutorial-html-email.html">Next</a></td></tr></table><hr></div><div class="sect1" lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="tutorial-css-layout"></a>Laying out a page with CSS instead of tables</h2></div></div></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id1106977"></a>.LRN home page with table-based layout</h3></div></div></div><div class="mediaobject" align="center"><img src="images/dotlrn-style-1.png" align="middle"></div><p>A sample of the HTML code (<a href="files/dotlrn-style-1.html" target="_top">full source</a>)</p><pre class="programlisting">&lt;table border="0" width="100%"&gt;
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html><head><meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"><title>Laying out a page with CSS instead of tables</title><meta name="generator" content="DocBook XSL Stylesheets V1.60.1"><link rel="home" href="index.html" title="OpenACS Core Documentation"><link rel="up" href="tutorial-advanced.html" title="Chapter�10.�Advanced Topics"><link rel="previous" href="tutorial-vuh.html" title="Using .vuh files for pretty urls"><link rel="next" href="tutorial-html-email.html" title="Sending HTML email from your application"><link rel="stylesheet" href="openacs.css" type="text/css"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><a href="http://openacs.org"><img src="/doc/images/alex.jpg" border="0" alt="Alex logo"></a><table width="100%" summary="Navigation header" border="0"><tr><td width="20%" align="left"><a accesskey="p" href="tutorial-vuh.html">Prev</a> </td><th width="60%" align="center">Chapter�10.�Advanced Topics</th><td width="20%" align="right"> <a accesskey="n" href="tutorial-html-email.html">Next</a></td></tr></table><hr></div><div class="sect1" lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="tutorial-css-layout"></a>Laying out a page with CSS instead of tables</h2></div></div><div></div></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id3068232"></a>.LRN home page with table-based layout</h3></div></div><div></div></div><div class="mediaobject" align="center"><img src="../images/dotlrn-style-1.png" align="middle"></div><p>A sample of the HTML code (<a href="files/dotlrn-style-1.html" target="_top">full source</a>)</p><pre class="programlisting">&lt;table border=&quot;0&quot; width=&quot;100%&quot;&gt;
   &lt;tr&gt;
-    &lt;td valign="top" width="50%"&gt;
-      &lt;table class="element" border=0 cellpadding="0" cellspacing="0" width="100%"&gt;
+    &lt;td valign=&quot;top&quot; width=&quot;50%&quot;&gt;
+      &lt;table class=&quot;element&quot; border=0 cellpadding=&quot;0&quot; cellspacing=&quot;0&quot; width=&quot;100%&quot;&gt;
         &lt;tr&gt; 
-          &lt;td colspan=3 class="element-header-text"&gt;
+          &lt;td colspan=3 class=&quot;element-header-text&quot;&gt;
             &lt;bold&gt;Groups&lt;/bold&gt;
          &lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr&gt;
-         &lt;td colspan=3 class="dark-line" height="0"&gt;&lt;img src="/resources/acs-subsite/spacer.gif"&gt;&lt;/td&gt;&lt;/tr&gt;
+         &lt;td colspan=3 class=&quot;dark-line&quot; height=&quot;0&quot;&gt;&lt;img src=&quot;/resources/acs-subsite/spacer.gif&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
           &lt;tr&gt;
-            &lt;td class="light-line" width="1"&gt;
-              &lt;img src="/resources/acs-subsite/spacer.gif" width="1"&gt;
+            &lt;td class=&quot;light-line&quot; width=&quot;1&quot;&gt;
+              &lt;img src=&quot;/resources/acs-subsite/spacer.gif&quot; width=&quot;1&quot;&gt;
             &lt;/td&gt;
-            &lt;td class="element-text" width="100%"&gt;
-            &lt;table cellspacing="0" cellpadding="0" class="element-content" width="100%"&gt;
+            &lt;td class=&quot;element-text&quot; width=&quot;100%&quot;&gt;
+            &lt;table cellspacing=&quot;0&quot; cellpadding=&quot;0&quot; class=&quot;element-content&quot; width=&quot;100%&quot;&gt;
               &lt;tr&gt;
                 &lt;td&gt;
-                  &lt;table border="0" bgcolor="white" cellpadding="0" cellspacing="0" width="100%"&gt;
+                  &lt;table border=&quot;0&quot; bgcolor=&quot;white&quot; cellpadding=&quot;0&quot; cellspacing=&quot;0&quot; width=&quot;100%&quot;&gt;
                     &lt;tr&gt;
                       &lt;td class=element-text&gt;
-                        MBA 101</pre></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id1107011"></a>.LRN Home with CSS-based layout</h3></div></div></div><div class="mediaobject" align="center"><img src="images/dotlrn-style-3.png" align="middle"></div><p>A sample of the HTML code (<a href="files/dotlrn-style-2.html" target="_top">full source</a>)</p><pre class="programlisting">&lt;div class="left"&gt;
-  &lt;div class="portlet-wrap-shadow"&gt;
-    &lt;div class="portlet-wrap-bl"&gt;
-      &lt;div class="portlet-wrap-tr"&gt;
-        &lt;div class="portlet"&gt;
+                        MBA 101</pre></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id3068295"></a>.LRN Home with CSS-based layout</h3></div></div><div></div></div><div class="mediaobject" align="center"><img src="../images/dotlrn-style-3.png" align="middle"></div><p>A sample of the HTML code (<a href="files/dotlrn-style-2.html" target="_top">full source</a>)</p><pre class="programlisting">&lt;div class=&quot;left&quot;&gt;
+  &lt;div class=&quot;portlet-wrap-shadow&quot;&gt;
+    &lt;div class=&quot;portlet-wrap-bl&quot;&gt;
+      &lt;div class=&quot;portlet-wrap-tr&quot;&gt;
+        &lt;div class=&quot;portlet&quot;&gt;
           &lt;h2&gt;Groups&lt;/h2&gt;
           &lt;ul&gt;
             &lt;li&gt;
-              &lt;a href="#"&gt;Class MBA 101&lt;/a&gt;</pre><p>If the CSS is removed from the file, it looks somewhat different:</p><div class="mediaobject" align="center"><img src="images/dotlrn-style-2.png" align="middle"></div></div></div><div class="navfooter"><hr><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="tutorial-vuh.html">Prev</a> </td><td width="20%" align="center"><a accesskey="h" href="index.html">Home</a></td><td width="40%" align="right"> <a accesskey="n" href="tutorial-html-email.html">Next</a></td></tr><tr><td width="40%" align="left">Using .vuh files for pretty urls </td><td width="20%" align="center"><a accesskey="u" href="tutorial-advanced.html">Up</a></td><td width="40%" align="right"> Sending HTML email from your application</td></tr></table><hr><address><a href="mailto:docs@openacs.org">docs@openacs.org</a></address></div><a name="comments"></a><center><a href="http://openacs.org/doc/current/tutorial-css-layout.html#comments">View comments on this page at openacs.org</a></center></body></html>
+              &lt;a href=&quot;#&quot;&gt;Class MBA 101&lt;/a&gt;</pre><p>If the CSS is removed from the file, it looks somewhat different:</p><div class="mediaobject" align="center"><img src="../images/dotlrn-style-2.png" align="middle"></div></div></div><div class="navfooter"><hr><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="tutorial-vuh.html">Prev</a> </td><td width="20%" align="center"><a accesskey="h" href="index.html">Home</a></td><td width="40%" align="right"> <a accesskey="n" href="tutorial-html-email.html">Next</a></td></tr><tr><td width="40%" align="left">Using .vuh files for pretty urls </td><td width="20%" align="center"><a accesskey="u" href="tutorial-advanced.html">Up</a></td><td width="40%" align="right"> Sending HTML email from your application</td></tr></table><hr><address><a href="mailto:docs@openacs.org">docs@openacs.org</a></address></div><a name="comments"></a><center><a href="http://openacs.org/doc/current/tutorial-css-layout.html#comments">View comments on this page at openacs.org</a></center></body></html>
Index: openacs-4/packages/acs-core-docs/www/tutorial-cvs.html
===================================================================
RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/tutorial-cvs.html,v
diff -u -r1.20 -r1.20.4.1
--- openacs-4/packages/acs-core-docs/www/tutorial-cvs.html	17 Jul 2006 05:38:32 -0000	1.20
+++ openacs-4/packages/acs-core-docs/www/tutorial-cvs.html	3 Feb 2008 12:07:41 -0000	1.20.4.1
@@ -1,21 +1,22 @@
-<html><head><meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"><title>Add the new package to CVS</title><meta name="generator" content="DocBook XSL Stylesheets V1.70.1"><link rel="home" href="index.html" title="OpenACS Core Documentation"><link rel="up" href="tutorial-advanced.html" title="Chapter�10.�Advanced Topics"><link rel="previous" href="tutorial-specs.html" title="Write the Requirements and Design Specs"><link rel="next" href="tutorial-etp-templates.html" title="OpenACS Edit This Page Templates"><link rel="stylesheet" href="openacs.css" type="text/css"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><a href="http://openacs.org"><img src="/doc/images/alex.jpg" border="0" alt="Alex logo"></a><table width="100%" summary="Navigation header" border="0"><tr><td width="20%" align="left"><a accesskey="p" href="tutorial-specs.html">Prev</a> </td><th width="60%" align="center">Chapter�10.�Advanced Topics</th><td width="20%" align="right"> <a accesskey="n" href="tutorial-etp-templates.html">Next</a></td></tr></table><hr></div><div class="sect1" lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="tutorial-cvs"></a>Add the new package to CVS</h2></div></div></div><p>Before you do any more work, make sure that your work is
-      protected by putting it all into cvs.  The <code class="computeroutput">cvs
-      add</code> command is not recursive, so you'll have to
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html><head><meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"><title>Add the new package to CVS</title><meta name="generator" content="DocBook XSL Stylesheets V1.60.1"><link rel="home" href="index.html" title="OpenACS Core Documentation"><link rel="up" href="tutorial-advanced.html" title="Chapter�10.�Advanced Topics"><link rel="previous" href="tutorial-specs.html" title="Write the Requirements and Design Specs"><link rel="next" href="tutorial-etp-templates.html" title="OpenACS Edit This Page Templates"><link rel="stylesheet" href="openacs.css" type="text/css"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><a href="http://openacs.org"><img src="/doc/images/alex.jpg" border="0" alt="Alex logo"></a><table width="100%" summary="Navigation header" border="0"><tr><td width="20%" align="left"><a accesskey="p" href="tutorial-specs.html">Prev</a> </td><th width="60%" align="center">Chapter�10.�Advanced Topics</th><td width="20%" align="right"> <a accesskey="n" href="tutorial-etp-templates.html">Next</a></td></tr></table><hr></div><div class="sect1" lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="tutorial-cvs"></a>Add the new package to CVS</h2></div></div><div></div></div><p>Before you do any more work, make sure that your work is
+      protected by putting it all into cvs.  The <tt class="computeroutput">cvs
+      add</tt> command is not recursive, so you'll have to
       traverse the directory tree manually and add as you go.  (<a href="http://www.piskorski.com/docs/cvs-conventions.html" target="_top">More on
-      CVS</a>)</p><pre class="screen">[$OPENACS_SERVICE_NAME xml]$ <strong class="userinput"><code>cd ..</code></strong>
-[$OPENACS_SERVICE_NAME doc]$ <strong class="userinput"><code>cd ..</code></strong>
-[$OPENACS_SERVICE_NAME www]$ <strong class="userinput"><code>cd ..</code></strong>
-[$OPENACS_SERVICE_NAME myfirstpackage]$ <strong class="userinput"><code>cd ..</code></strong>
-[$OPENACS_SERVICE_NAME packages]$ <strong class="userinput"><code>cvs add myfirstpackage/</code></strong>
+      CVS</a>)</p><pre class="screen">[$OPENACS_SERVICE_NAME xml]$ <b class="userinput"><tt>cd ..</tt></b>
+[$OPENACS_SERVICE_NAME doc]$ <b class="userinput"><tt>cd ..</tt></b>
+[$OPENACS_SERVICE_NAME www]$ <b class="userinput"><tt>cd ..</tt></b>
+[$OPENACS_SERVICE_NAME myfirstpackage]$ <b class="userinput"><tt>cd ..</tt></b>
+[$OPENACS_SERVICE_NAME packages]$ <b class="userinput"><tt>cvs add myfirstpackage/</tt></b>
 Directory /cvsroot/<span class="replaceable"><span class="replaceable">$OPENACS_SERVICE_NAME</span></span>/packages/myfirstpackage added to the repository
-[$OPENACS_SERVICE_NAME packages]$ <strong class="userinput"><code>cd myfirstpackage/</code></strong>
-[$OPENACS_SERVICE_NAME myfirstpackage]$ <strong class="userinput"><code>cvs add www</code></strong>
+[$OPENACS_SERVICE_NAME packages]$ <b class="userinput"><tt>cd myfirstpackage/</tt></b>
+[$OPENACS_SERVICE_NAME myfirstpackage]$ <b class="userinput"><tt>cvs add www</tt></b>
 Directory /cvsroot/<span class="replaceable"><span class="replaceable">$OPENACS_SERVICE_NAME</span></span>/packages/myfirstpackage/www added to the repository
-[$OPENACS_SERVICE_NAME myfirstpackage]$ <strong class="userinput"><code>cd www</code></strong>
-[$OPENACS_SERVICE_NAME www]$ <strong class="userinput"><code>cvs add doc</code></strong>
+[$OPENACS_SERVICE_NAME myfirstpackage]$ <b class="userinput"><tt>cd www</tt></b>
+[$OPENACS_SERVICE_NAME www]$ <b class="userinput"><tt>cvs add doc</tt></b>
 Directory /cvsroot/<span class="replaceable"><span class="replaceable">$OPENACS_SERVICE_NAME</span></span>/packages/myfirstpackage/www/doc added to the repository
-[$OPENACS_SERVICE_NAME www]$ <strong class="userinput"><code>cd doc</code></strong>
-[$OPENACS_SERVICE_NAME doc]$ <strong class="userinput"><code>cvs add *</code></strong>
+[$OPENACS_SERVICE_NAME www]$ <b class="userinput"><tt>cd doc</tt></b>
+[$OPENACS_SERVICE_NAME doc]$ <b class="userinput"><tt>cvs add *</tt></b>
 cvs add: cannot add special file `CVS'; skipping
 cvs add: scheduling file `admin-guide.html' for addition
 cvs add: scheduling file `bi01.html' for addition
@@ -40,13 +41,13 @@
 cvs add: scheduling file `user-interface.png' for addition
 Directory /cvsroot/<span class="replaceable"><span class="replaceable">$OPENACS_SERVICE_NAME</span></span>/packages/myfirstpackage/www/doc/xml added to the repository
 cvs add: use 'cvs commit' to add these files permanently
-[$OPENACS_SERVICE_NAME doc]$ <strong class="userinput"><code>cd xml</code></strong>
-[$OPENACS_SERVICE_NAME xml]$ <strong class="userinput"><code>cvs add Makefile index.xml</code></strong>
+[$OPENACS_SERVICE_NAME doc]$ <b class="userinput"><tt>cd xml</tt></b>
+[$OPENACS_SERVICE_NAME xml]$ <b class="userinput"><tt>cvs add Makefile index.xml</tt></b>
 cvs add: scheduling file `Makefile' for addition
 cvs add: scheduling file `index.xml' for addition
 cvs add: use 'cvs commit' to add these files permanently
-[$OPENACS_SERVICE_NAME xml]$<strong class="userinput"><code> cd ../../..</code></strong>
-[$OPENACS_SERVICE_NAME myfirstpackage]$ <strong class="userinput"><code>cvs commit -m "new package"</code></strong>
+[$OPENACS_SERVICE_NAME xml]$<b class="userinput"><tt> cd ../../..</tt></b>
+[$OPENACS_SERVICE_NAME myfirstpackage]$ <b class="userinput"><tt>cvs commit -m &quot;new package&quot;</tt></b>
 cvs commit: Examining .
 cvs commit: Examining www
 cvs commit: Examining www/doc
@@ -58,4 +59,4 @@
 initial revision: 1.1
 done
 <span class="emphasis"><em>(many lines omitted)</em></span>
-[$OPENACS_SERVICE_NAME myfirstpackage]$</pre><div class="figure"><a name="id1035609"></a><p class="title"><b>Figure�10.1.�Upgrading a local CVS repository</b></p><div class="figure-contents"><div class="mediaobject" align="center"><img src="images/development-with-cvs.png" align="middle" alt="Upgrading a local CVS repository"></div></div></div><br class="figure-break"></div><div class="navfooter"><hr><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="tutorial-specs.html">Prev</a> </td><td width="20%" align="center"><a accesskey="h" href="index.html">Home</a></td><td width="40%" align="right"> <a accesskey="n" href="tutorial-etp-templates.html">Next</a></td></tr><tr><td width="40%" align="left">Write the Requirements and Design Specs </td><td width="20%" align="center"><a accesskey="u" href="tutorial-advanced.html">Up</a></td><td width="40%" align="right"> OpenACS Edit This Page Templates</td></tr></table><hr><address><a href="mailto:docs@openacs.org">docs@openacs.org</a></address></div><a name="comments"></a><center><a href="http://openacs.org/doc/current/tutorial-cvs.html#comments">View comments on this page at openacs.org</a></center></body></html>
+[$OPENACS_SERVICE_NAME myfirstpackage]$</pre><div class="figure"><a name="id3043160"></a><p class="title"><b>Figure�10.1.�Upgrading a local CVS repository</b></p><div class="mediaobject" align="center"><img src="../images/development-with-cvs.png" align="middle" alt="Upgrading a local CVS repository"></div></div></div><div class="navfooter"><hr><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="tutorial-specs.html">Prev</a> </td><td width="20%" align="center"><a accesskey="h" href="index.html">Home</a></td><td width="40%" align="right"> <a accesskey="n" href="tutorial-etp-templates.html">Next</a></td></tr><tr><td width="40%" align="left">Write the Requirements and Design Specs </td><td width="20%" align="center"><a accesskey="u" href="tutorial-advanced.html">Up</a></td><td width="40%" align="right"> OpenACS Edit This Page Templates</td></tr></table><hr><address><a href="mailto:docs@openacs.org">docs@openacs.org</a></address></div><a name="comments"></a><center><a href="http://openacs.org/doc/current/tutorial-cvs.html#comments">View comments on this page at openacs.org</a></center></body></html>
Index: openacs-4/packages/acs-core-docs/www/tutorial-database.html
===================================================================
RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/tutorial-database.html,v
diff -u -r1.37 -r1.37.4.1
--- openacs-4/packages/acs-core-docs/www/tutorial-database.html	17 Jul 2006 05:38:32 -0000	1.37
+++ openacs-4/packages/acs-core-docs/www/tutorial-database.html	3 Feb 2008 12:07:41 -0000	1.37.4.1
@@ -1,43 +1,44 @@
-<html><head><meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"><title>Setting Up Database Objects</title><meta name="generator" content="DocBook XSL Stylesheets V1.70.1"><link rel="home" href="index.html" title="OpenACS Core Documentation"><link rel="up" href="tutorial.html" title="Chapter�9.�Development Tutorial"><link rel="previous" href="tutorial-newpackage.html" title="Creating an Application Package"><link rel="next" href="tutorial-pages.html" title="Creating Web Pages"><link rel="stylesheet" href="openacs.css" type="text/css"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><a href="http://openacs.org"><img src="/doc/images/alex.jpg" border="0" alt="Alex logo"></a><table width="100%" summary="Navigation header" border="0"><tr><td width="20%" align="left"><a accesskey="p" href="tutorial-newpackage.html">Prev</a> </td><th width="60%" align="center">Chapter�9.�Development Tutorial</th><td width="20%" align="right"> <a accesskey="n" href="tutorial-pages.html">Next</a></td></tr></table><hr></div><div class="sect1" lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="tutorial-database"></a>Setting Up Database Objects</h2></div></div></div><div class="authorblurb"><p>by <a href="mailto:joel@aufrecht.org" target="_top">Joel Aufrecht</a></p>
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html><head><meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"><title>Setting Up Database Objects</title><meta name="generator" content="DocBook XSL Stylesheets V1.60.1"><link rel="home" href="index.html" title="OpenACS Core Documentation"><link rel="up" href="tutorial.html" title="Chapter�9.�Development Tutorial"><link rel="previous" href="tutorial-newpackage.html" title="Creating an Application Package"><link rel="next" href="tutorial-pages.html" title="Creating Web Pages"><link rel="stylesheet" href="openacs.css" type="text/css"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><a href="http://openacs.org"><img src="/doc/images/alex.jpg" border="0" alt="Alex logo"></a><table width="100%" summary="Navigation header" border="0"><tr><td width="20%" align="left"><a accesskey="p" href="tutorial-newpackage.html">Prev</a> </td><th width="60%" align="center">Chapter�9.�Development Tutorial</th><td width="20%" align="right"> <a accesskey="n" href="tutorial-pages.html">Next</a></td></tr></table><hr></div><div class="sect1" lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="tutorial-database"></a>Setting Up Database Objects</h2></div></div><div></div></div><div class="authorblurb"><p>by <a href="mailto:joel@aufrecht.org" target="_top">Joel Aufrecht</a></p>
           OpenACS docs are written by the named authors, and may be edited
           by OpenACS documentation staff.
-        </div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id926860"></a>Code the data model</h3></div></div></div><p>We create all database objects with scripts in the
-      <code class="computeroutput">myfirstpackage/sql/</code> directory.  All
+        </div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id2901716"></a>Code the data model</h3></div></div><div></div></div><p>We create all database objects with scripts in the
+      <tt class="computeroutput">myfirstpackage/sql/</tt> directory.  All
       database scripts are database-specific and are thus in either
-      the <code class="computeroutput">myfirstpackage/sql/oracle</code> or
-      <code class="computeroutput">myfirstpackage/sql/postgresql</code> directory.
+      the <tt class="computeroutput">myfirstpackage/sql/oracle</tt> or
+      <tt class="computeroutput">myfirstpackage/sql/postgresql</tt> directory.
       Packages can support Oracle, PostgreSQL, or both.  In this
       tutorial, we will be working with PostgreSQL</p><p>The first file will be
-      <code class="computeroutput">myfirstpackage-create.sql</code>.  The
+      <tt class="computeroutput">myfirstpackage-create.sql</tt>.  The
       package manager requires a file with the name
-      <code class="computeroutput"><span class="replaceable"><span class="replaceable">packagekey</span></span>-create.sql</code>,
+      <tt class="computeroutput"><span class="replaceable"><span class="replaceable">packagekey</span></span>-create.sql</tt>,
       which it will run automatically when the package in installed.
       This file should create all tables and views.</p><p>Our package is going to store all of its information in
-      one table.  It takes more than just a <code class="computeroutput">CREATE
-      TABLE</code> command, however, because we want to
+      one table.  It takes more than just a <tt class="computeroutput">CREATE
+      TABLE</tt> command, however, because we want to
       integrate our table with the OpenACS system.  By making each
       record in our table an OpenACS object, we gain access to the
       permissions system and to services that integrate with OpenACS
-      objects, such as <code class="computeroutput">general-comments</code> and 
-      <code class="computeroutput">notification</code>. The cost is
+      objects, such as <tt class="computeroutput">general-comments</tt> and 
+      <tt class="computeroutput">notification</tt>. The cost is
       that our table creation code must include several functions,
       stored procedures, and is complicated (even for simple tables).</p><p>There are many kinds of OpenACS objects in the system.  (You
-      can see them with the psql code: <code class="computeroutput"> select object_type from
-      acs_object_types;</code>.)  One such object is the
+      can see them with the psql code: <tt class="computeroutput"> select object_type from
+      acs_object_types;</tt>.)  One such object is the
       content_item, which is part of the content repository system.
       To use it, we will make our data objects children of the content_revision object, 
       which is a child of content_item.  Not only will we gain the benefits of both OpenACS
       Objects and content objects, we can also use some content
       repository functions to simplify our database creation.  (<a href="objects.html" target="_top">More
       information about ACS Objects</a>.  <a href="/doc/acs-content-repository" target="_top">More information about the
       Content Repository</a>.)
-</p><div class="figure"><a name="id998095"></a><p class="title"><b>Figure�9.2.�Tutorial Data Model</b></p><div class="figure-contents"><div class="mediaobject" align="center"><img src="images/tutorial-data-model.png" align="middle" alt="Tutorial Data Model"></div></div></div><br class="figure-break"><p>The top of each sql file has some
+</p><div class="figure"><a name="id3044015"></a><p class="title"><b>Figure�9.2.�Tutorial Data Model</b></p><div class="mediaobject" align="center"><img src="../images/tutorial-data-model.png" align="middle" alt="Tutorial Data Model"></div></div><p>The top of each sql file has some
       standard comments, including doc tags such as
-      <code class="computeroutput">@author</code> which will be picked up
+      <tt class="computeroutput">@author</tt> which will be picked up
       by the API browser.  The string
-      <code class="computeroutput">$Id$</code> will automatically be
-      expanded when the file is checked in to cvs.</p><pre class="screen">[$OPENACS_SERVICE_NAME ~]$ <strong class="userinput"><code>cd /var/lib/aolserver/<span class="replaceable"><span class="replaceable">$OPENACS_SERVICE_NAME</span></span>/packages/myfirstpackage/sql/postgresql</code></strong>
-[$OPENACS_SERVICE_NAME postgresql]$ <strong class="userinput"><code>emacs myfirstpackage-create.sql</code></strong></pre><p>Paste the text below into the file, save, and close.</p><div class="figure"><a name="id999345"></a><p class="title"><b>Figure�9.3.�The Database Creation Script</b></p><div class="figure-contents"><pre class="programlisting">-- creation script
+      <tt class="computeroutput">$Id$</tt> will automatically be
+      expanded when the file is checked in to cvs.</p><pre class="screen">[$OPENACS_SERVICE_NAME ~]$ <b class="userinput"><tt>cd /var/lib/aolserver/<span class="replaceable"><span class="replaceable">$OPENACS_SERVICE_NAME</span></span>/packages/myfirstpackage/sql/postgresql</tt></b>
+[$OPENACS_SERVICE_NAME postgresql]$ <b class="userinput"><tt>emacs myfirstpackage-create.sql</tt></b></pre><p>Paste the text below into the file, save, and close.</p><div class="figure"><a name="id2923434"></a><p class="title"><b>Figure�9.3.�The Database Creation Script</b></p><pre class="programlisting">-- creation script
 --
 -- @author joel@aufrecht.org
 -- @cvs-id &amp;Id:$
@@ -55,13 +56,13 @@
 
 -- necessary to work around limitation of content repository:
 select content_folder__register_content_type(-100,'mfp_note','t');
-</pre></div></div><br class="figure-break"><p>The creation script calls a function in PL/pgSQL (PL/pgSQL is a procedural language extention to sql),
-    <code class="computeroutput"><a href="/api-doc/plsql-subprogram-one?type=FUNCTION&amp;name=content%5ftype%5f%5fcreate%5ftype" target="_top">content_type__create_type</a></code>, which
+</pre></div><p>The creation script calls a function in PL/pgSQL (PL/pgSQL is a procedural language extention to sql),
+    <tt class="computeroutput"><a href="/api-doc/plsql-subprogram-one?type=FUNCTION&amp;name=content%5ftype%5f%5fcreate%5ftype" target="_top">content_type__create_type</a></tt>, which
     in turn creates the necessary database changes to support our data
-    object.  Notice the use of "mfp."  This is derived from "My
-    First Package" and ensures that our object is unlikely to conflict
+    object.  Notice the use of &quot;mfp.&quot;  This is derived from &quot;My
+    First Package&quot; and ensures that our object is unlikely to conflict
     with objects from other packages.</p><p>Create a database file to drop everything if the package is uninstalled.</p><pre class="screen">
-[$OPENACS_SERVICE_NAME postgresql]$ <strong class="userinput"><code>emacs myfirstpackage-drop.sql</code></strong></pre><div class="figure"><a name="id940775"></a><p class="title"><b>Figure�9.4.�Database Deletion Script</b></p><div class="figure-contents"><pre class="programlisting">-- drop script
+[$OPENACS_SERVICE_NAME postgresql]$ <b class="userinput"><tt>emacs myfirstpackage-drop.sql</tt></b></pre><div class="figure"><a name="id2958368"></a><p class="title"><b>Figure�9.4.�Database Deletion Script</b></p><pre class="programlisting">-- drop script
 --
 -- @author joel@aufrecht.org
 -- @cvs-id &amp;Id:$
@@ -73,19 +74,19 @@
 	   't',
 	   't'
     );
-</pre></div></div><br class="figure-break"><p>(like the creation script the drop script calls a PL/pgSQL function: <code class="computeroutput"><a href="/api-doc/plsql-subprogram-one?type=FUNCTION&amp;name=content%5ftype%5f%5fdrop%5ftype" target="_top">content_type__drop_type</a></code></p><p>Run the create script manually to add your tables and functions.</p><pre class="screen">[$OPENACS_SERVICE_NAME postgresql]$ <strong class="userinput"><code>psql -f myfirstpackage-create.sql</code></strong>
+</pre></div><p>(like the creation script the drop script calls a PL/pgSQL function: <tt class="computeroutput"><a href="/api-doc/plsql-subprogram-one?type=FUNCTION&amp;name=content%5ftype%5f%5fdrop%5ftype" target="_top">content_type__drop_type</a></tt></p><p>Run the create script manually to add your tables and functions.</p><pre class="screen">[$OPENACS_SERVICE_NAME postgresql]$ <b class="userinput"><tt>psql service0 -f myfirstpackage-create.sql</tt></b>
 psql:myfirstpackage-create.sql:15: NOTICE:  CREATE TABLE / PRIMARY KEY will create implicit index 'mfp_notes_pkey' for table 'mfp_notes'
 psql:myfirstpackage-create.sql:15: NOTICE:  CREATE TABLE will create implicit trigger(s) for FOREIGN KEY check(s)
  content_type__create_type
 ---------------------------
                          0
 (1 row)
 
-[$OPENACS_SERVICE_NAME postgresql]$</pre><p>If there are errors, use them to debug the sql file and try again.  If there are errors in the database table creation, you may need to run the drop script to drop the table so that you can recreate it.  The drop script will probably have errors since some of the things it's trying to drop may be missing.  They can be ignored.</p><p>Once you get the same output as shown above, test the drop script:</p><pre class="screen">[$OPENACS_SERVICE_NAME postgresql]$ <strong class="userinput"><code>psql -f myfirstpackage-drop.sql</code></strong>
+[$OPENACS_SERVICE_NAME postgresql]$</pre><p>If there are errors, use them to debug the sql file and try again.  If there are errors in the database table creation, you may need to run the drop script to drop the table so that you can recreate it.  The drop script will probably have errors since some of the things it's trying to drop may be missing.  They can be ignored.</p><p>Once you get the same output as shown above, test the drop script:</p><pre class="screen">[$OPENACS_SERVICE_NAME postgresql]$ <b class="userinput"><tt>psql service0 -f myfirstpackage-drop.sql</tt></b>
 
  content_type__drop_type
 -------------------------
                        0
 (1 row)
 
-[$OPENACS_SERVICE_NAME postgresql]$</pre><p>Once both scripts are working without errors, <span class="emphasis"><em>run the create script one last time</em></span> and proceed.</p><pre class="screen">[$OPENACS_SERVICE_NAME postgresql]$ <strong class="userinput"><code>psql -f myfirstpackage-create.sql</code></strong></pre></div></div><div class="navfooter"><hr><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="tutorial-newpackage.html">Prev</a> </td><td width="20%" align="center"><a accesskey="h" href="index.html">Home</a></td><td width="40%" align="right"> <a accesskey="n" href="tutorial-pages.html">Next</a></td></tr><tr><td width="40%" align="left">Creating an Application Package </td><td width="20%" align="center"><a accesskey="u" href="tutorial.html">Up</a></td><td width="40%" align="right"> Creating Web Pages</td></tr></table><hr><address><a href="mailto:docs@openacs.org">docs@openacs.org</a></address></div><a name="comments"></a><center><a href="http://openacs.org/doc/current/tutorial-database.html#comments">View comments on this page at openacs.org</a></center></body></html>
+[$OPENACS_SERVICE_NAME postgresql]$</pre><p>Once both scripts are working without errors, <span class="emphasis"><em>run the create script one last time</em></span> and proceed.</p><pre class="screen">[$OPENACS_SERVICE_NAME postgresql]$ <b class="userinput"><tt>psql service0 -f myfirstpackage-create.sql</tt></b></pre></div></div><div class="navfooter"><hr><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="tutorial-newpackage.html">Prev</a> </td><td width="20%" align="center"><a accesskey="h" href="index.html">Home</a></td><td width="40%" align="right"> <a accesskey="n" href="tutorial-pages.html">Next</a></td></tr><tr><td width="40%" align="left">Creating an Application Package </td><td width="20%" align="center"><a accesskey="u" href="tutorial.html">Up</a></td><td width="40%" align="right"> Creating Web Pages</td></tr></table><hr><address><a href="mailto:docs@openacs.org">docs@openacs.org</a></address></div><a name="comments"></a><center><a href="http://openacs.org/doc/current/tutorial-database.html#comments">View comments on this page at openacs.org</a></center></body></html>
Index: openacs-4/packages/acs-core-docs/www/tutorial-debug.html
===================================================================
RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/tutorial-debug.html,v
diff -u -r1.36 -r1.36.4.1
--- openacs-4/packages/acs-core-docs/www/tutorial-debug.html	17 Jul 2006 05:38:32 -0000	1.36
+++ openacs-4/packages/acs-core-docs/www/tutorial-debug.html	3 Feb 2008 12:07:41 -0000	1.36.4.1
@@ -1,47 +1,48 @@
-<html><head><meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"><title>Debugging and Automated Testing</title><meta name="generator" content="DocBook XSL Stylesheets V1.70.1"><link rel="home" href="index.html" title="OpenACS Core Documentation"><link rel="up" href="tutorial.html" title="Chapter�9.�Development Tutorial"><link rel="previous" href="tutorial-pages.html" title="Creating Web Pages"><link rel="next" href="tutorial-advanced.html" title="Chapter�10.�Advanced Topics"><link rel="stylesheet" href="openacs.css" type="text/css"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><a href="http://openacs.org"><img src="/doc/images/alex.jpg" border="0" alt="Alex logo"></a><table width="100%" summary="Navigation header" border="0"><tr><td width="20%" align="left"><a accesskey="p" href="tutorial-pages.html">Prev</a> </td><th width="60%" align="center">Chapter�9.�Development Tutorial</th><td width="20%" align="right"> <a accesskey="n" href="tutorial-advanced.html">Next</a></td></tr></table><hr></div><div class="sect1" lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="tutorial-debug"></a>Debugging and Automated Testing</h2></div></div></div><div class="authorblurb"><p>by <a href="mailto:joel@aufrecht.org" target="_top">Joel Aufrecht</a></p>
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html><head><meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"><title>Debugging and Automated Testing</title><meta name="generator" content="DocBook XSL Stylesheets V1.60.1"><link rel="home" href="index.html" title="OpenACS Core Documentation"><link rel="up" href="tutorial.html" title="Chapter�9.�Development Tutorial"><link rel="previous" href="tutorial-pages.html" title="Creating Web Pages"><link rel="next" href="tutorial-advanced.html" title="Chapter�10.�Advanced Topics"><link rel="stylesheet" href="openacs.css" type="text/css"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><a href="http://openacs.org"><img src="/doc/images/alex.jpg" border="0" alt="Alex logo"></a><table width="100%" summary="Navigation header" border="0"><tr><td width="20%" align="left"><a accesskey="p" href="tutorial-pages.html">Prev</a> </td><th width="60%" align="center">Chapter�9.�Development Tutorial</th><td width="20%" align="right"> <a accesskey="n" href="tutorial-advanced.html">Next</a></td></tr></table><hr></div><div class="sect1" lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="tutorial-debug"></a>Debugging and Automated Testing</h2></div></div><div></div></div><div class="authorblurb"><p>by <a href="mailto:joel@aufrecht.org" target="_top">Joel Aufrecht</a></p>
           OpenACS docs are written by the named authors, and may be edited
           by OpenACS documentation staff.
-        </div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id971271"></a>Debugging</h3></div></div></div><p><b>Developer Support.�</b>The Developer Support package adds several goodies: debug
+        </div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id2898602"></a>Debugging</h3></div></div><div></div></div><p><b>Developer Support.�</b>The Developer Support package adds several goodies: debug
       information for every page; the ability to log comments to the
       page instead of the error log, and fast user switching so that you
       can test pages as anonymous and as dummy users without logging
       in and out.</p><p><b>PostgreSQL.�</b>You can work directly with the database to do debugging
           steps like looking directly at tables and testing stored
           procedures.  Start emacs.  Type
-            <strong class="userinput"><code>M-x sql-postgres</code></strong>.  Press enter for
-            server name and use <strong class="userinput"><code><span class="replaceable"><span class="replaceable">$OPENACS_SERVICE_NAME</span></span></code></strong> for
+            <b class="userinput"><tt>M-x sql-postgres</tt></b>.  Press enter for
+            server name and use <b class="userinput"><tt><span class="replaceable"><span class="replaceable">$OPENACS_SERVICE_NAME</span></span></tt></b> for
             database name.  You can use C-(up arrow) and C-(down arrow)
             for command history.
-</p><p>Hint: "Parse error near *" usually means that an xql file
+</p><p>Hint: &quot;Parse error near *&quot; usually means that an xql file
       wasn't recognized, because the tcl file is choking on the *SQL*
       placeholder that it falls back on.</p><p><b>Watching the server log.�</b></p><p>To set up real-time monitoring of the AOLserver error
-          log, <span class="bold"><strong>type</strong></span> </p><pre class="screen">less /var/lib/aolserver/<span class="replaceable"><span class="replaceable">$OPENACS_SERVICE_NAME</span></span>/log/openacs-dev-error.log</pre><p>
+          log, <span class="bold"><b>type</b></span> </p><pre class="screen">less /var/lib/aolserver/<span class="replaceable"><span class="replaceable">$OPENACS_SERVICE_NAME</span></span>/log/openacs-dev-error.log</pre><p>
           </p><div class="literallayout"><p>F�to�show�new�log�entries�in�real�time�(like�tail�-f)<br>
 C-c�to�stop�and�F�to�start�it�up�again.�<br>
 G�goes�to�the�end.<br>
 ?�searches�backward�<br>
 /�searches�forward.�<br>
 ����������</p></div><p>
-    </p></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id966543"></a>Manual testing</h3></div></div></div><p>Make a list of basic tests to make sure it works</p><div class="segmentedlist"><table border="0"><thead><tr class="segtitle"><th>Test Num</th><th>Action</th><th>Expected Result</th></tr></thead><tbody><tr class="seglistitem"><td class="seg">001</td><td class="seg">Browse to the index page while not logged in and
-            while one or more notes exist.</td><td class="seg">No edit or delete or add links should appear.</td></tr><tr class="seglistitem"><td class="seg">002</td><td class="seg">Browse to the index page while logged in.  An Edit
+    </p></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id2984938"></a>Manual testing</h3></div></div><div></div></div><p>Make a list of basic tests to make sure it works</p><div class="segmentedlist"><table border="0"><thead><tr><th>Test Num</th><th>Action</th><th>Expected Result</th></tr></thead><tbody><tr><td>001</td><td>Browse to the index page while not logged in and
+            while one or more notes exist.</td><td>No edit or delete or add links should appear.</td></tr><tr><td>002</td><td>Browse to the index page while logged in.  An Edit
             link should appear.  Click on it.  Fill out the form and
-            click Submit.</td><td class="seg">The text added in the form should be visible on the
-            index page.</td></tr><tr class="seglistitem"><td class="seg">API-001</td><td class="seg">Invoke mfp::note::create with a specific word as the title.</td><td class="seg">Proc should return an object id.</td></tr><tr class="seglistitem"><td class="seg">API-002</td><td class="seg">Given an object id from API-001, invoke mfp::note::get.</td><td class="seg">Proc should return the specific word in the title.</td></tr><tr class="seglistitem"><td class="seg">API-003</td><td class="seg">Given the object id from API-001, invoke mfp::note::delete.</td><td class="seg">Proc should return 0 for success.</td></tr></tbody></table></div><p>Other things to test: try to delete someone else's
+            click Submit.</td><td>The text added in the form should be visible on the
+            index page.</td></tr><tr><td>API-001</td><td>Invoke mfp::note::create with a specific word as the title.</td><td>Proc should return an object id.</td></tr><tr><td>API-002</td><td>Given an object id from API-001, invoke mfp::note::get.</td><td>Proc should return the specific word in the title.</td></tr><tr><td>API-003</td><td>Given the object id from API-001, invoke mfp::note::delete.</td><td>Proc should return 0 for success.</td></tr></tbody></table></div><p>Other things to test: try to delete someone else's
         note.  Try to delete your own note.  Edit your own note.
-        Search for a note.</p></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id1148429"></a>Write automated tests</h3></div></div></div><div class="authorblurb"><p>by <a href="mailto:simon@collaboraid.net" target="_top">Simon Carstensen</a> and Joel Aufrecht</p>
+        Search for a note.</p></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id3067989"></a>Write automated tests</h3></div></div><div></div></div><div class="authorblurb"><p>by <a href="mailto:simon@collaboraid.net" target="_top">Simon Carstensen</a> and Joel Aufrecht</p>
           OpenACS docs are written by the named authors, and may be edited
           by OpenACS documentation staff.
-        </div><p><a class="indexterm" name="id970942"></a>
+        </div><p><a class="indexterm" name="id3068012"></a>
     It seems to me that a lot of people have been asking for some guidelines on how to write automated tests. I've done several tests by now and have found the process to be extremely easy and useful. It's a joy to work with automated testing once you get the hang of it.</p><p>Create the directory that will contain the test
-    script and edit the script file.  The directory location and file name are standards which are recognized by the automated testing package:</p><pre class="screen">[$OPENACS_SERVICE_NAME www]$<strong class="userinput"><code> mkdir /var/lib/aolserver/<span class="replaceable"><span class="replaceable">$OPENACS_SERVICE_NAME</span></span>/packages/myfirstpackage/tcl/test</code></strong>
-[$OPENACS_SERVICE_NAME www]$<strong class="userinput"><code> cd /var/lib/aolserver/<span class="replaceable"><span class="replaceable">$OPENACS_SERVICE_NAME</span></span>/packages/myfirstpackage/tcl/test</code></strong>
-[$OPENACS_SERVICE_NAME test]$ <strong class="userinput"><code>emacs myfirstpackages-procs.tcl</code></strong></pre><p>Write the tests.  This is obviously the big step :)  The script should first call ad_library like any normal -procs.tcl file:</p><pre class="screen">ad_library {
+    script and edit the script file.  The directory location and file name are standards which are recognized by the automated testing package:</p><pre class="screen">[$OPENACS_SERVICE_NAME www]$<b class="userinput"><tt> mkdir /var/lib/aolserver/<span class="replaceable"><span class="replaceable">$OPENACS_SERVICE_NAME</span></span>/packages/myfirstpackage/tcl/test</tt></b>
+[$OPENACS_SERVICE_NAME www]$<b class="userinput"><tt> cd /var/lib/aolserver/<span class="replaceable"><span class="replaceable">$OPENACS_SERVICE_NAME</span></span>/packages/myfirstpackage/tcl/test</tt></b>
+[$OPENACS_SERVICE_NAME test]$ <b class="userinput"><tt>emacs myfirstpackages-procs.tcl</tt></b></pre><p>Write the tests.  This is obviously the big step :)  The script should first call ad_library like any normal -procs.tcl file:</p><pre class="screen">ad_library {
     ...
 }
 </pre><p>To create a test case you call
-<code class="computeroutput"><a href="/api-doc/proc-view?proc=aa%5fregister%5fcase" target="_top">aa_register_case</a> test_case_name.</code>.   
+<tt class="computeroutput"><a href="/api-doc/proc-view?proc=aa%5fregister%5fcase" target="_top">aa_register_case</a> test_case_name.</tt>.   
 Once you've created the test case you start writing the needed logic.
-We'll use the tutorial package, "myfirstpackage," as an example.
+We'll use the tutorial package, &quot;myfirstpackage,&quot; as an example.
 Let's say you just wrote an <a href="/api-doc" target="_top">API</a> for adding and deleting notes in the
 notes packages and wanted to test that. You'd probably want to write a
 test that first creates a note, then verifies that it was inserted,
@@ -53,7 +54,7 @@
 call to aa_run_with_teardown which basically means that all the
 inserts, deletes, and updates will be rolled back once the test has
 been executed. A very useful feature. Instead of inserting bogus data
-like:        <code class="computeroutput">set name "Simon"</code>, I tend to generate a random script in order avoid inserting a value that's already in the database:</p><pre class="screen">set name [ad_generate_random_string]
+like:        <tt class="computeroutput">set name &quot;Simon&quot;</tt>, I tend to generate a random script in order avoid inserting a value that's already in the database:</p><pre class="screen">set name [ad_generate_random_string]
 </pre><p>Here's how the test case looks so far:</p><pre class="screen">aa_register_case mfp_basic_test {
     My test
 } {
@@ -64,10 +65,10 @@
        }
 }
 </pre><p>Now let's look at the actual test code. That's the code that
-goes inside <code class="computeroutput">-test_code {}</code>.  We want to implement test case API-001, "Given an object id from API-001, invoke mfp::note::get.  Proc should return the specific word in the title."</p><pre class="programlisting">
+goes inside <tt class="computeroutput">-test_code {}</tt>.  We want to implement test case API-001, &quot;Given an object id from API-001, invoke mfp::note::get.  Proc should return the specific word in the title.&quot;</p><pre class="programlisting">
       set name [ad_generate_random_string]
       set new_id [mfp::note::add -title $name]
-      aa_true "Note add succeeded" [exists_and_not_null new_id]</pre><p>To test our simple case, we must load the test file into the system (just as with the /tcl file in the basic tutorial, since the file didn't exist when the system started, the system doesn't know about it.)  To make this file take effect, go to the <a href="/acs-admin/apm" target="_top">APM</a> and choose "Reload changed" for "MyFirstPackage".  Since we'll be changing it frequently, select "watch this file" on the next page.  This will cause the system to check this file every time any page is requested, which is bad for production systems but convenient for developing.  We can also add some aa_register_case flags to make it easier to run the test.  The <code class="computeroutput">-procs</code> flag, which indicates which procs are tested by this test case, makes it easier to find procs in your package that aren't tested at all.  The <code class="computeroutput">-cats</code> flag, setting categories, makes it easier to control which tests to run.  The <code class="computeroutput">smoke</code> test setting means that this is a basic test case that can and should be run any time you are doing any test. (<a href="http://www.nedbatchelder.com/blog/20030408T062805.html" target="_top">a definition of "smoke test"</a>)</p><p>Once the file is loaded, go to <a href="/test" target="_top">ACS Automated Testing</a> and click on myfirstpackage.  You should see your test case.  Run it and examine the results.</p><div class="sect3" lang="en"><div class="titlepage"><div><div><h4 class="title"><a name="id1033108"></a>TCLWebtest tests</h4></div></div></div><p>API testing can only test part of our package - it doesn't test the code in our adp/tcl pairs.  For this, we can use TCLwebtest.  TCLwebtest must be <a href="install-tclwebtest.html" title="Install tclwebtest.">installed</a> for this test to work.  This provides a <a href="http://tclwebtest.sourceforge.net/doc/api_public.html" target="_top">library of functions</a> that make it easy to call a page through HTTP, examine the results, and drive forms.  TCLwebtest's functions overlap slightly with acs-automated-testing; see the example provided for one approach on integrating them.</p></div><div class="sect3" lang="en"><div class="titlepage"><div><div><h4 class="title"><a name="id1115663"></a>Example</h4></div></div></div><p>Now we can add the rest of the API tests, including a test with deliberately bad data.  The complete test looks like:</p><pre class="programlisting">ad_library {
+      aa_true &quot;Note add succeeded&quot; [exists_and_not_null new_id]</pre><p>To test our simple case, we must load the test file into the system (just as with the /tcl file in the basic tutorial, since the file didn't exist when the system started, the system doesn't know about it.)  To make this file take effect, go to the <a href="/acs-admin/apm" target="_top">APM</a> and choose &quot;Reload changed&quot; for &quot;MyFirstPackage&quot;.  Since we'll be changing it frequently, select &quot;watch this file&quot; on the next page.  This will cause the system to check this file every time any page is requested, which is bad for production systems but convenient for developing.  We can also add some aa_register_case flags to make it easier to run the test.  The <tt class="computeroutput">-procs</tt> flag, which indicates which procs are tested by this test case, makes it easier to find procs in your package that aren't tested at all.  The <tt class="computeroutput">-cats</tt> flag, setting categories, makes it easier to control which tests to run.  The <tt class="computeroutput">smoke</tt> test setting means that this is a basic test case that can and should be run any time you are doing any test. (<a href="http://www.nedbatchelder.com/blog/20030408T062805.html" target="_top">a definition of &quot;smoke test&quot;</a>)</p><p>Once the file is loaded, go to <a href="/test" target="_top">ACS Automated Testing</a> and click on myfirstpackage.  You should see your test case.  Run it and examine the results.</p><div class="sect3" lang="en"><div class="titlepage"><div><div><h4 class="title"><a name="id2898489"></a>TCLWebtest tests</h4></div></div><div></div></div><p>API testing can only test part of our package - it doesn't test the code in our adp/tcl pairs.  For this, we can use TCLwebtest.  TCLwebtest must be <a href="install-tclwebtest.html" title="Install tclwebtest.">installed</a> for this test to work.  This provides a <a href="http://tclwebtest.sourceforge.net/doc/api_public.html" target="_top">library of functions</a> that make it easy to call a page through HTTP, examine the results, and drive forms.  TCLwebtest's functions overlap slightly with acs-automated-testing; see the example provided for one approach on integrating them.</p></div><div class="sect3" lang="en"><div class="titlepage"><div><div><h4 class="title"><a name="id3062810"></a>Example</h4></div></div><div></div></div><p>Now we can add the rest of the API tests, including a test with deliberately bad data.  The complete test looks like:</p><pre class="programlisting">ad_library {
     Test cases for my first package.
 }
 
@@ -83,15 +84,15 @@
             -test_code  {
                 set name [ad_generate_random_string]
                 set new_id [mfp::note::add -title $name]
-                aa_true "Note add succeeded" [exists_and_not_null new_id]
+                aa_true &quot;Note add succeeded&quot; [exists_and_not_null new_id]
                 
                 mfp::note::get -item_id $new_id -array note_array
-                aa_true "Note contains correct title" [string equal $note_array(title) $name]
+                aa_true &quot;Note contains correct title&quot; [string equal $note_array(title) $name]
                 
                 mfp::note::delete -item_id $new_id
                 
                 set get_again [catch {mfp::note::get -item_id $new_id -array note_array}]
-                aa_false "After deleting a note, retrieving it fails" [expr $get_again == 0]
+                aa_false &quot;After deleting a note, retrieving it fails&quot; [expr {$get_again == 0}]
             }
     }
 
@@ -108,15 +109,15 @@
                 set name {-Bad [BAD] \077 { $Bad}} 
                 append name [ad_generate_random_string]
                 set new_id [mfp::note::add -title $name]
-                aa_true "Note add succeeded" [exists_and_not_null new_id]
+                aa_true &quot;Note add succeeded&quot; [exists_and_not_null new_id]
                 
                 mfp::note::get -item_id $new_id -array note_array
-                aa_true "Note contains correct title" [string equal $note_array(title) $name]
-                aa_log "Title is $name"
+                aa_true &quot;Note contains correct title&quot; [string equal $note_array(title) $name]
+                aa_log &quot;Title is $name&quot;
                 mfp::note::delete -item_id $new_id
                 
                 set get_again [catch {mfp::note::get -item_id $new_id -array note_array}]
-                aa_false "After deleting a note, retrieving it fails" [expr $get_again == 0]
+                aa_false &quot;After deleting a note, retrieving it fails&quot; [expr {$get_again == 0}]
             }
     }
 
@@ -159,9 +160,9 @@
             
             # Request note-edit page
             set package_uri [apm_package_url_from_key myfirstpackage]
-            set edit_uri "${package_uri}note-edit"
-            aa_log "[twt::server_url]$edit_uri"
-            twt::do_request "[twt::server_url]$edit_uri"
+            set edit_uri &quot;${package_uri}note-edit&quot;
+            aa_log &quot;[twt::server_url]$edit_uri&quot;
+            twt::do_request &quot;[twt::server_url]$edit_uri&quot;
             
             # Submit a new note
 
@@ -176,8 +177,8 @@
             
             # Request index page and verify that note is in listing
             tclwebtest::do_request $package_uri                 
-            aa_true "New note with title \"$note_title\" is found in index page" \
-                [string match "*${note_title}*" [tclwebtest::response body]]
+            aa_true &quot;New note with title \&quot;$note_title\&quot; is found in index page&quot; \
+                [string match &quot;*${note_title}*&quot; [tclwebtest::response body]]
             
             #-------------------------------------------------------------
             # Delete Note
@@ -190,27 +191,27 @@
             # 3) screen-scrape for the ID
             # all options are problematic.  We'll do #1 in this example:
 
-            set note_id [db_string get_note_id_from_name " 
+            set note_id [db_string get_note_id_from_name &quot; 
                 select item_id 
                   from cr_items 
                  where name = :note_title  
                    and content_type = 'mfp_note'
-            " -default 0]
+            &quot; -default 0]
 
-            aa_log "Deleting note with id $note_id"
+            aa_log &quot;Deleting note with id $note_id&quot;
 
-            set delete_uri "${package_uri}note-delete?item_id=${note_id}"
+            set delete_uri &quot;${package_uri}note-delete?item_id=${note_id}&quot;
             twt::do_request $delete_uri
             
             # Request index page and verify that note is in listing
             tclwebtest::do_request $package_uri                 
-            aa_true "Note with title \"$note_title\" is not found in index page after deletion." \
-                ![string match "*${note_title}*" [tclwebtest::response body]]
+            aa_true &quot;Note with title \&quot;$note_title\&quot; is not found in index page after deletion.&quot; \
+                ![string match &quot;*${note_title}*&quot; [tclwebtest::response body]]
             
         } -teardown_code {
             
             twt::user::delete -user_id $user_id
         }
     }
 
-</pre><p>See also <a href="automated-testing-best-practices.html" title="Automated Testing">the section called &#8220;Automated Testing&#8221;</a>.</p></div></div></div><div class="navfooter"><hr><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="tutorial-pages.html">Prev</a> </td><td width="20%" align="center"><a accesskey="h" href="index.html">Home</a></td><td width="40%" align="right"> <a accesskey="n" href="tutorial-advanced.html">Next</a></td></tr><tr><td width="40%" align="left">Creating Web Pages </td><td width="20%" align="center"><a accesskey="u" href="tutorial.html">Up</a></td><td width="40%" align="right"> Chapter�10.�Advanced Topics</td></tr></table><hr><address><a href="mailto:docs@openacs.org">docs@openacs.org</a></address></div><a name="comments"></a><center><a href="http://openacs.org/doc/current/tutorial-debug.html#comments">View comments on this page at openacs.org</a></center></body></html>
+</pre><p>See also <a href="automated-testing-best-practices.html" title="Automated Testing">Section�, &#8220;Automated Testing&#8221;</a>.</p></div></div></div><div class="navfooter"><hr><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="tutorial-pages.html">Prev</a> </td><td width="20%" align="center"><a accesskey="h" href="index.html">Home</a></td><td width="40%" align="right"> <a accesskey="n" href="tutorial-advanced.html">Next</a></td></tr><tr><td width="40%" align="left">Creating Web Pages </td><td width="20%" align="center"><a accesskey="u" href="tutorial.html">Up</a></td><td width="40%" align="right"> Chapter�10.�Advanced Topics</td></tr></table><hr><address><a href="mailto:docs@openacs.org">docs@openacs.org</a></address></div><a name="comments"></a><center><a href="http://openacs.org/doc/current/tutorial-debug.html#comments">View comments on this page at openacs.org</a></center></body></html>
Index: openacs-4/packages/acs-core-docs/www/tutorial-distribute.html
===================================================================
RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/tutorial-distribute.html,v
diff -u -r1.20 -r1.20.4.1
--- openacs-4/packages/acs-core-docs/www/tutorial-distribute.html	17 Jul 2006 05:38:32 -0000	1.20
+++ openacs-4/packages/acs-core-docs/www/tutorial-distribute.html	3 Feb 2008 12:07:41 -0000	1.20.4.1
@@ -1,10 +1,11 @@
-<html><head><meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"><title>Prepare the package for distribution.</title><meta name="generator" content="DocBook XSL Stylesheets V1.70.1"><link rel="home" href="index.html" title="OpenACS Core Documentation"><link rel="up" href="tutorial-advanced.html" title="Chapter�10.�Advanced Topics"><link rel="previous" href="profile-code.html" title="Profile your code"><link rel="next" href="tutorial-upgrades.html" title="Distributing upgrades of your package"><link rel="stylesheet" href="openacs.css" type="text/css"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><a href="http://openacs.org"><img src="/doc/images/alex.jpg" border="0" alt="Alex logo"></a><table width="100%" summary="Navigation header" border="0"><tr><td width="20%" align="left"><a accesskey="p" href="profile-code.html">Prev</a> </td><th width="60%" align="center">Chapter�10.�Advanced Topics</th><td width="20%" align="right"> <a accesskey="n" href="tutorial-upgrades.html">Next</a></td></tr></table><hr></div><div class="sect1" lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="tutorial-distribute"></a>Prepare the package for distribution.</h2></div></div></div><p>Browse to the package manager.  Click on
-        <code class="computeroutput"><span class="guilabel"><span class="guilabel">tutorialapp</span></span></code>.</p><p>Click on <code class="computeroutput"><span class="guilabel"><span class="guilabel">Generate a distribution file
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html><head><meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"><title>Prepare the package for distribution.</title><meta name="generator" content="DocBook XSL Stylesheets V1.60.1"><link rel="home" href="index.html" title="OpenACS Core Documentation"><link rel="up" href="tutorial-advanced.html" title="Chapter�10.�Advanced Topics"><link rel="previous" href="profile-code.html" title="Profile your code"><link rel="next" href="tutorial-upgrades.html" title="Distributing upgrades of your package"><link rel="stylesheet" href="openacs.css" type="text/css"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><a href="http://openacs.org"><img src="/doc/images/alex.jpg" border="0" alt="Alex logo"></a><table width="100%" summary="Navigation header" border="0"><tr><td width="20%" align="left"><a accesskey="p" href="profile-code.html">Prev</a> </td><th width="60%" align="center">Chapter�10.�Advanced Topics</th><td width="20%" align="right"> <a accesskey="n" href="tutorial-upgrades.html">Next</a></td></tr></table><hr></div><div class="sect1" lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="tutorial-distribute"></a>Prepare the package for distribution.</h2></div></div><div></div></div><p>Browse to the package manager.  Click on
+        <tt class="computeroutput"><span class="guilabel"><span class="guilabel">tutorialapp</span></span></tt>.</p><p>Click on <tt class="computeroutput"><span class="guilabel"><span class="guilabel">Generate a distribution file
         for this package from the
-        filesystem</span></span></code>.
+        filesystem</span></span></tt>.
         </p><p>Click on the file size
-        (<code class="computeroutput"><span class="guilabel"><span class="guilabel">37.1KB</span></span></code>)
-        after the label <code class="computeroutput"><span class="guilabel"><span class="guilabel">Distribution
-        File:</span></span></code> and save the file to
-        /var/tmp.</p><p><a class="indexterm" name="id1106429"></a>
+        (<tt class="computeroutput"><span class="guilabel"><span class="guilabel">37.1KB</span></span></tt>)
+        after the label <tt class="computeroutput"><span class="guilabel"><span class="guilabel">Distribution
+        File:</span></span></tt> and save the file to
+        /var/tmp.</p><p><a class="indexterm" name="id3059366"></a>
 </p><p><a href="http://openacs.org/forums/message-view?message_id=192919" target="_top">Package development guidelines</a></p></div><div class="navfooter"><hr><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="profile-code.html">Prev</a> </td><td width="20%" align="center"><a accesskey="h" href="index.html">Home</a></td><td width="40%" align="right"> <a accesskey="n" href="tutorial-upgrades.html">Next</a></td></tr><tr><td width="40%" align="left">Profile your code </td><td width="20%" align="center"><a accesskey="u" href="tutorial-advanced.html">Up</a></td><td width="40%" align="right"> Distributing upgrades of your package</td></tr></table><hr><address><a href="mailto:docs@openacs.org">docs@openacs.org</a></address></div><a name="comments"></a><center><a href="http://openacs.org/doc/current/tutorial-distribute.html#comments">View comments on this page at openacs.org</a></center></body></html>
Index: openacs-4/packages/acs-core-docs/www/tutorial-etp-templates.html
===================================================================
RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/tutorial-etp-templates.html,v
diff -u -r1.3 -r1.3.4.1
--- openacs-4/packages/acs-core-docs/www/tutorial-etp-templates.html	17 Jul 2006 05:38:32 -0000	1.3
+++ openacs-4/packages/acs-core-docs/www/tutorial-etp-templates.html	3 Feb 2008 12:07:41 -0000	1.3.4.1
@@ -1,16 +1,17 @@
-<html><head><meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"><title>OpenACS Edit This Page Templates</title><meta name="generator" content="DocBook XSL Stylesheets V1.70.1"><link rel="home" href="index.html" title="OpenACS Core Documentation"><link rel="up" href="tutorial-advanced.html" title="Chapter�10.�Advanced Topics"><link rel="previous" href="tutorial-cvs.html" title="Add the new package to CVS"><link rel="next" href="tutorial-comments.html" title="Adding Comments"><link rel="stylesheet" href="openacs.css" type="text/css"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><a href="http://openacs.org"><img src="/doc/images/alex.jpg" border="0" alt="Alex logo"></a><table width="100%" summary="Navigation header" border="0"><tr><td width="20%" align="left"><a accesskey="p" href="tutorial-cvs.html">Prev</a> </td><th width="60%" align="center">Chapter�10.�Advanced Topics</th><td width="20%" align="right"> <a accesskey="n" href="tutorial-comments.html">Next</a></td></tr></table><hr></div><div class="sect1" lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="tutorial-etp-templates"></a>OpenACS Edit This Page Templates</h2></div></div></div><div class="authorblurb"><p>by <a href="mailto:ncarroll@ee.usyd.edu.au" target="_top">Nick Carroll</a></p>
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html><head><meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"><title>OpenACS Edit This Page Templates</title><meta name="generator" content="DocBook XSL Stylesheets V1.60.1"><link rel="home" href="index.html" title="OpenACS Core Documentation"><link rel="up" href="tutorial-advanced.html" title="Chapter�10.�Advanced Topics"><link rel="previous" href="tutorial-cvs.html" title="Add the new package to CVS"><link rel="next" href="tutorial-comments.html" title="Adding Comments"><link rel="stylesheet" href="openacs.css" type="text/css"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><a href="http://openacs.org"><img src="/doc/images/alex.jpg" border="0" alt="Alex logo"></a><table width="100%" summary="Navigation header" border="0"><tr><td width="20%" align="left"><a accesskey="p" href="tutorial-cvs.html">Prev</a> </td><th width="60%" align="center">Chapter�10.�Advanced Topics</th><td width="20%" align="right"> <a accesskey="n" href="tutorial-comments.html">Next</a></td></tr></table><hr></div><div class="sect1" lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="tutorial-etp-templates"></a>OpenACS Edit This Page Templates</h2></div></div><div></div></div><div class="authorblurb"><p>by <a href="mailto:ncarroll@ee.usyd.edu.au" target="_top">Nick Carroll</a></p>
           OpenACS docs are written by the named authors, and may be edited
           by OpenACS documentation staff.
-        </div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="goals"></a>Goals</h3></div></div></div><div class="itemizedlist"><ul type="disc"><li><p>Learn about the OpenACS templating system.</p></li><li><p>Learn about subsites and site-map administration.</p></li></ul></div></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="introduction"></a>Introduction</h3></div></div></div><p>
+        </div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="goals"></a>Goals</h3></div></div><div></div></div><div class="itemizedlist"><ul type="disc"><li><p>Learn about the OpenACS templating system.</p></li><li><p>Learn about subsites and site-map administration.</p></li></ul></div></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="introduction"></a>Introduction</h3></div></div><div></div></div><p>
         The OpenACS templating system allows you to give your site a consistent look and feel. It also promotes code maintainability in the presentation layer, by allowing presentation components to be reused across multiple pages. If you need to change the layout for some reason, then you only need to make that change in one location, instead of across many files.
       </p><p>
         In this problem set you will familiarise yourself with the templating system in openacs. This will be achieved through customising an existing edit-this-page application template.
       </p><p>
         Before proceeding, it is strongly advised to read the templating documentation on your openacs installation (http://localhost:8000/doc/acs-templating). The documentation lists the special tags available for ADP files.
-      </p></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="exercise1"></a>Exercise 1: Create a Subsite</h3></div></div></div><div class="itemizedlist"><ul type="disc"><li><p>Create a subsite called pset3.</p></li><li><p>A subsite is simply a directory or subdirectory mounted at the end of your domain name. This can be done in one of two places:</p><div class="itemizedlist"><ul type="circle"><li><p>http://localhost:8000/admin/site-map</p></li><li><p>or the subsite admin form on the main site, which is available when you login to your OpenACS installation.</p></li></ul></div></li></ul></div></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="exercise2"></a>Exercise 2: Checkout and Install edit-this-page (ETP)</h3></div></div></div><div class="itemizedlist"><ul type="disc"><li><p>Checkout ETP from CVS:</p><pre class="screen">cd ~/openacs/packages
+      </p></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="exercise1"></a>Exercise 1: Create a Subsite</h3></div></div><div></div></div><div class="itemizedlist"><ul type="disc"><li><p>Create a subsite called pset3.</p></li><li><p>A subsite is simply a directory or subdirectory mounted at the end of your domain name. This can be done in one of two places:</p><div class="itemizedlist"><ul type="circle"><li><p>http://localhost:8000/admin/site-map</p></li><li><p>or the subsite admin form on the main site, which is available when you login to your OpenACS installation.</p></li></ul></div></li></ul></div></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="exercise2"></a>Exercise 2: Checkout and Install edit-this-page (ETP)</h3></div></div><div></div></div><div class="itemizedlist"><ul type="disc"><li><p>Checkout ETP from CVS:</p><pre class="screen">cd ~/openacs/packages
             cvs -d:pserver:anonymous@openacs.org:/cvsroot login
-            cvs -d:pserver:anonymous@openacs.org:/cvsroot co edit-this-page</pre></li><li><p>Go to the package manager at http://yoursite/acs-admin/apm. And install  the new package: edit-this-page.</p></li><li><p>Or use the "Add Application" form available on the Main site.</p></li></ul></div></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="exercise3"></a>Change ETP Application</h3></div></div></div><div class="itemizedlist"><ul type="disc"><li><p>Work out how to change the ETP application.</p></li><li><p>Investigate each of the available ETP templates:</p><div class="itemizedlist"><ul type="circle"><li><p>Default</p></li><li><p>News</p></li><li><p>FAQ</p></li></ul></div></li></ul></div></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="exercise4"></a>Exercise 4: Create a New ETP Template</h3></div></div></div><div class="itemizedlist"><ul type="disc"><li><p>Browse the files for each of the above ETP templates at:</p><pre class="screen">cd ~/openacs/packages/edit-this-page/templates</pre></li><li><p>Use the article template as the basis of our new col2 template.</p><pre class="screen">cp article-content.adp col2-content.adp
+            cvs -d:pserver:anonymous@openacs.org:/cvsroot co edit-this-page</pre></li><li><p>Go to the package manager at http://yoursite/acs-admin/apm. And install  the new package: edit-this-page.</p></li><li><p>Or use the &quot;Add Application&quot; form available on the Main site.</p></li></ul></div></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="exercise3"></a>Change ETP Application</h3></div></div><div></div></div><div class="itemizedlist"><ul type="disc"><li><p>Work out how to change the ETP application.</p></li><li><p>Investigate each of the available ETP templates:</p><div class="itemizedlist"><ul type="circle"><li><p>Default</p></li><li><p>News</p></li><li><p>FAQ</p></li></ul></div></li></ul></div></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="exercise4"></a>Exercise 4: Create a New ETP Template</h3></div></div><div></div></div><div class="itemizedlist"><ul type="disc"><li><p>Browse the files for each of the above ETP templates at:</p><pre class="screen">cd ~/openacs/packages/edit-this-page/templates</pre></li><li><p>Use the article template as the basis of our new col2 template.</p><pre class="screen">cp article-content.adp col2-content.adp
             cp article-content.tcl col2-content.tcl
             cp article-index.adp col2-index.adp
-            cp article-index.tcl col2-index.tcl</pre></li><li><p>The template should provide us with the following ETP layout:</p><div class="table"><a name="id967507"></a><p class="title"><b>Table�10.1.�table showing ETP layout</b></p><div class="table-contents"><table summary="table showing ETP layout" cellspacing="0" border="1" width="250"><colgroup><col align="left"><col align="left"></colgroup><tbody><tr><td colspan="2" align="center">Header</td></tr><tr height="200"><td align="left">Sidebar</td><td align="left">Main Content Pane</td></tr></tbody></table></div></div><br class="table-break"></li><li><p>The "Main Content" pane should contain the editable content that ETP provides.</p></li><li><p>The "Header" should display the title of the page that you set in ETP.</p></li><li><p>The "Sidebar" should display the extlinks that you add as a content item in ETP.</p></li></ul></div></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="exercise5"></a>Exercise 5: Register the col2 Template with ETP</h3></div></div></div><div class="itemizedlist"><ul type="disc"><li><p>Need to register your template with ETP so that it appears in the drop-down menu that you would have seen in Exercise 3.</p><pre class="screen">cd ~/openacs/packages/edit-this-page/tcl
-            emacs etp-custom-init.tcl</pre></li><li><p>Use the function etp::define_application to register your template with ETP</p><div class="itemizedlist"><ul type="circle"><li><p>Uncomment the "asc" definition</p></li><li><p>Set allow_extlinks to true, the rest should be false.</p></li></ul></div></li><li><p>Restart your server for the changes to take effect.</p></li></ul></div></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="exercise6"></a>Exercise 6: Configure ETP to use the col2 Template</h3></div></div></div><div class="itemizedlist"><ul type="disc"><li><p>Configure your ETP instance at /lab4/index to use the col2 template.</p></li><li><p>Create external links to link to other mounted ETP instances.</p></li><li><p>Check that your external links show up in the sidebar when you view your ETP application using the col2 template.</p></li></ul></div></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="end"></a>Who Wrote This and When</h3></div></div></div><p>This problem set was originally written by <a href="http://www.weg.ee.usyd.edu.au/people/ncarroll" target="_top">Nick Carroll</a> in August 2004 for the <a href="http://www.usyd.edu.au" target="_top">University of Sydney</a> Course <a href="http://www.weg.ee.usyd.edu.au/courses/ebus5002" target="_top">EBUS5002</a>.</p><p>This material is copyright 2004 by Nick Carroll.  It may be copied, reused, and modified, provided credit is given to the original author.</p><div class="cvstag">($Id$)</div></div></div><div class="navfooter"><hr><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="tutorial-cvs.html">Prev</a> </td><td width="20%" align="center"><a accesskey="h" href="index.html">Home</a></td><td width="40%" align="right"> <a accesskey="n" href="tutorial-comments.html">Next</a></td></tr><tr><td width="40%" align="left">Add the new package to CVS </td><td width="20%" align="center"><a accesskey="u" href="tutorial-advanced.html">Up</a></td><td width="40%" align="right"> Adding Comments</td></tr></table><hr><address><a href="mailto:docs@openacs.org">docs@openacs.org</a></address></div><a name="comments"></a><center><a href="http://openacs.org/doc/current/tutorial-etp-templates.html#comments">View comments on this page at openacs.org</a></center></body></html>
+            cp article-index.tcl col2-index.tcl</pre></li><li><p>The template should provide us with the following ETP layout:</p><div class="table"><a name="id3031334"></a><p class="title"><b>Table�10.1.�table showing ETP layout</b></p><table summary="table showing ETP layout" cellspacing="0" border="1" width="250"><colgroup><col align="left"><col align="left"></colgroup><tbody><tr><td colspan="2" align="center">Header</td></tr><tr height="200"><td align="left">Sidebar</td><td align="left">Main Content Pane</td></tr></tbody></table></div></li><li><p>The &quot;Main Content&quot; pane should contain the editable content that ETP provides.</p></li><li><p>The &quot;Header&quot; should display the title of the page that you set in ETP.</p></li><li><p>The &quot;Sidebar&quot; should display the extlinks that you add as a content item in ETP.</p></li></ul></div></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="exercise5"></a>Exercise 5: Register the col2 Template with ETP</h3></div></div><div></div></div><div class="itemizedlist"><ul type="disc"><li><p>Need to register your template with ETP so that it appears in the drop-down menu that you would have seen in Exercise 3.</p><pre class="screen">cd ~/openacs/packages/edit-this-page/tcl
+            emacs etp-custom-init.tcl</pre></li><li><p>Use the function etp::define_application to register your template with ETP</p><div class="itemizedlist"><ul type="circle"><li><p>Uncomment the &quot;asc&quot; definition</p></li><li><p>Set allow_extlinks to true, the rest should be false.</p></li></ul></div></li><li><p>Restart your server for the changes to take effect.</p></li></ul></div></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="exercise6"></a>Exercise 6: Configure ETP to use the col2 Template</h3></div></div><div></div></div><div class="itemizedlist"><ul type="disc"><li><p>Configure your ETP instance at /lab4/index to use the col2 template.</p></li><li><p>Create external links to link to other mounted ETP instances.</p></li><li><p>Check that your external links show up in the sidebar when you view your ETP application using the col2 template.</p></li></ul></div></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="end"></a>Who Wrote This and When</h3></div></div><div></div></div><p>This problem set was originally written by <a href="http://www.weg.ee.usyd.edu.au/people/ncarroll" target="_top">Nick Carroll</a> in August 2004 for the <a href="http://www.usyd.edu.au" target="_top">University of Sydney</a> Course <a href="http://www.weg.ee.usyd.edu.au/courses/ebus5002" target="_top">EBUS5002</a>.</p><p>This material is copyright 2004 by Nick Carroll.  It may be copied, reused, and modified, provided credit is given to the original author.</p><div class="cvstag">($Id$)</div></div></div><div class="navfooter"><hr><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="tutorial-cvs.html">Prev</a> </td><td width="20%" align="center"><a accesskey="h" href="index.html">Home</a></td><td width="40%" align="right"> <a accesskey="n" href="tutorial-comments.html">Next</a></td></tr><tr><td width="40%" align="left">Add the new package to CVS </td><td width="20%" align="center"><a accesskey="u" href="tutorial-advanced.html">Up</a></td><td width="40%" align="right"> Adding Comments</td></tr></table><hr><address><a href="mailto:docs@openacs.org">docs@openacs.org</a></address></div><a name="comments"></a><center><a href="http://openacs.org/doc/current/tutorial-etp-templates.html#comments">View comments on this page at openacs.org</a></center></body></html>
Index: openacs-4/packages/acs-core-docs/www/tutorial-future-topics.html
===================================================================
RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/tutorial-future-topics.html,v
diff -u -r1.11 -r1.11.4.1
--- openacs-4/packages/acs-core-docs/www/tutorial-future-topics.html	17 Jul 2006 05:38:32 -0000	1.11
+++ openacs-4/packages/acs-core-docs/www/tutorial-future-topics.html	3 Feb 2008 12:07:41 -0000	1.11.4.1
@@ -1,6 +1,7 @@
-<html><head><meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"><title>Future Topics</title><meta name="generator" content="DocBook XSL Stylesheets V1.70.1"><link rel="home" href="index.html" title="OpenACS Core Documentation"><link rel="up" href="tutorial-advanced.html" title="Chapter�10.�Advanced Topics"><link rel="previous" href="tutorial-second-database.html" title="Connect to a second database"><link rel="next" href="dev-guide.html" title="Chapter�11.�Development Reference"><link rel="stylesheet" href="openacs.css" type="text/css"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><a href="http://openacs.org"><img src="/doc/images/alex.jpg" border="0" alt="Alex logo"></a><table width="100%" summary="Navigation header" border="0"><tr><td width="20%" align="left"><a accesskey="p" href="tutorial-second-database.html">Prev</a> </td><th width="60%" align="center">Chapter�10.�Advanced Topics</th><td width="20%" align="right"> <a accesskey="n" href="dev-guide.html">Next</a></td></tr></table><hr></div><div class="sect1" lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="tutorial-future-topics"></a>Future Topics</h2></div></div></div><div class="itemizedlist"><ul type="disc"><li><p>How to enforce security so that users can't
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html><head><meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"><title>Future Topics</title><meta name="generator" content="DocBook XSL Stylesheets V1.60.1"><link rel="home" href="index.html" title="OpenACS Core Documentation"><link rel="up" href="tutorial-advanced.html" title="Chapter�10.�Advanced Topics"><link rel="previous" href="tutorial-second-database.html" title="Connect to a second database"><link rel="next" href="dev-guide.html" title="Chapter�11.�Development Reference"><link rel="stylesheet" href="openacs.css" type="text/css"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><a href="http://openacs.org"><img src="/doc/images/alex.jpg" border="0" alt="Alex logo"></a><table width="100%" summary="Navigation header" border="0"><tr><td width="20%" align="left"><a accesskey="p" href="tutorial-second-database.html">Prev</a> </td><th width="60%" align="center">Chapter�10.�Advanced Topics</th><td width="20%" align="right"> <a accesskey="n" href="dev-guide.html">Next</a></td></tr></table><hr></div><div class="sect1" lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="tutorial-future-topics"></a>Future Topics</h2></div></div><div></div></div><div class="itemizedlist"><ul type="disc"><li><p>How to enforce security so that users can't
       change other users records</p></li><li><p>How to use the content management tables so that
       ... what?</p></li><li><p>How to change the default stylesheets for Form
       Builder HTML forms.</p></li><li><p>How to make your package searchable with OpenFTS/Oracle</p></li><li><p>How to prepare pagelets for inclusion in other pages</p></li><li><p>How and when to put procedures in a tcl procedure library</p></li><li><p>More on ad_form - data validation, other stuff.
       (plan to draw from Jon Griffin's doc)</p></li><li><p>partialquery in xql</p></li><li><p>How to use the html/text entry widget to get the
-      "does this look right" confirm page </p></li><li><p>APM package dependencies</p></li></ul></div><p>See also the <a href="http://openacs.org/faq/one-faq?faq_id=43841" target="_top">OpenACS Programming FAQ</a></p></div><div class="navfooter"><hr><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="tutorial-second-database.html">Prev</a> </td><td width="20%" align="center"><a accesskey="h" href="index.html">Home</a></td><td width="40%" align="right"> <a accesskey="n" href="dev-guide.html">Next</a></td></tr><tr><td width="40%" align="left">Connect to a second database </td><td width="20%" align="center"><a accesskey="u" href="tutorial-advanced.html">Up</a></td><td width="40%" align="right"> Chapter�11.�Development Reference</td></tr></table><hr><address><a href="mailto:docs@openacs.org">docs@openacs.org</a></address></div><a name="comments"></a><center><a href="http://openacs.org/doc/current/tutorial-future-topics.html#comments">View comments on this page at openacs.org</a></center></body></html>
+      &quot;does this look right&quot; confirm page </p></li><li><p>APM package dependencies</p></li></ul></div><p>See also the <a href="http://openacs.org/faq/one-faq?faq_id=43841" target="_top">OpenACS Programming FAQ</a></p></div><div class="navfooter"><hr><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="tutorial-second-database.html">Prev</a> </td><td width="20%" align="center"><a accesskey="h" href="index.html">Home</a></td><td width="40%" align="right"> <a accesskey="n" href="dev-guide.html">Next</a></td></tr><tr><td width="40%" align="left">Connect to a second database </td><td width="20%" align="center"><a accesskey="u" href="tutorial-advanced.html">Up</a></td><td width="40%" align="right"> Chapter�11.�Development Reference</td></tr></table><hr><address><a href="mailto:docs@openacs.org">docs@openacs.org</a></address></div><a name="comments"></a><center><a href="http://openacs.org/doc/current/tutorial-future-topics.html#comments">View comments on this page at openacs.org</a></center></body></html>
Index: openacs-4/packages/acs-core-docs/www/tutorial-hierarchical.html
===================================================================
RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/tutorial-hierarchical.html,v
diff -u -r1.5 -r1.5.4.1
--- openacs-4/packages/acs-core-docs/www/tutorial-hierarchical.html	17 Jul 2006 05:38:32 -0000	1.5
+++ openacs-4/packages/acs-core-docs/www/tutorial-hierarchical.html	3 Feb 2008 12:07:41 -0000	1.5.4.1
@@ -1,21 +1,22 @@
-<html><head><meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"><title>Hierarchical data</title><meta name="generator" content="DocBook XSL Stylesheets V1.70.1"><link rel="home" href="index.html" title="OpenACS Core Documentation"><link rel="up" href="tutorial-advanced.html" title="Chapter�10.�Advanced Topics"><link rel="previous" href="tutorial-notifications.html" title="Notifications"><link rel="next" href="tutorial-vuh.html" title="Using .vuh files for pretty urls"><link rel="stylesheet" href="openacs.css" type="text/css"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><a href="http://openacs.org"><img src="/doc/images/alex.jpg" border="0" alt="Alex logo"></a><table width="100%" summary="Navigation header" border="0"><tr><td width="20%" align="left"><a accesskey="p" href="tutorial-notifications.html">Prev</a> </td><th width="60%" align="center">Chapter�10.�Advanced Topics</th><td width="20%" align="right"> <a accesskey="n" href="tutorial-vuh.html">Next</a></td></tr></table><hr></div><div class="sect1" lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="tutorial-hierarchical"></a>Hierarchical data</h2></div></div></div><div class="authorblurb"><p>by <a href="http://rubick.com:8002" target="_top">Jade Rubick</a>
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html><head><meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"><title>Hierarchical data</title><meta name="generator" content="DocBook XSL Stylesheets V1.60.1"><link rel="home" href="index.html" title="OpenACS Core Documentation"><link rel="up" href="tutorial-advanced.html" title="Chapter�10.�Advanced Topics"><link rel="previous" href="tutorial-notifications.html" title="Notifications"><link rel="next" href="tutorial-vuh.html" title="Using .vuh files for pretty urls"><link rel="stylesheet" href="openacs.css" type="text/css"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><a href="http://openacs.org"><img src="/doc/images/alex.jpg" border="0" alt="Alex logo"></a><table width="100%" summary="Navigation header" border="0"><tr><td width="20%" align="left"><a accesskey="p" href="tutorial-notifications.html">Prev</a> </td><th width="60%" align="center">Chapter�10.�Advanced Topics</th><td width="20%" align="right"> <a accesskey="n" href="tutorial-vuh.html">Next</a></td></tr></table><hr></div><div class="sect1" lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="tutorial-hierarchical"></a>Hierarchical data</h2></div></div><div></div></div><div class="authorblurb"><p>by <a href="http://rubick.com:8002" target="_top">Jade Rubick</a>
       with help from many people in the OpenACS community</p>
           OpenACS docs are written by the named authors, and may be edited
           by OpenACS documentation staff.
         </div><p>One of the nice things about using the OpenACS object system
     is that it has a built-in facility for tracking hierarchical data
     in an efficient way. The algorithm behind this is called
-    <code class="computeroutput">tree_sortkey.</code></p><p>Any time your tables are subclasses of the acs_objects
+    <tt class="computeroutput">tree_sortkey.</tt></p><p>Any time your tables are subclasses of the acs_objects
     table, then you automatically get the ability to structure them
     hierarchically. The way you do this is currently via the
-    <code class="computeroutput">context_id</code> column of
+    <tt class="computeroutput">context_id</tt> column of
     acs_objects (Note that there is talk of adding in a
-    <code class="computeroutput">parent_id</code> column instead, because
-    the use of <code class="computeroutput">context_id</code> has been
+    <tt class="computeroutput">parent_id</tt> column instead, because
+    the use of <tt class="computeroutput">context_id</tt> has been
     ambiguous in the past). So when you want to build your hierarchy,
     simply set the context_id values. Then, when you want to make
     hierarchical queries, you can do them as follows:</p><pre class="programlisting">
-      db_multirow categories blog_categories "
+      db_multirow categories blog_categories &quot;
       SELECT
       c.*,
       o.context_id,
@@ -26,9 +27,9 @@
       WHERE
       c.category_id = o.object_id
       ORDER BY
-      o.tree_sortkey"
+      o.tree_sortkey&quot;
     </pre><p>Note the use of the
-    <code class="computeroutput">tree_level()</code> function, which
+    <tt class="computeroutput">tree_level()</tt> function, which
     gives you the level, starting from 1, 2, 3... </p><p>Here's an example, pulling all of the children for a given
   parent:</p><pre class="programlisting">
       SELECT 
@@ -47,8 +48,8 @@
     want the parent's tree_level to start with 0, you'll want the
     subtraction in there. This is a reason you'll commonly see magic
     numbers in tree_sortkey SQL queries, like
-    <code class="computeroutput">tree_level(children.tree_sortkey) -
-    4</code>. That is basically an incorrect way to do it,
+    <tt class="computeroutput">tree_level(children.tree_sortkey) -
+    4</tt>. That is basically an incorrect way to do it,
     and subtracting the parent's tree_level is the preferred method.</p><p>This example does not include the parent. To return the entire subtree including the parent, leave out the non-equals clause:</p><pre class="programlisting">
       SELECT
       subtree.*,
@@ -59,9 +60,9 @@
       subtree.tree_sortkey between parent.tree_sortkey and tree_right(parent.tree_sortkey)
       and parent.key = :the_parent_key;
     </pre><p>If you are using the Content Repository, you get a similar
-      facility, but the <code class="computeroutput">parent_id</code>
+      facility, but the <tt class="computeroutput">parent_id</tt>
       column is already there. Note you can do joins with
-      <code class="computeroutput">tree_sortkey</code>:</p><pre class="programlisting">
+      <tt class="computeroutput">tree_sortkey</tt>:</p><pre class="programlisting">
       SELECT
       p.item_id,
       repeat(:indent_pattern, (tree_level(p.tree_sortkey) - 5)* :indent_factor) as indent,
Index: openacs-4/packages/acs-core-docs/www/tutorial-html-email.html
===================================================================
RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/tutorial-html-email.html,v
diff -u -r1.5 -r1.5.4.1
--- openacs-4/packages/acs-core-docs/www/tutorial-html-email.html	17 Jul 2006 05:38:32 -0000	1.5
+++ openacs-4/packages/acs-core-docs/www/tutorial-html-email.html	3 Feb 2008 12:07:41 -0000	1.5.4.1
@@ -1,21 +1,22 @@
-<html><head><meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"><title>Sending HTML email from your application</title><meta name="generator" content="DocBook XSL Stylesheets V1.70.1"><link rel="home" href="index.html" title="OpenACS Core Documentation"><link rel="up" href="tutorial-advanced.html" title="Chapter�10.�Advanced Topics"><link rel="previous" href="tutorial-css-layout.html" title="Laying out a page with CSS instead of tables"><link rel="next" href="tutorial-caching.html" title="Basic Caching"><link rel="stylesheet" href="openacs.css" type="text/css"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><a href="http://openacs.org"><img src="/doc/images/alex.jpg" border="0" alt="Alex logo"></a><table width="100%" summary="Navigation header" border="0"><tr><td width="20%" align="left"><a accesskey="p" href="tutorial-css-layout.html">Prev</a> </td><th width="60%" align="center">Chapter�10.�Advanced Topics</th><td width="20%" align="right"> <a accesskey="n" href="tutorial-caching.html">Next</a></td></tr></table><hr></div><div class="sect1" lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="tutorial-html-email"></a>Sending HTML email from your application</h2></div></div></div><div class="authorblurb"><p>by <a href="mailto:jade@rubick.com" target="_top">Jade Rubick</a></p>
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html><head><meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"><title>Sending HTML email from your application</title><meta name="generator" content="DocBook XSL Stylesheets V1.60.1"><link rel="home" href="index.html" title="OpenACS Core Documentation"><link rel="up" href="tutorial-advanced.html" title="Chapter�10.�Advanced Topics"><link rel="previous" href="tutorial-css-layout.html" title="Laying out a page with CSS instead of tables"><link rel="next" href="tutorial-caching.html" title="Basic Caching"><link rel="stylesheet" href="openacs.css" type="text/css"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><a href="http://openacs.org"><img src="/doc/images/alex.jpg" border="0" alt="Alex logo"></a><table width="100%" summary="Navigation header" border="0"><tr><td width="20%" align="left"><a accesskey="p" href="tutorial-css-layout.html">Prev</a> </td><th width="60%" align="center">Chapter�10.�Advanced Topics</th><td width="20%" align="right"> <a accesskey="n" href="tutorial-caching.html">Next</a></td></tr></table><hr></div><div class="sect1" lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="tutorial-html-email"></a>Sending HTML email from your application</h2></div></div><div></div></div><div class="authorblurb"><p>by <a href="mailto:jade@rubick.com" target="_top">Jade Rubick</a></p>
           OpenACS docs are written by the named authors, and may be edited
           by OpenACS documentation staff.
         </div><p>Sending email is fairly simple using the acs-mail-lite
     package. Sending HTML email is only slightly more complicated.</p><pre class="programlisting">
-    set subject "my subject"
+    set subject &quot;my subject&quot;
 
-    set message "&lt;b&gt;Bold&lt;/b&gt; not bold"
+    set message &quot;&lt;b&gt;Bold&lt;/b&gt; not bold&quot;
 
-    set from_addr "me@myemail.com"
+    set from_addr &quot;me@myemail.com&quot;
 
-    set to_addr "me@myemail.com"
+    set to_addr &quot;me@myemail.com&quot;
 
     # the from to html closes any open tags.
     set message_html [ad_html_text_convert -from html -to html $message]
 
     # some mailers chop off the last few characters.
-    append message_html "   "
+    append message_html &quot;   &quot;
     set message_text [ad_html_text_convert -from html -to text $message]
         
     set message_data [build_mime_message $message_text $message_html]
Index: openacs-4/packages/acs-core-docs/www/tutorial-newpackage.html
===================================================================
RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/tutorial-newpackage.html,v
diff -u -r1.37 -r1.37.4.1
--- openacs-4/packages/acs-core-docs/www/tutorial-newpackage.html	17 Jul 2006 05:38:32 -0000	1.37
+++ openacs-4/packages/acs-core-docs/www/tutorial-newpackage.html	3 Feb 2008 12:07:41 -0000	1.37.4.1
@@ -1,11 +1,12 @@
-<html><head><meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"><title>Creating an Application Package</title><meta name="generator" content="DocBook XSL Stylesheets V1.70.1"><link rel="home" href="index.html" title="OpenACS Core Documentation"><link rel="up" href="tutorial.html" title="Chapter�9.�Development Tutorial"><link rel="previous" href="tutorial.html" title="Chapter�9.�Development Tutorial"><link rel="next" href="tutorial-database.html" title="Setting Up Database Objects"><link rel="stylesheet" href="openacs.css" type="text/css"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><a href="http://openacs.org"><img src="/doc/images/alex.jpg" border="0" alt="Alex logo"></a><table width="100%" summary="Navigation header" border="0"><tr><td width="20%" align="left"><a accesskey="p" href="tutorial.html">Prev</a> </td><th width="60%" align="center">Chapter�9.�Development Tutorial</th><td width="20%" align="right"> <a accesskey="n" href="tutorial-database.html">Next</a></td></tr></table><hr></div><div class="sect1" lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="tutorial-newpackage"></a>Creating an Application Package</h2></div></div></div><div class="authorblurb"><p>by <a href="mailto:joel@aufrecht.org" target="_top">Joel Aufrecht</a></p>
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html><head><meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"><title>Creating an Application Package</title><meta name="generator" content="DocBook XSL Stylesheets V1.60.1"><link rel="home" href="index.html" title="OpenACS Core Documentation"><link rel="up" href="tutorial.html" title="Chapter�9.�Development Tutorial"><link rel="previous" href="tutorial.html" title="Chapter�9.�Development Tutorial"><link rel="next" href="tutorial-database.html" title="Setting Up Database Objects"><link rel="stylesheet" href="openacs.css" type="text/css"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><a href="http://openacs.org"><img src="/doc/images/alex.jpg" border="0" alt="Alex logo"></a><table width="100%" summary="Navigation header" border="0"><tr><td width="20%" align="left"><a accesskey="p" href="tutorial.html">Prev</a> </td><th width="60%" align="center">Chapter�9.�Development Tutorial</th><td width="20%" align="right"> <a accesskey="n" href="tutorial-database.html">Next</a></td></tr></table><hr></div><div class="sect1" lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="tutorial-newpackage"></a>Creating an Application Package</h2></div></div><div></div></div><div class="authorblurb"><p>by <a href="mailto:joel@aufrecht.org" target="_top">Joel Aufrecht</a></p>
           OpenACS docs are written by the named authors, and may be edited
           by OpenACS documentation staff.
-        </div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="tutorial-picture"></a>The intended page map</h3></div></div></div><div class="mediaobject"><img src="images/openacs-best-practice.png"></div></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id1035834"></a>Overview</h3></div></div></div><p>To start developing new code in OpenACS, we build a new package. A package 
+        </div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="tutorial-picture"></a>The intended page map</h3></div></div><div></div></div><div class="mediaobject"><img src="../images/openacs-best-practice.png"></div></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id2965194"></a>Overview</h3></div></div><div></div></div><p>To start developing new code in OpenACS, we build a new package. A package 
       is a a discrete collection of web pages, tcl code, and database tables and procedures.
-      A package with user interface is called an <span class="strong"><strong>application</strong></span>; 
+      A package with user interface is called an <span class="strong">application</span>; 
       a package which provides functions to other packages and has no direct interface, a
-      <span class="strong"><strong>service</strong></span>.  A package can be installed, upgraded, and 
+      <span class="strong">service</span>.  A package can be installed, upgraded, and 
       removed.  It communicates with other packages through an API.  This chapter walks you through 
       the minimum steps to create a useful package, including writing documentation, setting up 
       database tables and procedures, writing web pages, debugging, and automatic regression testing.
@@ -17,11 +18,11 @@
         right now.  Code that is temporary hackage is clearly marked.
       </p><p>In this tutorial, we will make an application package for
     displaying a list of text notes.
-</p></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id1114939"></a>Before you begin</h3></div></div></div><p>You will need:</p><div class="itemizedlist"><ul type="disc"><li><p>A computer with a working installation of
+</p></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id2819150"></a>Before you begin</h3></div></div><div></div></div><p>You will need:</p><div class="itemizedlist"><ul type="disc"><li><p>A computer with a working installation of
 	  OpenACS.  If you don't have this, see <a href="install-overview.html" title="Chapter�2.�Installation Overview">Chapter�2, <i>Installation Overview</i></a>.
 	  </p></li><li><p>Example files, which are included in the
-standard OpenACS 5.2.3rc1 distribution.
-	  </p></li></ul></div><div class="figure"><a name="id1117602"></a><p class="title"><b>Figure�9.1.�Assumptions in this section</b></p><div class="figure-contents"><div class="informaltable"><table cellspacing="0" border="1"><colgroup><col><col></colgroup><tbody><tr><td>Fully qualified domain name of your server</td><td><span class="replaceable"><span class="replaceable">yourserver.test</span></span></td></tr><tr><td>URL of your server</td><td><span class="replaceable"><span class="replaceable">http://yourserver.test:8000</span></span></td></tr><tr><td>Name of development account</td><td><span class="replaceable"><span class="replaceable">$OPENACS_SERVICE_NAME</span></span></td></tr><tr><td>New Package key</td><td><span class="replaceable"><span class="replaceable">myfirstpackage</span></span></td></tr></tbody></table></div></div></div><br class="figure-break"></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id1000509"></a>Use the APM to initialize a new package</h3></div></div></div><p>We use the <a href="packages.html" target="_top">ACS Package Manager</a> (APM) to add, remove, and
+standard OpenACS 5.4.0 distribution.
+	  </p></li></ul></div><div class="figure"><a name="id2819182"></a><p class="title"><b>Figure�9.1.�Assumptions in this section</b></p><div class="informaltable"><table cellspacing="0" border="1"><colgroup><col><col></colgroup><tbody><tr><td>Fully qualified domain name of your server</td><td><span class="replaceable"><span class="replaceable">yourserver.test</span></span></td></tr><tr><td>URL of your server</td><td><span class="replaceable"><span class="replaceable">http://yourserver.test:8000</span></span></td></tr><tr><td>Name of development account</td><td><span class="replaceable"><span class="replaceable">$OPENACS_SERVICE_NAME</span></span></td></tr><tr><td>New Package key</td><td><span class="replaceable"><span class="replaceable">myfirstpackage</span></span></td></tr></tbody></table></div></div></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id2819267"></a>Use the APM to initialize a new package</h3></div></div><div></div></div><p>We use the <a href="packages.html" target="_top">ACS Package Manager</a> (APM) to add, remove, and
     upgrade packages.  It handles package meta-data, such as lists of
     files that belong in the package.  Each package is uniquely
     identified by a package key.  To start developing a new
@@ -30,31 +31,31 @@
     the initial directories, meta-information files, and database
     entries for a new package.  (<a href="apm-requirements.html" target="_top">More info on APM</a>)
 </p><div class="orderedlist"><ol type="1"><li><p>Browse to
-        <code class="computeroutput">http://<span class="replaceable"><span class="replaceable">yourserver:8000</span></span><a href="/acs-admin/apm" target="_top">/acs-admin/apm</a></code>.
-</p></li><li><p>Click <code class="computeroutput">Create a New Package</code>.</p><p>Fill in the fields listed below.   <span class="strong"><strong>Ignore the rest (and leave the check boxes alone).</strong></span>
+        <tt class="computeroutput">http://<span class="replaceable"><span class="replaceable">yourserver:8000</span></span><a href="/acs-admin/apm" target="_top">/acs-admin/apm</a></tt>.
+</p></li><li><p>Click <tt class="computeroutput">Create a New Package</tt>.</p><p>Fill in the fields listed below.   <span class="strong">Ignore the rest (and leave the check boxes alone).</span>
         (Some will change automatically.  Don't mess with those.)
 </p><div class="itemizedlist"><ul type="disc"><li><p>
-              <code class="computeroutput">Package Key</code>:
-              <strong class="userinput"><code>myfirstpackage</code></strong></p></li><li><p>
-              <code class="computeroutput">Package Name</code>:
-              <strong class="userinput"><code>My First Package</code></strong>
+              <tt class="computeroutput">Package Key</tt>:
+              <b class="userinput"><tt>myfirstpackage</tt></b></p></li><li><p>
+              <tt class="computeroutput">Package Name</tt>:
+              <b class="userinput"><tt>My First Package</tt></b>
             </p></li><li><p>
-              <code class="computeroutput">Package Plural</code>:
-              <strong class="userinput"><code>My First Package</code></strong></p></li><li><p>
-              <code class="computeroutput">Package Type</code>:
-              <strong class="userinput"><code>Application</code></strong>
+              <tt class="computeroutput">Package Plural</tt>:
+              <b class="userinput"><tt>My First Package</tt></b></p></li><li><p>
+              <tt class="computeroutput">Package Type</tt>:
+              <b class="userinput"><tt>Application</tt></b>
             </p></li><li><p>	  
-              <code class="computeroutput">Initial Version</code>:
-              <strong class="userinput"><code>0.1d</code></strong>
-            </p></li><li><p><code class="computeroutput">Summary</code>:
-              <strong class="userinput"><code>This is my first package.</code></strong>
+              <tt class="computeroutput">Initial Version</tt>:
+              <b class="userinput"><tt>0.1d</tt></b>
+            </p></li><li><p><tt class="computeroutput">Summary</tt>:
+              <b class="userinput"><tt>This is my first package.</tt></b>
             </p></li></ul></div><p>At the bottom, click
-        <code class="computeroutput"><span class="guibutton"><span class="guibutton">Create Package</span></span></code>.
+        <tt class="computeroutput"><span class="guibutton"><span class="guibutton">Create Package</span></span></tt>.
         </p></li></ol></div><p>This creates a package rooted at
-          <code class="computeroutput">/var/lib/aolserver/<span class="replaceable"><span class="replaceable">$OPENACS_SERVICE_NAME</span></span>/packages/<span class="replaceable"><span class="replaceable">myfirstpackage</span></span></code>.
-          This is the "home directory" of our new package, and all
+          <tt class="computeroutput">/var/lib/aolserver/<span class="replaceable"><span class="replaceable">$OPENACS_SERVICE_NAME</span></span>/packages/<span class="replaceable"><span class="replaceable">myfirstpackage</span></span></tt>.
+          This is the &quot;home directory&quot; of our new package, and all
           files in the package will be within this directory. <a href="packages.html" target="_top">More on the structure of
-          packages</a>). </p></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id1004834"></a>Add an Application Instance to the Server</h3></div></div></div><p>In order to see your work in progress, you must create a
+          packages</a>). </p></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id2815265"></a>Add an Application Instance to the Server</h3></div></div><div></div></div><p>In order to see your work in progress, you must create a
       map between the URL space of incoming requests and the package application instance.
       You do this by adding the application in the main site administration).  This
       creates a link between the incoming URL requests and an
@@ -63,9 +64,9 @@
       code and tables.  This requires that a package be developed
       <span class="emphasis"><em>package-aware</em></span>.  You'll see how to do that
       in this tutorial.</p><div class="orderedlist"><ol type="1"><li><p>Browse to
-<code class="computeroutput"><span class="replaceable"><span class="replaceable">http://yourserver.test:8000</span></span><a href="/admin/applications/application-add" target="_top">/admin/applications/application-add/</a></code>.</p></li><li><p>Choose "My First Package" from the list and click OK (the other fields are optional).</p></li></ol></div><p>By mounting the package, we've caused all requests to
-      <code class="computeroutput">http://yourserver.test:8000/my-first-package</code>
-      to be satisfied from the files at <code class="computeroutput">/var/lib/aolserver/$OPENACS_SERVICE_NAME/packages/myfirstpackage/www</code>.</p></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id962757"></a>Quick start</h3></div></div></div><p>The remainder of the tutorial walks you through each file one at a time as you create the package.  You can skip all this, and get a working package, by doing the following:</p><pre class="screen">cd /var/lib/aolserver/<span class="replaceable"><span class="replaceable">$OPENACS_SERVICE_NAME</span></span>/packages/acs-core-docs/www/files/tutorial
+<tt class="computeroutput"><span class="replaceable"><span class="replaceable">http://yourserver.test:8000</span></span><a href="/admin/applications/application-add" target="_top">/admin/applications/application-add/</a></tt>.</p></li><li><p>Choose &quot;My First Package&quot; from the list and click OK (the other fields are optional).</p></li></ol></div><p>By mounting the package, we've caused all requests to
+      <tt class="computeroutput">http://yourserver.test:8000/myfirstpackage</tt>
+      to be satisfied from the files at <tt class="computeroutput">/var/lib/aolserver/$OPENACS_SERVICE_NAME/packages/myfirstpackage/www</tt>.</p></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id3025883"></a>Quick start</h3></div></div><div></div></div><p>The remainder of the tutorial walks you through each file one at a time as you create the package.  You can skip all this, and get a working package, by doing the following:</p><pre class="screen">cd /var/lib/aolserver/<span class="replaceable"><span class="replaceable">$OPENACS_SERVICE_NAME</span></span>/packages/acs-core-docs/www/files/tutorial
 psql <span class="replaceable"><span class="replaceable">$OPENACS_SERVICE_NAME</span></span> -f myfirstpackage-create.sql
 cp note-edit.* note-delete.tcl index.* ../../../../myfirstpackage/www/
 mkdir ../../../../myfirstpackage/lib
Index: openacs-4/packages/acs-core-docs/www/tutorial-notifications.html
===================================================================
RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/tutorial-notifications.html,v
diff -u -r1.10 -r1.10.4.1
--- openacs-4/packages/acs-core-docs/www/tutorial-notifications.html	17 Jul 2006 05:38:32 -0000	1.10
+++ openacs-4/packages/acs-core-docs/www/tutorial-notifications.html	3 Feb 2008 12:07:41 -0000	1.10.4.1
@@ -1,4 +1,5 @@
-<html><head><meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"><title>Notifications</title><meta name="generator" content="DocBook XSL Stylesheets V1.70.1"><link rel="home" href="index.html" title="OpenACS Core Documentation"><link rel="up" href="tutorial-advanced.html" title="Chapter�10.�Advanced Topics"><link rel="previous" href="tutorial-upgrades.html" title="Distributing upgrades of your package"><link rel="next" href="tutorial-hierarchical.html" title="Hierarchical data"><link rel="stylesheet" href="openacs.css" type="text/css"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><a href="http://openacs.org"><img src="/doc/images/alex.jpg" border="0" alt="Alex logo"></a><table width="100%" summary="Navigation header" border="0"><tr><td width="20%" align="left"><a accesskey="p" href="tutorial-upgrades.html">Prev</a> </td><th width="60%" align="center">Chapter�10.�Advanced Topics</th><td width="20%" align="right"> <a accesskey="n" href="tutorial-hierarchical.html">Next</a></td></tr></table><hr></div><div class="sect1" lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="tutorial-notifications"></a>Notifications</h2></div></div></div><div class="authorblurb"><p>by <a href="mailto:dave@student.usyd.edu.au" target="_top">David Bell</a> and <a href="mailto:simon@collaboraid.net" target="_top">Simon Carstensen</a></p>
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html><head><meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"><title>Notifications</title><meta name="generator" content="DocBook XSL Stylesheets V1.60.1"><link rel="home" href="index.html" title="OpenACS Core Documentation"><link rel="up" href="tutorial-advanced.html" title="Chapter�10.�Advanced Topics"><link rel="previous" href="tutorial-upgrades.html" title="Distributing upgrades of your package"><link rel="next" href="tutorial-hierarchical.html" title="Hierarchical data"><link rel="stylesheet" href="openacs.css" type="text/css"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><a href="http://openacs.org"><img src="/doc/images/alex.jpg" border="0" alt="Alex logo"></a><table width="100%" summary="Navigation header" border="0"><tr><td width="20%" align="left"><a accesskey="p" href="tutorial-upgrades.html">Prev</a> </td><th width="60%" align="center">Chapter�10.�Advanced Topics</th><td width="20%" align="right"> <a accesskey="n" href="tutorial-hierarchical.html">Next</a></td></tr></table><hr></div><div class="sect1" lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="tutorial-notifications"></a>Notifications</h2></div></div><div></div></div><div class="authorblurb"><p>by <a href="mailto:dave@student.usyd.edu.au" target="_top">David Bell</a> and <a href="mailto:simon@collaboraid.net" target="_top">Simon Carstensen</a></p>
           OpenACS docs are written by the named authors, and may be edited
           by OpenACS documentation staff.
         </div><p>The notifications package allows you to send notifications through any 
@@ -173,9 +174,9 @@
             -notif_text $new_content
     </pre><p>This code is placed in the tcl procedure that creates blog
     entries, right after the entry gets created in the code. The
-    <code class="computeroutput">$blog(package_id)</code> is the OpenACS
+    <tt class="computeroutput">$blog(package_id)</tt> is the OpenACS
     object_id of the Weblogger instance to which the entry has been
-    posted to and the <code class="computeroutput">$new_content</code> is
+    posted to and the <tt class="computeroutput">$new_content</tt> is
     the content of the entry. This example uses the package_id for the
     object_id, which results in setting up notifications for all
     changes for blogger entries in this package. However, if you
@@ -184,7 +185,7 @@
     you can look at it for an example.</p><p>The final step is to setup the notification subscription process. In this 
     example we want to let a user find out when a new entry has been posted to the blog. To 
     do this we put a link on the blog that allows them to subscribe to notifications of new 
-    entries. The notifications/requests-new page is very handy in this situation.</p><p>Such a link can be created using the <code class="computeroutput">notification::display::request_widget</code> 
+    entries. The notifications/requests-new page is very handy in this situation.</p><p>Such a link can be created using the <tt class="computeroutput">notification::display::request_widget</tt> 
     proc:</p><pre class="programlisting">
     set notification_chunk [notification::display::request_widget \
         -type lars_blogger_notif \
@@ -195,10 +196,10 @@
     </pre><p>which will return something like
 
     </p><pre class="programlisting">
-    You may &lt;a href="/notifications/request-new?..."&gt;request notification&lt;/a&gt; for Weblogger.</pre><p>
+    You may &lt;a href=&quot;/notifications/request-new?...&quot;&gt;request notification&lt;/a&gt; for Weblogger.</pre><p>
 
-    which can be readily put on the blog index page. The <code class="computeroutput">pretty_name</code> 
-    parameter is what appears at the end of the text returned (i.e. "... request notification&lt;/a&gt; for pretty_name"), 
-    The <code class="computeroutput">url</code> parameter should be set to the address we want the user 
+    which can be readily put on the blog index page. The <tt class="computeroutput">pretty_name</tt> 
+    parameter is what appears at the end of the text returned (i.e. &quot;... request notification&lt;/a&gt; for pretty_name&quot;), 
+    The <tt class="computeroutput">url</tt> parameter should be set to the address we want the user 
     to be redirected to after they have finished the subscription process.</p><p>This should be all you need to implement a notification system. For more examples
     look at the forums package.</p></div><div class="navfooter"><hr><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="tutorial-upgrades.html">Prev</a> </td><td width="20%" align="center"><a accesskey="h" href="index.html">Home</a></td><td width="40%" align="right"> <a accesskey="n" href="tutorial-hierarchical.html">Next</a></td></tr><tr><td width="40%" align="left">Distributing upgrades of your package </td><td width="20%" align="center"><a accesskey="u" href="tutorial-advanced.html">Up</a></td><td width="40%" align="right"> Hierarchical data</td></tr></table><hr><address><a href="mailto:docs@openacs.org">docs@openacs.org</a></address></div><a name="comments"></a><center><a href="http://openacs.org/doc/current/tutorial-notifications.html#comments">View comments on this page at openacs.org</a></center></body></html>
Index: openacs-4/packages/acs-core-docs/www/tutorial-pages.html
===================================================================
RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/tutorial-pages.html,v
diff -u -r1.37 -r1.37.4.1
--- openacs-4/packages/acs-core-docs/www/tutorial-pages.html	17 Jul 2006 05:38:32 -0000	1.37
+++ openacs-4/packages/acs-core-docs/www/tutorial-pages.html	3 Feb 2008 12:07:41 -0000	1.37.4.1
@@ -1,50 +1,51 @@
-<html><head><meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"><title>Creating Web Pages</title><meta name="generator" content="DocBook XSL Stylesheets V1.70.1"><link rel="home" href="index.html" title="OpenACS Core Documentation"><link rel="up" href="tutorial.html" title="Chapter�9.�Development Tutorial"><link rel="previous" href="tutorial-database.html" title="Setting Up Database Objects"><link rel="next" href="tutorial-debug.html" title="Debugging and Automated Testing"><link rel="stylesheet" href="openacs.css" type="text/css"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><a href="http://openacs.org"><img src="/doc/images/alex.jpg" border="0" alt="Alex logo"></a><table width="100%" summary="Navigation header" border="0"><tr><td width="20%" align="left"><a accesskey="p" href="tutorial-database.html">Prev</a> </td><th width="60%" align="center">Chapter�9.�Development Tutorial</th><td width="20%" align="right"> <a accesskey="n" href="tutorial-debug.html">Next</a></td></tr></table><hr></div><div class="sect1" lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="tutorial-pages"></a>Creating Web Pages</h2></div></div></div><div class="authorblurb"><p>by <a href="mailto:joel@aufrecht.org" target="_top">Joel Aufrecht</a></p>
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html><head><meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"><title>Creating Web Pages</title><meta name="generator" content="DocBook XSL Stylesheets V1.60.1"><link rel="home" href="index.html" title="OpenACS Core Documentation"><link rel="up" href="tutorial.html" title="Chapter�9.�Development Tutorial"><link rel="previous" href="tutorial-database.html" title="Setting Up Database Objects"><link rel="next" href="tutorial-debug.html" title="Debugging and Automated Testing"><link rel="stylesheet" href="openacs.css" type="text/css"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><a href="http://openacs.org"><img src="/doc/images/alex.jpg" border="0" alt="Alex logo"></a><table width="100%" summary="Navigation header" border="0"><tr><td width="20%" align="left"><a accesskey="p" href="tutorial-database.html">Prev</a> </td><th width="60%" align="center">Chapter�9.�Development Tutorial</th><td width="20%" align="right"> <a accesskey="n" href="tutorial-debug.html">Next</a></td></tr></table><hr></div><div class="sect1" lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="tutorial-pages"></a>Creating Web Pages</h2></div></div><div></div></div><div class="authorblurb"><p>by <a href="mailto:joel@aufrecht.org" target="_top">Joel Aufrecht</a></p>
           OpenACS docs are written by the named authors, and may be edited
           by OpenACS documentation staff.
-        </div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id1001528"></a>Install some API</h3></div></div></div><p>As a workaround for missing content-repository functionality, copy a provided file into the directory for tcl files:</p><pre class="screen">
-    <span class="action"><span class="action">cp /var/lib/aolserver/<span class="replaceable"><span class="replaceable">$OPENACS_SERVICE_NAME</span></span>/packages/acs-core-docs/www/files/note-procs.tcl /var/lib/aolserver/<span class="replaceable"><span class="replaceable">$OPENACS_SERVICE_NAME</span></span>/packages/myfirstpackage/tcl/</span></span></pre><p>To make this file take effect, go to the <a href="/acs-admin/apm" target="_top">APM</a> and choose "Reload changed" for "MyFirstPackage".</p></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id963956"></a>Page Map</h3></div></div></div><p>Our package will have two visible pages.  The first shows a list of all objects; the second shows a single object in view or edit mode, and can also be used to add an object.  The index page will display the list, but since we might reuse the list later, we'll put it in a seperate file and include it on the index page.</p><div class="figure"><a name="id1010121"></a><p class="title"><b>Figure�9.5.�Page Map</b></p><div class="figure-contents"><div class="mediaobject" align="center"><img src="images/tutorial-page-map.png" align="middle" alt="Page Map"></div></div></div><br class="figure-break"></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id1111253"></a>Build the "Index" page</h3></div></div></div><p>Each user-visible page in your package has, typically,
-      three parts.  The  <code class="computeroutput">tcl</code> file
+        </div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id2944012"></a>Install some API</h3></div></div><div></div></div><p>As a workaround for missing content-repository functionality, copy a provided file into the directory for tcl files:</p><pre class="screen">
+    <span class="action"><span class="action">cp /var/lib/aolserver/<span class="replaceable"><span class="replaceable">$OPENACS_SERVICE_NAME</span></span>/packages/acs-core-docs/www/files/tutorial/note-procs.tcl /var/lib/aolserver/<span class="replaceable"><span class="replaceable">$OPENACS_SERVICE_NAME</span></span>/packages/myfirstpackage/tcl/</span></span></pre><p>To make this file take effect, go to the <a href="/acs-admin/apm" target="_top">APM</a> and choose &quot;Reload changed&quot; for &quot;MyFirstPackage&quot;.</p></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id2901983"></a>Page Map</h3></div></div><div></div></div><p>Our package will have two visible pages.  The first shows a list of all objects; the second shows a single object in view or edit mode, and can also be used to add an object.  The index page will display the list, but since we might reuse the list later, we'll put it in a seperate file and include it on the index page.</p><div class="figure"><a name="id2950734"></a><p class="title"><b>Figure�9.5.�Page Map</b></p><div class="mediaobject" align="center"><img src="../images/tutorial-page-map.png" align="middle" alt="Page Map"></div></div></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id2912534"></a>Build the &quot;Index&quot; page</h3></div></div><div></div></div><p>Each user-visible page in your package has, typically,
+      three parts.  The  <tt class="computeroutput">tcl</tt> file
       holds the procedural logic for the page, including TCL and
       database-independent SQL code, and does things like
       check permissions, invoke the database queries, and modify
-      variables, and the <code class="computeroutput">adp</code> page
-      holds html.  The <code class="computeroutput">-postgres.xql</code>
-      and <code class="computeroutput">-oracle.xql</code> files contains
+      variables, and the <tt class="computeroutput">adp</tt> page
+      holds html.  The <tt class="computeroutput">-postgres.xql</tt>
+      and <tt class="computeroutput">-oracle.xql</tt> files contains
       database-specific SQL.  The default page in any directory is
-      <code class="computeroutput">index</code>, so we'll build that
-      first, starting with the tcl file:</p><pre class="screen">[$OPENACS_SERVICE_NAME postgresql]$<strong class="userinput"><code> cd /var/lib/aolserver/<span class="replaceable"><span class="replaceable">$OPENACS_SERVICE_NAME</span></span>/packages/myfirstpackages/www</code></strong>
-[$OPENACS_SERVICE_NAME www]$ <strong class="userinput"><code>emacs index.tcl</code></strong></pre><p>Paste this into the file.</p><pre class="programlisting">ad_page_contract {
+      <tt class="computeroutput">index</tt>, so we'll build that
+      first, starting with the tcl file:</p><pre class="screen">[$OPENACS_SERVICE_NAME postgresql]$<b class="userinput"><tt> cd /var/lib/aolserver/<span class="replaceable"><span class="replaceable">$OPENACS_SERVICE_NAME</span></span>/packages/myfirstpackages/www</tt></b>
+[$OPENACS_SERVICE_NAME www]$ <b class="userinput"><tt>emacs index.tcl</tt></b></pre><p>Paste this into the file.</p><pre class="programlisting">ad_page_contract {
     This is the main page for the package.  It displays all of the Notes and provides links to edit them and to create new Notes.
 
     @author Your Name (you@example.com)
     @cvs-id $Id$
 }
 
 set page_title [ad_conn instance_name]
-set context [list]</pre><p>Now <code class="computeroutput">index.adp</code>:</p><pre class="programlisting">&lt;master&gt;
-  &lt;property name="title"&gt;@page_title;noquote@&lt;/property&gt;
-  &lt;property name="context"&gt;@context;noquote@&lt;/property&gt;
-&lt;include src="/packages/myfirstpackage/lib/note-list"&gt;</pre><p>You can test your work by <a href="/myfirstpackage/" target="_top">viewing the page</a>.</p><p>The index page includes the list page, which we put in /lib instead of /www to designate that it's available for reuse by other packages.</p><pre class="screen">[$OPENACS_SERVICE_NAME www]$<strong class="userinput"><code> mkdir /var/lib/aolserver/<span class="replaceable"><span class="replaceable">$OPENACS_SERVICE_NAME</span></span>/packages/myfirstpackage/lib</code></strong>
-[$OPENACS_SERVICE_NAME www]$<strong class="userinput"><code> cd /var/lib/aolserver/<span class="replaceable"><span class="replaceable">$OPENACS_SERVICE_NAME</span></span>/packages/myfirstpackage/lib</code></strong>
-[$OPENACS_SERVICE_NAME lib]$ <strong class="userinput"><code>emacs note-list.tcl</code></strong></pre><pre class="programlisting">template::list::create \
+set context [list]</pre><p>Now <tt class="computeroutput">index.adp</tt>:</p><pre class="programlisting">&lt;master&gt;
+  &lt;property name=&quot;title&quot;&gt;@page_title;noquote@&lt;/property&gt;
+  &lt;property name=&quot;context&quot;&gt;@context;noquote@&lt;/property&gt;
+&lt;include src=&quot;/packages/myfirstpackage/lib/note-list&quot;&gt;</pre><p>The index page includes the list page, which we put in /lib instead of /www to designate that it's available for reuse by other packages.</p><pre class="screen">[$OPENACS_SERVICE_NAME www]$<b class="userinput"><tt> mkdir /var/lib/aolserver/<span class="replaceable"><span class="replaceable">$OPENACS_SERVICE_NAME</span></span>/packages/myfirstpackage/lib</tt></b>
+[$OPENACS_SERVICE_NAME www]$<b class="userinput"><tt> cd /var/lib/aolserver/<span class="replaceable"><span class="replaceable">$OPENACS_SERVICE_NAME</span></span>/packages/myfirstpackage/lib</tt></b>
+[$OPENACS_SERVICE_NAME lib]$ <b class="userinput"><tt>emacs note-list.tcl</tt></b></pre><pre class="programlisting">template::list::create \
     -name notes \
     -multirow notes \
-    -actions { "Add a Note" note-edit} \
+    -actions { &quot;Add a Note&quot; note-edit} \
     -elements {
 	edit {
 	    link_url_col edit_url
 	    display_template {
-		&lt;img src="/resources/acs-subsite/Edit16.gif" width="16" height="16" border="0"&gt;
+		&lt;img src=&quot;/resources/acs-subsite/Edit16.gif&quot; width=&quot;16&quot; height=&quot;16&quot; border=&quot;0&quot;&gt;
 	    }
 	    sub_class narrow
 	}
 	title {
-	    label "Title"
+	    label &quot;Title&quot;
 	}
 	delete {
 	    link_url_col delete_url 
 	    display_template {
-		&lt;img src="/resources/acs-subsite/Delete16.gif" width="16" height="16" border="0"&gt;
+		&lt;img src=&quot;/resources/acs-subsite/Delete16.gif&quot; width=&quot;16&quot; height=&quot;16&quot; border=&quot;0&quot;&gt;
 	    }
 	    sub_class narrow
 	}
@@ -61,11 +62,11 @@
                mfp_notesx n
         where  n.revision_id = ci.live_revision
     } {
-	set edit_url [export_vars -base "note-edit" {item_id}]
-	set delete_url [export_vars -base "note-delete" {item_id}]
-    }</pre><pre class="screen">[$OPENACS_SERVICE_NAME lib]$ <strong class="userinput"><code>emacs note-list.adp</code></strong></pre><pre class="programlisting">&lt;listtemplate name="notes"&gt;&lt;/listtemplate&gt;</pre><p>Create the add/edit page.  If note_id is passed in,
-      it display that note, and can change to edit mode if appropriate.  Otherwise, it presents a form for adding notes.</p><pre class="screen">[$OPENACS_SERVICE_NAME lib]$<strong class="userinput"><code> cd /var/lib/aolserver/<span class="replaceable"><span class="replaceable">$OPENACS_SERVICE_NAME</span></span>/packages/myfirstpackage/www</code></strong>
-[$OPENACS_SERVICE_NAME www]$ <strong class="userinput"><code>emacs note-edit.tcl</code></strong></pre><pre class="programlisting">ad_page_contract {
+	set edit_url [export_vars -base &quot;note-edit&quot; {item_id}]
+	set delete_url [export_vars -base &quot;note-delete&quot; {item_id}]
+    }</pre><pre class="screen">[$OPENACS_SERVICE_NAME lib]$ <b class="userinput"><tt>emacs note-list.adp</tt></b></pre><pre class="programlisting">&lt;listtemplate name=&quot;notes&quot;&gt;&lt;/listtemplate&gt;</pre><p>You can test your work by <a href="/myfirstpackage/" target="_top">viewing the page</a>.</p><p>Create the add/edit page.  If note_id is passed in,
+      it display that note, and can change to edit mode if appropriate.  Otherwise, it presents a form for adding notes.</p><pre class="screen">[$OPENACS_SERVICE_NAME lib]$<b class="userinput"><tt> cd /var/lib/aolserver/<span class="replaceable"><span class="replaceable">$OPENACS_SERVICE_NAME</span></span>/packages/myfirstpackage/www</tt></b>
+[$OPENACS_SERVICE_NAME www]$ <b class="userinput"><tt>emacs note-edit.tcl</tt></b></pre><pre class="programlisting">ad_page_contract {
     This is the view-edit page for notes.
 
     @author Your Name (you@example.com)
@@ -82,7 +83,7 @@
 } -new_request {
     auth::require_login
     permission::require_permission -object_id [ad_conn package_id] -privilege create
-    set page_title "Add a Note"
+    set page_title &quot;Add a Note&quot;
     set context [list $page_title]
 } -edit_request {
     auth::require_login
@@ -93,7 +94,7 @@
 
     set title $note_array(title)
 
-    set page_title "Edit a Note"
+    set page_title &quot;Edit a Note&quot;
     set context [list $page_title]
 } -new_data {
     mfp::note::add \
@@ -103,15 +104,15 @@
 	-item_id $item_id \
 	-title $title
 } -after_submit {
-    ad_returnredirect "."
+    ad_returnredirect &quot;.&quot;
     ad_script_abort
-}</pre><pre class="screen">[$OPENACS_SERVICE_NAME www]$ <strong class="userinput"><code>emacs note-edit.adp</code></strong></pre><pre class="programlisting">&lt;master&gt;
-  &lt;property name="title"&gt;@page_title;noquote@&lt;/property&gt;
-  &lt;property name="context"&gt;@context;noquote@&lt;/property&gt;
-  &lt;property name="focus"&gt;note.title&lt;/property&gt;
+}</pre><pre class="screen">[$OPENACS_SERVICE_NAME www]$ <b class="userinput"><tt>emacs note-edit.adp</tt></b></pre><pre class="programlisting">&lt;master&gt;
+  &lt;property name=&quot;title&quot;&gt;@page_title;noquote@&lt;/property&gt;
+  &lt;property name=&quot;context&quot;&gt;@context;noquote@&lt;/property&gt;
+  &lt;property name=&quot;focus&quot;&gt;note.title&lt;/property&gt;
   
-&lt;formtemplate id="note"&gt;&lt;/formtemplate&gt;</pre><p>And the delete page.  Since it has no UI, there is only a
-     tcl page, and no adp page.</p><pre class="screen">[$OPENACS_SERVICE_NAME www]$ <strong class="userinput"><code>emacs note-delete.tcl</code></strong></pre><pre class="programlisting">ad_page_contract {
+&lt;formtemplate id=&quot;note&quot;&gt;&lt;/formtemplate&gt;</pre><p>And the delete page.  Since it has no UI, there is only a
+     tcl page, and no adp page.</p><pre class="screen">[$OPENACS_SERVICE_NAME www]$ <b class="userinput"><tt>emacs note-delete.tcl</tt></b></pre><pre class="programlisting">ad_page_contract {
     This deletes a note
 
     @author Your Name (you@example.com)
@@ -126,7 +127,7 @@
 set title [item::get_title $item_id]
 mfp::note::delete -item_id $item_id
 
-ad_returnredirect "."
+ad_returnredirect &quot;.&quot;
 # stop running this code, since we're redirecting
 abort
 </pre></div></div><div class="navfooter"><hr><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="tutorial-database.html">Prev</a> </td><td width="20%" align="center"><a accesskey="h" href="index.html">Home</a></td><td width="40%" align="right"> <a accesskey="n" href="tutorial-debug.html">Next</a></td></tr><tr><td width="40%" align="left">Setting Up Database Objects </td><td width="20%" align="center"><a accesskey="u" href="tutorial.html">Up</a></td><td width="40%" align="right"> Debugging and Automated Testing</td></tr></table><hr><address><a href="mailto:docs@openacs.org">docs@openacs.org</a></address></div><a name="comments"></a><center><a href="http://openacs.org/doc/current/tutorial-pages.html#comments">View comments on this page at openacs.org</a></center></body></html>
Index: openacs-4/packages/acs-core-docs/www/tutorial-parameters.html
===================================================================
RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/tutorial-parameters.html,v
diff -u -r1.3 -r1.3.4.1
--- openacs-4/packages/acs-core-docs/www/tutorial-parameters.html	17 Jul 2006 05:38:32 -0000	1.3
+++ openacs-4/packages/acs-core-docs/www/tutorial-parameters.html	3 Feb 2008 12:07:41 -0000	1.3.4.1
@@ -1,4 +1,5 @@
-<html><head><meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"><title>Adding in parameters for your package</title><meta name="generator" content="DocBook XSL Stylesheets V1.70.1"><link rel="home" href="index.html" title="OpenACS Core Documentation"><link rel="up" href="tutorial-advanced.html" title="Chapter�10.�Advanced Topics"><link rel="previous" href="tutorial-wysiwyg-editor.html" title="Enabling WYSIWYG"><link rel="next" href="tutorial-upgrade-scripts.html" title="Writing upgrade scripts"><link rel="stylesheet" href="openacs.css" type="text/css"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><a href="http://openacs.org"><img src="/doc/images/alex.jpg" border="0" alt="Alex logo"></a><table width="100%" summary="Navigation header" border="0"><tr><td width="20%" align="left"><a accesskey="p" href="tutorial-wysiwyg-editor.html">Prev</a> </td><th width="60%" align="center">Chapter�10.�Advanced Topics</th><td width="20%" align="right"> <a accesskey="n" href="tutorial-upgrade-scripts.html">Next</a></td></tr></table><hr></div><div class="sect1" lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="tutorial-parameters"></a>Adding in parameters for your package</h2></div></div></div><p>Each instance of a package can have paramaters associated
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html><head><meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"><title>Adding in parameters for your package</title><meta name="generator" content="DocBook XSL Stylesheets V1.60.1"><link rel="home" href="index.html" title="OpenACS Core Documentation"><link rel="up" href="tutorial-advanced.html" title="Chapter�10.�Advanced Topics"><link rel="previous" href="tutorial-wysiwyg-editor.html" title="Enabling WYSIWYG"><link rel="next" href="tutorial-upgrade-scripts.html" title="Writing upgrade scripts"><link rel="stylesheet" href="openacs.css" type="text/css"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><a href="http://openacs.org"><img src="/doc/images/alex.jpg" border="0" alt="Alex logo"></a><table width="100%" summary="Navigation header" border="0"><tr><td width="20%" align="left"><a accesskey="p" href="tutorial-wysiwyg-editor.html">Prev</a> </td><th width="60%" align="center">Chapter�10.�Advanced Topics</th><td width="20%" align="right"> <a accesskey="n" href="tutorial-upgrade-scripts.html">Next</a></td></tr></table><hr></div><div class="sect1" lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="tutorial-parameters"></a>Adding in parameters for your package</h2></div></div><div></div></div><p>Each instance of a package can have paramaters associated
     with it. These are like preferences, and they can be set by the
     administrator for each application to change the behavior of your
     application. </p><p>To add parameters for your package, go to the Automatic
Index: openacs-4/packages/acs-core-docs/www/tutorial-schedule-procs.html
===================================================================
RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/tutorial-schedule-procs.html,v
diff -u -r1.4 -r1.4.4.1
--- openacs-4/packages/acs-core-docs/www/tutorial-schedule-procs.html	17 Jul 2006 05:38:32 -0000	1.4
+++ openacs-4/packages/acs-core-docs/www/tutorial-schedule-procs.html	3 Feb 2008 12:07:41 -0000	1.4.4.1
@@ -1,4 +1,5 @@
-<html><head><meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"><title>Scheduled Procedures</title><meta name="generator" content="DocBook XSL Stylesheets V1.70.1"><link rel="home" href="index.html" title="OpenACS Core Documentation"><link rel="up" href="tutorial-advanced.html" title="Chapter�10.�Advanced Topics"><link rel="previous" href="tutorial-caching.html" title="Basic Caching"><link rel="next" href="tutorial-wysiwyg-editor.html" title="Enabling WYSIWYG"><link rel="stylesheet" href="openacs.css" type="text/css"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><a href="http://openacs.org"><img src="/doc/images/alex.jpg" border="0" alt="Alex logo"></a><table width="100%" summary="Navigation header" border="0"><tr><td width="20%" align="left"><a accesskey="p" href="tutorial-caching.html">Prev</a> </td><th width="60%" align="center">Chapter�10.�Advanced Topics</th><td width="20%" align="right"> <a accesskey="n" href="tutorial-wysiwyg-editor.html">Next</a></td></tr></table><hr></div><div class="sect1" lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="tutorial-schedule-procs"></a>Scheduled Procedures</h2></div></div></div><p>Put this proc in a file <code class="computeroutput">/packages/<span class="replaceable"><span class="replaceable">myfirstpackage</span></span>/tcl/scheduled-init.tcl</code>.  Files in /tcl with the -init.tcl ending are sourced on server startup.  This one executes my_proc every 60 seconds:</p><pre class="programlisting">ad_schedule_proc 60 myfirstpackage::my_proc
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html><head><meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"><title>Scheduled Procedures</title><meta name="generator" content="DocBook XSL Stylesheets V1.60.1"><link rel="home" href="index.html" title="OpenACS Core Documentation"><link rel="up" href="tutorial-advanced.html" title="Chapter�10.�Advanced Topics"><link rel="previous" href="tutorial-caching.html" title="Basic Caching"><link rel="next" href="tutorial-wysiwyg-editor.html" title="Enabling WYSIWYG"><link rel="stylesheet" href="openacs.css" type="text/css"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><a href="http://openacs.org"><img src="/doc/images/alex.jpg" border="0" alt="Alex logo"></a><table width="100%" summary="Navigation header" border="0"><tr><td width="20%" align="left"><a accesskey="p" href="tutorial-caching.html">Prev</a> </td><th width="60%" align="center">Chapter�10.�Advanced Topics</th><td width="20%" align="right"> <a accesskey="n" href="tutorial-wysiwyg-editor.html">Next</a></td></tr></table><hr></div><div class="sect1" lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="tutorial-schedule-procs"></a>Scheduled Procedures</h2></div></div><div></div></div><p>Put this proc in a file <tt class="computeroutput">/packages/<span class="replaceable"><span class="replaceable">myfirstpackage</span></span>/tcl/scheduled-init.tcl</tt>.  Files in /tcl with the -init.tcl ending are sourced on server startup.  This one executes my_proc every 60 seconds:</p><pre class="programlisting">ad_schedule_proc 60 myfirstpackage::my_proc
 </pre><p>This executes once a day, at midnight:</p><pre class="programlisting">ad_schedule_proc \
     -schedule_proc ns_schedule_daily \
     [list 0 0] \
Index: openacs-4/packages/acs-core-docs/www/tutorial-second-database.html
===================================================================
RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/tutorial-second-database.html,v
diff -u -r1.4 -r1.4.4.1
--- openacs-4/packages/acs-core-docs/www/tutorial-second-database.html	17 Jul 2006 05:38:32 -0000	1.4
+++ openacs-4/packages/acs-core-docs/www/tutorial-second-database.html	3 Feb 2008 12:07:41 -0000	1.4.4.1
@@ -1,13 +1,14 @@
-<html><head><meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"><title>Connect to a second database</title><meta name="generator" content="DocBook XSL Stylesheets V1.70.1"><link rel="home" href="index.html" title="OpenACS Core Documentation"><link rel="up" href="tutorial-advanced.html" title="Chapter�10.�Advanced Topics"><link rel="previous" href="tutorial-upgrade-scripts.html" title="Writing upgrade scripts"><link rel="next" href="tutorial-future-topics.html" title="Future Topics"><link rel="stylesheet" href="openacs.css" type="text/css"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><a href="http://openacs.org"><img src="/doc/images/alex.jpg" border="0" alt="Alex logo"></a><table width="100%" summary="Navigation header" border="0"><tr><td width="20%" align="left"><a accesskey="p" href="tutorial-upgrade-scripts.html">Prev</a> </td><th width="60%" align="center">Chapter�10.�Advanced Topics</th><td width="20%" align="right"> <a accesskey="n" href="tutorial-future-topics.html">Next</a></td></tr></table><hr></div><div class="sect1" lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="tutorial-second-database"></a>Connect to a second database</h2></div></div></div><p>It is possible to use the OpenACS TCL database API with
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html><head><meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"><title>Connect to a second database</title><meta name="generator" content="DocBook XSL Stylesheets V1.60.1"><link rel="home" href="index.html" title="OpenACS Core Documentation"><link rel="up" href="tutorial-advanced.html" title="Chapter�10.�Advanced Topics"><link rel="previous" href="tutorial-upgrade-scripts.html" title="Writing upgrade scripts"><link rel="next" href="tutorial-future-topics.html" title="Future Topics"><link rel="stylesheet" href="openacs.css" type="text/css"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><a href="http://openacs.org"><img src="/doc/images/alex.jpg" border="0" alt="Alex logo"></a><table width="100%" summary="Navigation header" border="0"><tr><td width="20%" align="left"><a accesskey="p" href="tutorial-upgrade-scripts.html">Prev</a> </td><th width="60%" align="center">Chapter�10.�Advanced Topics</th><td width="20%" align="right"> <a accesskey="n" href="tutorial-future-topics.html">Next</a></td></tr></table><hr></div><div class="sect1" lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="tutorial-second-database"></a>Connect to a second database</h2></div></div><div></div></div><p>It is possible to use the OpenACS TCL database API with
     other databases.  In this example, the OpenACS site uses a
     PostGre database, and accesses another PostGre database called
     legacy.</p><div class="orderedlist"><ol type="1"><li><p>Modify config.tcl to accomodate the legacy database, and to
         ensure that the legacy database is not used for standard
         OpenACS queries:</p><pre class="programlisting">ns_section ns/db/pools
-ns_param   pool1              "Pool 1"
-ns_param   pool2              "Pool 2"
-ns_param   pool3              "Pool 3"
-ns_param   legacy             "Legacy"
+ns_param   pool1              &quot;Pool 1&quot;
+ns_param   pool2              &quot;Pool 2&quot;
+ns_param   pool3              &quot;Pool 3&quot;
+ns_param   legacy             &quot;Legacy&quot;
 
 ns_section ns/db/pool/pool1
 <span class="emphasis"><em>#Unchanged from default</em></span>
@@ -17,7 +18,7 @@
 ns_param   verbose            $debug
 ns_param   extendedtableinfo  true
 ns_param   logsqlerrors       $debug
-if { $database == "oracle" } {
+if { $database == &quot;oracle&quot; } {
     ns_param   driver             ora8
     ns_param   datasource         {}
     ns_param   user               $db_name
@@ -26,7 +27,7 @@
     ns_param   driver             postgres
     ns_param   datasource         ${db_host}:${db_port}:${db_name}
     ns_param   user               $db_user
-    ns_param   password           ""
+    ns_param   password           &quot;&quot;
 }
 
 ns_section ns/db/pool/pool2
@@ -56,13 +57,13 @@
 ns_param database_names [list main legacy]
 ns_param pools_main [list pool1 pool2 pool3]
 ns_param pools_legacy [list legacy]</pre></li><li><p>To use the legacy database, use the
-          <code class="code">-dbn</code> flag for any of the
-          <code class="code">db_</code> API calls.  For
-          example, suppose there is a table called "foo" in the legacy
-          system, with a field "bar".  List "bar" for all records with
+          <font color="red">&lt;code&gt;-dbn&lt;/code&gt;</font> flag for any of the
+          <font color="red">&lt;code&gt;db_&lt;/code&gt;</font> API calls.  For
+          example, suppose there is a table called &quot;foo&quot; in the legacy
+          system, with a field &quot;bar&quot;.  List &quot;bar&quot; for all records with
           this tcl file:</p><pre class="programlisting">db_foreach -dbn legacy get_bar_query {
   select bar from foo
   limit 10
 } {
-  ns_write "&lt;br/&gt;$bar"
+  ns_write &quot;&lt;br/&gt;$bar&quot;
 }</pre></li></ol></div></div><div class="navfooter"><hr><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="tutorial-upgrade-scripts.html">Prev</a> </td><td width="20%" align="center"><a accesskey="h" href="index.html">Home</a></td><td width="40%" align="right"> <a accesskey="n" href="tutorial-future-topics.html">Next</a></td></tr><tr><td width="40%" align="left">Writing upgrade scripts </td><td width="20%" align="center"><a accesskey="u" href="tutorial-advanced.html">Up</a></td><td width="40%" align="right"> Future Topics</td></tr></table><hr><address><a href="mailto:docs@openacs.org">docs@openacs.org</a></address></div><a name="comments"></a><center><a href="http://openacs.org/doc/current/tutorial-second-database.html#comments">View comments on this page at openacs.org</a></center></body></html>
Index: openacs-4/packages/acs-core-docs/www/tutorial-specs.html
===================================================================
RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/tutorial-specs.html,v
diff -u -r1.8 -r1.8.4.1
--- openacs-4/packages/acs-core-docs/www/tutorial-specs.html	17 Jul 2006 05:38:32 -0000	1.8
+++ openacs-4/packages/acs-core-docs/www/tutorial-specs.html	3 Feb 2008 12:07:41 -0000	1.8.4.1
@@ -1,38 +1,39 @@
-<html><head><meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"><title>Write the Requirements and Design Specs</title><meta name="generator" content="DocBook XSL Stylesheets V1.70.1"><link rel="home" href="index.html" title="OpenACS Core Documentation"><link rel="up" href="tutorial-advanced.html" title="Chapter�10.�Advanced Topics"><link rel="previous" href="tutorial-advanced.html" title="Chapter�10.�Advanced Topics"><link rel="next" href="tutorial-cvs.html" title="Add the new package to CVS"><link rel="stylesheet" href="openacs.css" type="text/css"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><a href="http://openacs.org"><img src="/doc/images/alex.jpg" border="0" alt="Alex logo"></a><table width="100%" summary="Navigation header" border="0"><tr><td width="20%" align="left"><a accesskey="p" href="tutorial-advanced.html">Prev</a> </td><th width="60%" align="center">Chapter�10.�Advanced Topics</th><td width="20%" align="right"> <a accesskey="n" href="tutorial-cvs.html">Next</a></td></tr></table><hr></div><div class="sect1" lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="tutorial-specs"></a>Write the Requirements and Design Specs</h2></div></div></div><p>Before you get started you should make yourself familiar with
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html><head><meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"><title>Write the Requirements and Design Specs</title><meta name="generator" content="DocBook XSL Stylesheets V1.60.1"><link rel="home" href="index.html" title="OpenACS Core Documentation"><link rel="up" href="tutorial-advanced.html" title="Chapter�10.�Advanced Topics"><link rel="previous" href="tutorial-advanced.html" title="Chapter�10.�Advanced Topics"><link rel="next" href="tutorial-cvs.html" title="Add the new package to CVS"><link rel="stylesheet" href="openacs.css" type="text/css"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><a href="http://openacs.org"><img src="/doc/images/alex.jpg" border="0" alt="Alex logo"></a><table width="100%" summary="Navigation header" border="0"><tr><td width="20%" align="left"><a accesskey="p" href="tutorial-advanced.html">Prev</a> </td><th width="60%" align="center">Chapter�10.�Advanced Topics</th><td width="20%" align="right"> <a accesskey="n" href="tutorial-cvs.html">Next</a></td></tr></table><hr></div><div class="sect1" lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="tutorial-specs"></a>Write the Requirements and Design Specs</h2></div></div><div></div></div><p>Before you get started you should make yourself familiar with
       the tags that are used to write your documentation. For tips on
-        editing SGML files in emacs, see <a href="docbook-primer.html" title="OpenACS Documentation Guide">the section called &#8220;OpenACS Documentation Guide&#8221;</a>.</p><p>It's time to document.  For the tutorial we'll use
+        editing SGML files in emacs, see <a href="docbook-primer.html" title="OpenACS Documentation Guide">Section�, &#8220;OpenACS Documentation Guide&#8221;</a>.</p><p>It's time to document.  For the tutorial we'll use
       pre-written documentation.  When creating a package
       from scratch, start by copying the documentation template from
-	<code class="computeroutput">/var/lib/aolserver/openacs-dev/packages/acs-core-docs/xml/docs/xml/package-documentation-template.xml</code>
+	<tt class="computeroutput">/var/lib/aolserver/openacs-dev/packages/acs-core-docs/xml/docs/xml/package-documentation-template.xml</tt>
 	to
-	<code class="computeroutput">myfirstpackage/www/docs/xml/index.xml</code>.</p><p>You then edit that file with emacs to write the 
+	<tt class="computeroutput">myfirstpackage/www/docs/xml/index.xml</tt>.</p><p>You then edit that file with emacs to write the 
 	requirements and design sections, generate the html, and start
 	coding.  Store any supporting files, like page maps or schema
-      diagrams, in the <code class="computeroutput">www/doc/xml</code>
+      diagrams, in the <tt class="computeroutput">www/doc/xml</tt>
       directory, and store png or jpg versions of supporting files in the
-	<code class="computeroutput">www/doc</code> directory.</p><p>For this tutorial, you should instead install the
+	<tt class="computeroutput">www/doc</tt> directory.</p><p>For this tutorial, you should instead install the
 	pre-written documentation files for the tutorial app.  Log in
       as <span class="replaceable"><span class="replaceable">$OPENACS_SERVICE_NAME</span></span>, create the standard
-      directories, and copy the prepared documentation:</p><pre class="screen">[$OPENACS_SERVICE_NAME $OPENACS_SERVICE_NAME]$ <strong class="userinput"><code>cd /var/lib/aolserver/<span class="replaceable"><span class="replaceable">$OPENACS_SERVICE_NAME</span></span>/packages/myfirstpackage/</code></strong>
-[$OPENACS_SERVICE_NAME myfirstpackage]$ <strong class="userinput"><code>mkdir -p www/doc/xml</code></strong>
-[$OPENACS_SERVICE_NAME myfirstpackage]$ <strong class="userinput"><code>cd www/doc/xml</code></strong>
-[$OPENACS_SERVICE_NAME xml]$ <strong class="userinput"><code>cp /var/lib/aolserver/<span class="replaceable"><span class="replaceable">$OPENACS_SERVICE_NAME</span></span>/packages/acs-core-docs/www/files/myfirstpackage/* .</code></strong>
+      directories, and copy the prepared documentation:</p><pre class="screen">[$OPENACS_SERVICE_NAME $OPENACS_SERVICE_NAME]$ <b class="userinput"><tt>cd /var/lib/aolserver/<span class="replaceable"><span class="replaceable">$OPENACS_SERVICE_NAME</span></span>/packages/myfirstpackage/</tt></b>
+[$OPENACS_SERVICE_NAME myfirstpackage]$ <b class="userinput"><tt>mkdir -p www/doc/xml</tt></b>
+[$OPENACS_SERVICE_NAME myfirstpackage]$ <b class="userinput"><tt>cd www/doc/xml</tt></b>
+[$OPENACS_SERVICE_NAME xml]$ <b class="userinput"><tt>cp /var/lib/aolserver/<span class="replaceable"><span class="replaceable">$OPENACS_SERVICE_NAME</span></span>/packages/acs-core-docs/www/files/myfirstpackage/* .</tt></b>
 [$OPENACS_SERVICE_NAME xml]$</pre><p> OpenACS uses DocBook for documentation.  DocBook is
 	an XML standard for semantic markup of documentation.  That
 	means that the tags you use indicate meaning, not intended
 	appearance.  The style sheet will determine appearance.  You
       will edit the text in an xml file, and then process the file
-      into html for reading.</p><p>Open the file <code class="computeroutput">index.xml</code>
+      into html for reading.</p><p>Open the file <tt class="computeroutput">index.xml</tt>
       in emacs.  Examine the file.  Find the version history (look for the tag
-        <code class="computeroutput">&lt;revhistory&gt;</code>).  Add a
+        <tt class="computeroutput">&lt;revhistory&gt;</tt>).  Add a
         new record to the document version history.  Look for the
-        <code class="computeroutput">&lt;authorgroup&gt;</code> tag and
+        <tt class="computeroutput">&lt;authorgroup&gt;</tt> tag and
         add yourself as a second author.  Save and exit.</p><p>Process the xml file to create html documentation.  The
       html documentation, including supporting files such as pictures,
-      is stored in the <code class="computeroutput">www/docs/</code>
+      is stored in the <tt class="computeroutput">www/docs/</tt>
       directory.  A Makefile is provided to generate html from the xml, and copy all of the
       supporting files.  If Docbook is set up correctly, all you need
-      to do is:</p><pre class="screen">[$OPENACS_SERVICE_NAME xml]$<strong class="userinput"><code> make</code></strong>
+      to do is:</p><pre class="screen">[$OPENACS_SERVICE_NAME xml]$<b class="userinput"><tt> make</tt></b>
 cd .. ; /usr/bin/xsltproc ../../../acs-core-docs/www/xml/openacs.xsl xml/index.xml
 Writing requirements-introduction.html for chapter(requirements-introduction)
 Writing requirements-overview.html for chapter(requirements-overview)
@@ -49,4 +50,4 @@
 Writing bi01.html for bibliography
 Writing index.html for book
 [$OPENACS_SERVICE_NAME xml]$</pre><p>Verify that the documentation was generated and reflects
-      your changes by browsing to <code class="computeroutput">http://<span class="replaceable"><span class="replaceable">yoursite</span></span>:8000/myfirstpackage/doc</code></p></div><div class="navfooter"><hr><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="tutorial-advanced.html">Prev</a> </td><td width="20%" align="center"><a accesskey="h" href="index.html">Home</a></td><td width="40%" align="right"> <a accesskey="n" href="tutorial-cvs.html">Next</a></td></tr><tr><td width="40%" align="left">Chapter�10.�Advanced Topics </td><td width="20%" align="center"><a accesskey="u" href="tutorial-advanced.html">Up</a></td><td width="40%" align="right"> Add the new package to CVS</td></tr></table><hr><address><a href="mailto:docs@openacs.org">docs@openacs.org</a></address></div><a name="comments"></a><center><a href="http://openacs.org/doc/current/tutorial-specs.html#comments">View comments on this page at openacs.org</a></center></body></html>
+      your changes by browsing to <tt class="computeroutput">http://<span class="replaceable"><span class="replaceable">yoursite</span></span>:8000/myfirstpackage/doc</tt></p></div><div class="navfooter"><hr><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="tutorial-advanced.html">Prev</a> </td><td width="20%" align="center"><a accesskey="h" href="index.html">Home</a></td><td width="40%" align="right"> <a accesskey="n" href="tutorial-cvs.html">Next</a></td></tr><tr><td width="40%" align="left">Chapter�10.�Advanced Topics </td><td width="20%" align="center"><a accesskey="u" href="tutorial-advanced.html">Up</a></td><td width="40%" align="right"> Add the new package to CVS</td></tr></table><hr><address><a href="mailto:docs@openacs.org">docs@openacs.org</a></address></div><a name="comments"></a><center><a href="http://openacs.org/doc/current/tutorial-specs.html#comments">View comments on this page at openacs.org</a></center></body></html>
Index: openacs-4/packages/acs-core-docs/www/tutorial-upgrade-scripts.html
===================================================================
RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/tutorial-upgrade-scripts.html,v
diff -u -r1.3 -r1.3.4.1
--- openacs-4/packages/acs-core-docs/www/tutorial-upgrade-scripts.html	17 Jul 2006 05:38:32 -0000	1.3
+++ openacs-4/packages/acs-core-docs/www/tutorial-upgrade-scripts.html	3 Feb 2008 12:07:41 -0000	1.3.4.1
@@ -1,4 +1,5 @@
-<html><head><meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"><title>Writing upgrade scripts</title><meta name="generator" content="DocBook XSL Stylesheets V1.70.1"><link rel="home" href="index.html" title="OpenACS Core Documentation"><link rel="up" href="tutorial-advanced.html" title="Chapter�10.�Advanced Topics"><link rel="previous" href="tutorial-parameters.html" title="Adding in parameters for your package"><link rel="next" href="tutorial-second-database.html" title="Connect to a second database"><link rel="stylesheet" href="openacs.css" type="text/css"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><a href="http://openacs.org"><img src="/doc/images/alex.jpg" border="0" alt="Alex logo"></a><table width="100%" summary="Navigation header" border="0"><tr><td width="20%" align="left"><a accesskey="p" href="tutorial-parameters.html">Prev</a> </td><th width="60%" align="center">Chapter�10.�Advanced Topics</th><td width="20%" align="right"> <a accesskey="n" href="tutorial-second-database.html">Next</a></td></tr></table><hr></div><div class="sect1" lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="tutorial-upgrade-scripts"></a>Writing upgrade scripts</h2></div></div></div><div class="authorblurb"><p>by <a href="mailto:jade@rubick.com" target="_top">Jade Rubick</a></p>
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html><head><meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"><title>Writing upgrade scripts</title><meta name="generator" content="DocBook XSL Stylesheets V1.60.1"><link rel="home" href="index.html" title="OpenACS Core Documentation"><link rel="up" href="tutorial-advanced.html" title="Chapter�10.�Advanced Topics"><link rel="previous" href="tutorial-parameters.html" title="Adding in parameters for your package"><link rel="next" href="tutorial-second-database.html" title="Connect to a second database"><link rel="stylesheet" href="openacs.css" type="text/css"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><a href="http://openacs.org"><img src="/doc/images/alex.jpg" border="0" alt="Alex logo"></a><table width="100%" summary="Navigation header" border="0"><tr><td width="20%" align="left"><a accesskey="p" href="tutorial-parameters.html">Prev</a> </td><th width="60%" align="center">Chapter�10.�Advanced Topics</th><td width="20%" align="right"> <a accesskey="n" href="tutorial-second-database.html">Next</a></td></tr></table><hr></div><div class="sect1" lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="tutorial-upgrade-scripts"></a>Writing upgrade scripts</h2></div></div><div></div></div><div class="authorblurb"><p>by <a href="mailto:jade@rubick.com" target="_top">Jade Rubick</a></p>
           OpenACS docs are written by the named authors, and may be edited
           by OpenACS documentation staff.
         </div><p>If your package changes its data model, you have to write an
@@ -12,6 +13,6 @@
     model changes are more serious and fundamental changes than the
     program .tcl files. </p><p>Now use the APM to create a new package version
       1.0b2. Commit all your changes, tag the release 
-      (<a href="tutorial-upgrades.html" title="Distributing upgrades of your package">the section called &#8220;Distributing upgrades of your package&#8221;</a>), 
+      (<a href="tutorial-upgrades.html" title="Distributing upgrades of your package">Section�, &#8220;Distributing upgrades of your package&#8221;</a>), 
       and both new installations and upgrades
       will be taken care of.</p></div><div class="navfooter"><hr><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="tutorial-parameters.html">Prev</a> </td><td width="20%" align="center"><a accesskey="h" href="index.html">Home</a></td><td width="40%" align="right"> <a accesskey="n" href="tutorial-second-database.html">Next</a></td></tr><tr><td width="40%" align="left">Adding in parameters for your package </td><td width="20%" align="center"><a accesskey="u" href="tutorial-advanced.html">Up</a></td><td width="40%" align="right"> Connect to a second database</td></tr></table><hr><address><a href="mailto:docs@openacs.org">docs@openacs.org</a></address></div><a name="comments"></a><center><a href="http://openacs.org/doc/current/tutorial-upgrade-scripts.html#comments">View comments on this page at openacs.org</a></center></body></html>
Index: openacs-4/packages/acs-core-docs/www/tutorial-upgrades.html
===================================================================
RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/tutorial-upgrades.html,v
diff -u -r1.3 -r1.3.4.1
--- openacs-4/packages/acs-core-docs/www/tutorial-upgrades.html	17 Jul 2006 05:38:32 -0000	1.3
+++ openacs-4/packages/acs-core-docs/www/tutorial-upgrades.html	3 Feb 2008 12:07:41 -0000	1.3.4.1
@@ -1,16 +1,17 @@
-<html><head><meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"><title>Distributing upgrades of your package</title><meta name="generator" content="DocBook XSL Stylesheets V1.70.1"><link rel="home" href="index.html" title="OpenACS Core Documentation"><link rel="up" href="tutorial-advanced.html" title="Chapter�10.�Advanced Topics"><link rel="previous" href="tutorial-distribute.html" title="Prepare the package for distribution."><link rel="next" href="tutorial-notifications.html" title="Notifications"><link rel="stylesheet" href="openacs.css" type="text/css"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><a href="http://openacs.org"><img src="/doc/images/alex.jpg" border="0" alt="Alex logo"></a><table width="100%" summary="Navigation header" border="0"><tr><td width="20%" align="left"><a accesskey="p" href="tutorial-distribute.html">Prev</a> </td><th width="60%" align="center">Chapter�10.�Advanced Topics</th><td width="20%" align="right"> <a accesskey="n" href="tutorial-notifications.html">Next</a></td></tr></table><hr></div><div class="sect1" lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="tutorial-upgrades"></a>Distributing upgrades of your package</h2></div></div></div><div class="authorblurb"><p>by Jade Rubick</p>
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html><head><meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"><title>Distributing upgrades of your package</title><meta name="generator" content="DocBook XSL Stylesheets V1.60.1"><link rel="home" href="index.html" title="OpenACS Core Documentation"><link rel="up" href="tutorial-advanced.html" title="Chapter�10.�Advanced Topics"><link rel="previous" href="tutorial-distribute.html" title="Prepare the package for distribution."><link rel="next" href="tutorial-notifications.html" title="Notifications"><link rel="stylesheet" href="openacs.css" type="text/css"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><a href="http://openacs.org"><img src="/doc/images/alex.jpg" border="0" alt="Alex logo"></a><table width="100%" summary="Navigation header" border="0"><tr><td width="20%" align="left"><a accesskey="p" href="tutorial-distribute.html">Prev</a> </td><th width="60%" align="center">Chapter�10.�Advanced Topics</th><td width="20%" align="right"> <a accesskey="n" href="tutorial-notifications.html">Next</a></td></tr></table><hr></div><div class="sect1" lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="tutorial-upgrades"></a>Distributing upgrades of your package</h2></div></div><div></div></div><div class="authorblurb"><p>by Jade Rubick</p>
           OpenACS docs are written by the named authors, and may be edited
           by OpenACS documentation staff.
         </div><p>The OpenACS Package Repository builds a list of packages
     that can be installed on OpenACS installations, and can be used by
     administrators to update their packages. If you are a package
     developer, there are a couple of steps you need to take in order
     to release a new version of your package. </p><p>For the sake of this example, let's assume you are the
-    package owner of the <code class="computeroutput">notes</code>
+    package owner of the <tt class="computeroutput">notes</tt>
     package. It is currently at version 1.5, and you are planning on
     releasing version 1.6. It is also located in OpenACS's CVS.</p><p>To release your package:</p><pre class="screen">cd /path/to/notes
-cvs commit -m "Update package to version 1.6."
+cvs commit -m &quot;Update package to version 1.6.&quot;
 cvs tag notes-1-6-final
 cvs tag -F openacs-5-1-compat
 </pre><p>Of course, make sure you write upgrade scripts 
-      (<a href="tutorial-upgrade-scripts.html" title="Writing upgrade scripts">the section called &#8220;Writing upgrade scripts&#8221;</a>)</p></div><div class="navfooter"><hr><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="tutorial-distribute.html">Prev</a> </td><td width="20%" align="center"><a accesskey="h" href="index.html">Home</a></td><td width="40%" align="right"> <a accesskey="n" href="tutorial-notifications.html">Next</a></td></tr><tr><td width="40%" align="left">Prepare the package for distribution. </td><td width="20%" align="center"><a accesskey="u" href="tutorial-advanced.html">Up</a></td><td width="40%" align="right"> Notifications</td></tr></table><hr><address><a href="mailto:docs@openacs.org">docs@openacs.org</a></address></div><a name="comments"></a><center><a href="http://openacs.org/doc/current/tutorial-upgrades.html#comments">View comments on this page at openacs.org</a></center></body></html>
+      (<a href="tutorial-upgrade-scripts.html" title="Writing upgrade scripts">Section�, &#8220;Writing upgrade scripts&#8221;</a>)</p></div><div class="navfooter"><hr><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="tutorial-distribute.html">Prev</a> </td><td width="20%" align="center"><a accesskey="h" href="index.html">Home</a></td><td width="40%" align="right"> <a accesskey="n" href="tutorial-notifications.html">Next</a></td></tr><tr><td width="40%" align="left">Prepare the package for distribution. </td><td width="20%" align="center"><a accesskey="u" href="tutorial-advanced.html">Up</a></td><td width="40%" align="right"> Notifications</td></tr></table><hr><address><a href="mailto:docs@openacs.org">docs@openacs.org</a></address></div><a name="comments"></a><center><a href="http://openacs.org/doc/current/tutorial-upgrades.html#comments">View comments on this page at openacs.org</a></center></body></html>
Index: openacs-4/packages/acs-core-docs/www/tutorial-vuh.html
===================================================================
RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/tutorial-vuh.html,v
diff -u -r1.12 -r1.12.4.1
--- openacs-4/packages/acs-core-docs/www/tutorial-vuh.html	17 Jul 2006 05:38:32 -0000	1.12
+++ openacs-4/packages/acs-core-docs/www/tutorial-vuh.html	3 Feb 2008 12:07:41 -0000	1.12.4.1
@@ -1,5 +1,6 @@
-<html><head><meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"><title>Using .vuh files for pretty urls</title><meta name="generator" content="DocBook XSL Stylesheets V1.70.1"><link rel="home" href="index.html" title="OpenACS Core Documentation"><link rel="up" href="tutorial-advanced.html" title="Chapter�10.�Advanced Topics"><link rel="previous" href="tutorial-hierarchical.html" title="Hierarchical data"><link rel="next" href="tutorial-css-layout.html" title="Laying out a page with CSS instead of tables"><link rel="stylesheet" href="openacs.css" type="text/css"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><a href="http://openacs.org"><img src="/doc/images/alex.jpg" border="0" alt="Alex logo"></a><table width="100%" summary="Navigation header" border="0"><tr><td width="20%" align="left"><a accesskey="p" href="tutorial-hierarchical.html">Prev</a> </td><th width="60%" align="center">Chapter�10.�Advanced Topics</th><td width="20%" align="right"> <a accesskey="n" href="tutorial-css-layout.html">Next</a></td></tr></table><hr></div><div class="sect1" lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="tutorial-vuh"></a>Using .vuh files for pretty urls</h2></div></div></div><p>.Vuh files are special cases of .tcl files, used for rewriting incoming urls.  We can use a vuh file to prettify the uri for our notes.  Instead of <code class="computeroutput">note-edit?item_id=495</code>, we can use <code class="computeroutput">note/495</code>.  To do this, we will need a new .vuh file for redirection and we will need to change the referring links in note-list.  First, add the vuh:</p><pre class="screen">[$OPENACS_SERVICE_NAME $OPENACS_SERVICE_NAME]$ <strong class="userinput"><code>cd /var/lib/aolserver/<span class="replaceable"><span class="replaceable">$OPENACS_SERVICE_NAME</span></span>/packages/myfirstpackage/www</code></strong>
-[$OPENACS_SERVICE_NAME www]$ <strong class="userinput"><code>emacs note.vuh</code></strong>
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html><head><meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"><title>Using .vuh files for pretty urls</title><meta name="generator" content="DocBook XSL Stylesheets V1.60.1"><link rel="home" href="index.html" title="OpenACS Core Documentation"><link rel="up" href="tutorial-advanced.html" title="Chapter�10.�Advanced Topics"><link rel="previous" href="tutorial-hierarchical.html" title="Hierarchical data"><link rel="next" href="tutorial-css-layout.html" title="Laying out a page with CSS instead of tables"><link rel="stylesheet" href="openacs.css" type="text/css"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><a href="http://openacs.org"><img src="/doc/images/alex.jpg" border="0" alt="Alex logo"></a><table width="100%" summary="Navigation header" border="0"><tr><td width="20%" align="left"><a accesskey="p" href="tutorial-hierarchical.html">Prev</a> </td><th width="60%" align="center">Chapter�10.�Advanced Topics</th><td width="20%" align="right"> <a accesskey="n" href="tutorial-css-layout.html">Next</a></td></tr></table><hr></div><div class="sect1" lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="tutorial-vuh"></a>Using .vuh files for pretty urls</h2></div></div><div></div></div><p>.Vuh files are special cases of .tcl files, used for rewriting incoming urls.  We can use a vuh file to prettify the uri for our notes.  Instead of <tt class="computeroutput">note-edit?item_id=495</tt>, we can use <tt class="computeroutput">note/495</tt>.  To do this, we will need a new .vuh file for redirection and we will need to change the referring links in note-list.  First, add the vuh:</p><pre class="screen">[$OPENACS_SERVICE_NAME $OPENACS_SERVICE_NAME]$ <b class="userinput"><tt>cd /var/lib/aolserver/<span class="replaceable"><span class="replaceable">$OPENACS_SERVICE_NAME</span></span>/packages/myfirstpackage/www</tt></b>
+[$OPENACS_SERVICE_NAME www]$ <b class="userinput"><tt>emacs note.vuh</tt></b>
 </pre><p>Paste this into the file:</p><pre class="programlisting"># Transform requests of type: a/b
 # into this internal request: A?c=b
 # for example, note/495 &gt; note-edit?item_id=496
@@ -14,10 +15,10 @@
 
 rp_form_put item_id $request
 
-set internal_path "/packages/[ad_conn package_key]/www/note-edit"
+set internal_path &quot;/packages/[ad_conn package_key]/www/note-edit&quot;
 
 rp_internal_redirect $internal_path
-</pre><p>We parse the incoming request and treat everything after the final / as the item id.  Note that this simple redirection will lose any additional query parameters passed in.  Many OpenACS objects maintain a pretty-name, which is a unique, human-readable string, usually derived from title, which makes an even better 'pretty url' than a numeric id; this requires that your display page be able to look up an item based on pretty id.</p><p>We use <code class="computeroutput">rp_form_put</code> to store the item id in the internal register that the next page is expecting, and then redirects the request in process internally (ie, without a browser refresh).</p><p>Next, modify note-list so that its link is of the new form.:</p><pre class="screen">[$OPENACS_SERVICE_NAME www]$ <strong class="userinput"><code>emacs ../lib/note-edit.tcl</code></strong></pre><pre class="programlisting">
+</pre><p>We parse the incoming request and treat everything after the final / as the item id.  Note that this simple redirection will lose any additional query parameters passed in.  Many OpenACS objects maintain a pretty-name, which is a unique, human-readable string, usually derived from title, which makes an even better 'pretty url' than a numeric id; this requires that your display page be able to look up an item based on pretty id.</p><p>We use <tt class="computeroutput">rp_form_put</tt> to store the item id in the internal register that the next page is expecting, and then redirects the request in process internally (ie, without a browser refresh).</p><p>Next, modify note-list so that its link is of the new form.:</p><pre class="screen">[$OPENACS_SERVICE_NAME www]$ <b class="userinput"><tt>emacs ../lib/note-edit.tcl</tt></b></pre><pre class="programlisting">
 db_multirow \
     -extend {
 	edit_url
@@ -29,8 +30,8 @@
                mfp_notesx n
         where  n.revision_id = ci.live_revision
     } {
-	<span class="strong"><strong>set edit_url [export_vars -base "note/$item_id"]</strong></span>
-	set delete_url [export_vars -base "note-delete" {item_id}]
+	<span class="strong">set edit_url [export_vars -base &quot;note/$item_id&quot;]</span>
+	set delete_url [export_vars -base &quot;note-delete&quot; {item_id}]
     }
 </pre><p>You may also need to change some of the links in your
     package. Commonly, you would use ad_conn package_url to build the
Index: openacs-4/packages/acs-core-docs/www/tutorial-wysiwyg-editor.html
===================================================================
RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/tutorial-wysiwyg-editor.html,v
diff -u -r1.3 -r1.3.4.1
--- openacs-4/packages/acs-core-docs/www/tutorial-wysiwyg-editor.html	17 Jul 2006 05:38:32 -0000	1.3
+++ openacs-4/packages/acs-core-docs/www/tutorial-wysiwyg-editor.html	3 Feb 2008 12:07:41 -0000	1.3.4.1
@@ -1,94 +1,95 @@
-<html><head><meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"><title>Enabling WYSIWYG</title><meta name="generator" content="DocBook XSL Stylesheets V1.70.1"><link rel="home" href="index.html" title="OpenACS Core Documentation"><link rel="up" href="tutorial-advanced.html" title="Chapter�10.�Advanced Topics"><link rel="previous" href="tutorial-schedule-procs.html" title="Scheduled Procedures"><link rel="next" href="tutorial-parameters.html" title="Adding in parameters for your package"><link rel="stylesheet" href="openacs.css" type="text/css"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><a href="http://openacs.org"><img src="/doc/images/alex.jpg" border="0" alt="Alex logo"></a><table width="100%" summary="Navigation header" border="0"><tr><td width="20%" align="left"><a accesskey="p" href="tutorial-schedule-procs.html">Prev</a> </td><th width="60%" align="center">Chapter�10.�Advanced Topics</th><td width="20%" align="right"> <a accesskey="n" href="tutorial-parameters.html">Next</a></td></tr></table><hr></div><div class="sect1" lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="tutorial-wysiwyg-editor"></a>Enabling WYSIWYG</h2></div></div></div><div class="authorblurb"><p>by <a href="mailto:nima.mazloumi@gmx.de" target="_top">Nima Mazloumi</a></p>
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html><head><meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"><title>Enabling WYSIWYG</title><meta name="generator" content="DocBook XSL Stylesheets V1.60.1"><link rel="home" href="index.html" title="OpenACS Core Documentation"><link rel="up" href="tutorial-advanced.html" title="Chapter�10.�Advanced Topics"><link rel="previous" href="tutorial-schedule-procs.html" title="Scheduled Procedures"><link rel="next" href="tutorial-parameters.html" title="Adding in parameters for your package"><link rel="stylesheet" href="openacs.css" type="text/css"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><a href="http://openacs.org"><img src="/doc/images/alex.jpg" border="0" alt="Alex logo"></a><table width="100%" summary="Navigation header" border="0"><tr><td width="20%" align="left"><a accesskey="p" href="tutorial-schedule-procs.html">Prev</a> </td><th width="60%" align="center">Chapter�10.�Advanced Topics</th><td width="20%" align="right"> <a accesskey="n" href="tutorial-parameters.html">Next</a></td></tr></table><hr></div><div class="sect1" lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="tutorial-wysiwyg-editor"></a>Enabling WYSIWYG</h2></div></div><div></div></div><div class="authorblurb"><p>by <a href="mailto:nima.mazloumi@gmx.de" target="_top">Nima Mazloumi</a></p>
           OpenACS docs are written by the named authors, and may be edited
           by OpenACS documentation staff.
-        </div><p>Most of the forms in OpenACS are created using the form builder, see <a href="form-builder.html" title="Using Form Builder: building html forms dynamically">the section called &#8220;Using Form Builder: building html forms dynamically&#8221;</a>. For detailed information on the 
-    API take a look <a href="/api-doc/proc-view?proc=ad_form" target="_top">here</a>.</p><p>The following section shows how you can modify your form to allow WYSIWYG functionalities.</p><p>Convert your page to use <code class="code">ad_form</code> (some changes but worth it)</p><p>Here an examples. From:</p><pre class="programlisting">
+        </div><p>Most of the forms in OpenACS are created using the form builder, see <a href="form-builder.html" title="Using Form Builder: building html forms dynamically">Section�, &#8220;Using Form Builder: building html forms dynamically&#8221;</a>. For detailed information on the 
+    API take a look <a href="/api-doc/proc-view?proc=ad_form" target="_top">here</a>.</p><p>The following section shows how you can modify your form to allow WYSIWYG functionalities.</p><p>Convert your page to use <font color="red">&lt;code&gt;ad_form&lt;/code&gt;</font> (some changes but worth it)</p><p>Here an examples. From:</p><pre class="programlisting">
 	template::form create my_form
-	template::element create my_form my_form_id -label "The ID" -datatype integer -widget hidden
-	template::element create my_form my_input_field_1 -html { size 30 } -label "Label 1" -datatype text -optional
-	template::element create my_form my_input_field_2 -label "Label 2" -datatype text -help_text "Some Help" -after_html {&lt;a name="#"&gt;Anchor&lt;/a&gt;}
+	template::element create my_form my_form_id -label &quot;The ID&quot; -datatype integer -widget hidden
+	template::element create my_form my_input_field_1 -html { size 30 } -label &quot;Label 1&quot; -datatype text -optional
+	template::element create my_form my_input_field_2 -label &quot;Label 2&quot; -datatype text -help_text &quot;Some Help&quot; -after_html {&lt;a name=&quot;#&quot;&gt;Anchor&lt;/a&gt;}
 	</pre><p>To:</p><pre class="programlisting">
 	ad_form -name my_form -form {
 		my_form_id:key(acs_object_id_seq)
  		{my_input_field_1:text,optional
-               {label "Label 1"}
+               {label &quot;Label 1&quot;}
                {html {size 30}}}
       	{my_input_field_2:text
-               {label "Label 2"}
-               {help_text "Some Help"}
+               {label &quot;Label 2&quot;}
+               {help_text &quot;Some Help&quot;}
 	       	   {after_html
-               {&lt;a name="#"&gt;Anchor&lt;/a&gt;}}}
+               {&lt;a name=&quot;#&quot;&gt;Anchor&lt;/a&gt;}}}
 	} ...
-	</pre><div class="warning" style="margin-left: 0.5in; margin-right: 0.5in;"><h3 class="title">Warning</h3><p>You must not give your your form the same name that your page has. Otherwise HTMLArea won't load.</p></div><p>Convert your textarea widget to a richtext widget and enable htmlarea.</p><p>The <code class="code">htmlarea_p</code>-flag can be used to prevent 
+	</pre><div class="warning" style="margin-left: 0.5in; margin-right: 0.5in;"><h3 class="title">Warning</h3><p>You must not give your your form the same name that your page has. Otherwise HTMLArea won't load.</p></div><p>Convert your textarea widget to a richtext widget and enable htmlarea.</p><p>The <font color="red">&lt;code&gt;htmlarea_p&lt;/code&gt;</font>-flag can be used to prevent 
 	WYSIWYG functionality. Defaults to true if left away.</p><p>From:</p><pre class="programlisting">
 	{my_input_field_2:text
 	</pre><p>To:</p><pre class="programlisting">
 	{my_input_field_2:richtext(richtext)
-			{htmlarea_p "t"}
+			{htmlarea_p &quot;t&quot;}
 	</pre><p>The richtext widget presents a list with two elements: text and content type.
-	To learn more on existing content types search in Google for "MIME-TYPES" or 
-	take a look at the <code class="code">cr_mime_types</code> table.</p><p>Make sure that both values are passed as a list to your 
-	<code class="code">ad_form</code> or you will have problems 
+	To learn more on existing content types search in Google for &quot;MIME-TYPES&quot; or 
+	take a look at the <font color="red">&lt;code&gt;cr_mime_types&lt;/code&gt;</font> table.</p><p>Make sure that both values are passed as a list to your 
+	<font color="red">&lt;code&gt;ad_form&lt;/code&gt;</font> or you will have problems 
 	displaying the content or handling the data manipulation correctly.</p><p>Depending on the data model of your package you either support a content format 
-	or don't. If you don't you can assume <code class="code">"text/html"</code> or 
-	<code class="code">"text/richtext"</code> or <code class="code">"text/enhanced"</code>.</p><p>The relevant parts in your <code class="code">ad_form</code> definition are the 
-	switches <code class="code">-new_data</code>, <code class="code">-edit_data</code>, 
-	<code class="code">-on_request</code> and <code class="code">-on_submit</code>.</p><p>To allow your data to display correctly you need to add an <code class="code">-on_request</code> block. 
-	If you have the format stored in the database pass this as well else use <code class="code">"text/html"</code>:</p><pre class="programlisting">
-	set my_input_field_2 [template::util::richtext::create $my_input_field_2 "text/html"]
+	or don't. If you don't you can assume <font color="red">&lt;code&gt;&quot;text/html&quot;&lt;/code&gt;</font> or 
+	<font color="red">&lt;code&gt;&quot;text/richtext&quot;&lt;/code&gt;</font> or <font color="red">&lt;code&gt;&quot;text/enhanced&quot;&lt;/code&gt;</font>.</p><p>The relevant parts in your <font color="red">&lt;code&gt;ad_form&lt;/code&gt;</font> definition are the 
+	switches <font color="red">&lt;code&gt;-new_data&lt;/code&gt;</font>, <font color="red">&lt;code&gt;-edit_data&lt;/code&gt;</font>, 
+	<font color="red">&lt;code&gt;-on_request&lt;/code&gt;</font> and <font color="red">&lt;code&gt;-on_submit&lt;/code&gt;</font>.</p><p>To allow your data to display correctly you need to add an <font color="red">&lt;code&gt;-on_request&lt;/code&gt;</font> block. 
+	If you have the format stored in the database pass this as well else use <font color="red">&lt;code&gt;&quot;text/html&quot;&lt;/code&gt;</font>:</p><pre class="programlisting">
+	set my_input_field_2 [template::util::richtext::create $my_input_field_2 &quot;text/html&quot;]
 	</pre><p>Now make sure that your SQL queries that do the data manipulation retrieve the correct value. 
-	If you simply use <code class="code">my_input_field_2</code> you will store a list. 
-	Thus you need to add an <code class="code">-on_submit</code> block:</p><pre class="programlisting">
+	If you simply use <font color="red">&lt;code&gt;my_input_field_2&lt;/code&gt;</font> you will store a list. 
+	Thus you need to add an <font color="red">&lt;code&gt;-on_submit&lt;/code&gt;</font> block:</p><pre class="programlisting">
 	set my_input_field_2 [ template::util::richtext::get_property contents $my_input_field_2]
 	set format [ template::util::richtext::get_property format $my_input_field_2] #This is optional
-	</pre><p>Now the correct values for <code class="code">my_input_field_2</code> and 
-	<code class="code">format</code> are passed to the <code class="code">-new_data</code> and 
-	<code class="code">-edit_data</code> blocks which don't need to get touched.</p><p>To make HTMLArea optional per package instance define a string parameter 
-	<code class="code">UseWysiwygP</code> which defaults <code class="code">0</code> for your 
+	</pre><p>Now the correct values for <font color="red">&lt;code&gt;my_input_field_2&lt;/code&gt;</font> and 
+	<font color="red">&lt;code&gt;format&lt;/code&gt;</font> are passed to the <font color="red">&lt;code&gt;-new_data&lt;/code&gt;</font> and 
+	<font color="red">&lt;code&gt;-edit_data&lt;/code&gt;</font> blocks which don't need to get touched.</p><p>To make HTMLArea optional per package instance define a string parameter 
+	<font color="red">&lt;code&gt;UseWysiwygP&lt;/code&gt;</font> which defaults <font color="red">&lt;code&gt;0&lt;/code&gt;</font> for your 
 	package using the APM.</p><p>In your edit page make the following changes</p><pre class="programlisting">
 	# Is WYSIWYG enabled?
-	set use_wysiwyg_p [parameter::get -parameter "UseWysiwygP" -default "f"]
+	set use_wysiwyg_p [parameter::get -parameter &quot;UseWysiwygP&quot; -default &quot;f&quot;]
 	
 	...
 	
 	{htmlarea_p $use_wysiwyg_p}
-	</pre><p>The <code class="code">-on_request</code> switch should set this value for your form.</p><pre class="programlisting">
+	</pre><p>The <font color="red">&lt;code&gt;-on_request&lt;/code&gt;</font> switch should set this value for your form.</p><pre class="programlisting">
 	set htmlarea_p $use_wysiwyg_p
 	</pre><p>All you need now is a configuration page where the user can change this setting. Create a 
-	<code class="code">configure.tcl</code> file:</p><pre class="programlisting">
+	<font color="red">&lt;code&gt;configure.tcl&lt;/code&gt;</font> file:</p><pre class="programlisting">
 	ad_page_contract {
 
     	This page allows a faq admin to change the UseWysiwygP setting
 
 	} {
-    	{return_url ""}
+    	{return_url &quot;&quot;}
 	}
 
-	set title "Should we support WYSIWYG?"
+	set title &quot;Should we support WYSIWYG?&quot;
 	set context [list $title]
 
 	set use_wysiwyg_p
 
 	ad_form -name categories_mode -form {
     	{enabled_p:text(radio)
-        	{label "Enable WYSIWYG"}
+        	{label &quot;Enable WYSIWYG&quot;}
         	{options {{Yes t} {No f}}}
         	{value $use_wysiwyg_p}
     	}
     	{return_url:text(hidden) {value $return_url}}
-    	{submit:text(submit) {label "Change"}}
+    	{submit:text(submit) {label &quot;Change&quot;}}
 	} -on_submit {
-    	parameter::set_value  -parameter "UseWysiwygP" -value $enabled_p
+    	parameter::set_value  -parameter &quot;UseWysiwygP&quot; -value $enabled_p
     	if {![empty_string_p $return_url]} {
         	ns_returnredirect $return_url
     	}
 	}
 	</pre><p>In the corresponding ADP file write</p><pre class="programlisting">
 	&lt;master&gt;
-	&lt;property name="title"&gt;@title@&lt;/property&gt;
-	&lt;property name="context"&gt;@context@&lt;/property&gt;
+	&lt;property name=&quot;title&quot;&gt;@title@&lt;/property&gt;
+	&lt;property name=&quot;context&quot;&gt;@context@&lt;/property&gt;
 
-	&lt;formtemplate id="categories_mode"&gt;&lt;/formtemplate&gt;
+	&lt;formtemplate id=&quot;categories_mode&quot;&gt;&lt;/formtemplate&gt;
 	</pre><p>And finally reference this page from your admin page</p><pre class="programlisting">
 	#TCL:
 	set return_url [ad_conn url]
Index: openacs-4/packages/acs-core-docs/www/tutorial.html
===================================================================
RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/tutorial.html,v
diff -u -r1.18 -r1.18.4.1
--- openacs-4/packages/acs-core-docs/www/tutorial.html	17 Jul 2006 05:38:32 -0000	1.18
+++ openacs-4/packages/acs-core-docs/www/tutorial.html	3 Feb 2008 12:07:41 -0000	1.18.4.1
@@ -1 +1,2 @@
-<html><head><meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"><title>Chapter�9.�Development Tutorial</title><meta name="generator" content="DocBook XSL Stylesheets V1.70.1"><link rel="home" href="index.html" title="OpenACS Core Documentation"><link rel="up" href="acs-package-dev.html" title="Part�III.�For OpenACS Package Developers"><link rel="previous" href="acs-package-dev.html" title="Part�III.�For OpenACS Package Developers"><link rel="next" href="tutorial-newpackage.html" title="Creating an Application Package"><link rel="stylesheet" href="openacs.css" type="text/css"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><a href="http://openacs.org"><img src="/doc/images/alex.jpg" border="0" alt="Alex logo"></a><table width="100%" summary="Navigation header" border="0"><tr><td width="20%" align="left"><a accesskey="p" href="acs-package-dev.html">Prev</a> </td><th width="60%" align="center">Part�III.�For OpenACS Package Developers</th><td width="20%" align="right"> <a accesskey="n" href="tutorial-newpackage.html">Next</a></td></tr></table><hr></div><div class="chapter" lang="en"><div class="titlepage"><div><div><h2 class="title"><a name="tutorial"></a>Chapter�9.�Development Tutorial</h2></div></div></div><div class="toc"><p><b>Table of Contents</b></p><dl><dt><span class="sect1"><a href="tutorial-newpackage.html">Creating an Application Package</a></span></dt><dt><span class="sect1"><a href="tutorial-database.html">Setting Up Database Objects</a></span></dt><dt><span class="sect1"><a href="tutorial-pages.html">Creating Web Pages</a></span></dt><dt><span class="sect1"><a href="tutorial-debug.html">Debugging and Automated Testing</a></span></dt></dl></div></div><div class="navfooter"><hr><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="acs-package-dev.html">Prev</a> </td><td width="20%" align="center"><a accesskey="h" href="index.html">Home</a></td><td width="40%" align="right"> <a accesskey="n" href="tutorial-newpackage.html">Next</a></td></tr><tr><td width="40%" align="left">Part�III.�For OpenACS Package Developers </td><td width="20%" align="center"><a accesskey="u" href="acs-package-dev.html">Up</a></td><td width="40%" align="right"> Creating an Application Package</td></tr></table><hr><address><a href="mailto:docs@openacs.org">docs@openacs.org</a></address></div><a name="comments"></a><center><a href="http://openacs.org/doc/current/tutorial.html#comments">View comments on this page at openacs.org</a></center></body></html>
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html><head><meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"><title>Chapter�9.�Development Tutorial</title><meta name="generator" content="DocBook XSL Stylesheets V1.60.1"><link rel="home" href="index.html" title="OpenACS Core Documentation"><link rel="up" href="acs-package-dev.html" title="Part�III.�For OpenACS Package Developers"><link rel="previous" href="acs-package-dev.html" title="Part�III.�For OpenACS Package Developers"><link rel="next" href="tutorial-newpackage.html" title="Creating an Application Package"><link rel="stylesheet" href="openacs.css" type="text/css"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><a href="http://openacs.org"><img src="/doc/images/alex.jpg" border="0" alt="Alex logo"></a><table width="100%" summary="Navigation header" border="0"><tr><td width="20%" align="left"><a accesskey="p" href="acs-package-dev.html">Prev</a> </td><th width="60%" align="center">Part�III.�For OpenACS Package Developers</th><td width="20%" align="right"> <a accesskey="n" href="tutorial-newpackage.html">Next</a></td></tr></table><hr></div><div class="chapter" lang="en"><div class="titlepage"><div><div><h2 class="title"><a name="tutorial"></a>Chapter�9.�Development Tutorial</h2></div></div><div></div></div><div class="toc"><p><b>Table of Contents</b></p><dl><dt><a href="tutorial-newpackage.html">Creating an Application Package</a></dt><dt><a href="tutorial-database.html">Setting Up Database Objects</a></dt><dt><a href="tutorial-pages.html">Creating Web Pages</a></dt><dt><a href="tutorial-debug.html">Debugging and Automated Testing</a></dt></dl></div></div><div class="navfooter"><hr><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="acs-package-dev.html">Prev</a> </td><td width="20%" align="center"><a accesskey="h" href="index.html">Home</a></td><td width="40%" align="right"> <a accesskey="n" href="tutorial-newpackage.html">Next</a></td></tr><tr><td width="40%" align="left">Part�III.�For OpenACS Package Developers </td><td width="20%" align="center"><a accesskey="u" href="acs-package-dev.html">Up</a></td><td width="40%" align="right"> Creating an Application Package</td></tr></table><hr><address><a href="mailto:docs@openacs.org">docs@openacs.org</a></address></div><a name="comments"></a><center><a href="http://openacs.org/doc/current/tutorial.html#comments">View comments on this page at openacs.org</a></center></body></html>
Index: openacs-4/packages/acs-core-docs/www/unix-installation.html
===================================================================
RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/unix-installation.html,v
diff -u -r1.27 -r1.27.4.1
--- openacs-4/packages/acs-core-docs/www/unix-installation.html	17 Jul 2006 05:38:32 -0000	1.27
+++ openacs-4/packages/acs-core-docs/www/unix-installation.html	3 Feb 2008 12:07:41 -0000	1.27.4.1
@@ -1,7 +1,8 @@
-<html><head><meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"><title>Install a Unix-like system and supporting software</title><meta name="generator" content="DocBook XSL Stylesheets V1.70.1"><link rel="home" href="index.html" title="OpenACS Core Documentation"><link rel="up" href="complete-install.html" title="Chapter�3.�Complete Installation"><link rel="previous" href="complete-install.html" title="Chapter�3.�Complete Installation"><link rel="next" href="oracle.html" title="Install Oracle 8.1.7"><link rel="stylesheet" href="openacs.css" type="text/css"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><a href="http://openacs.org"><img src="/doc/images/alex.jpg" border="0" alt="Alex logo"></a><table width="100%" summary="Navigation header" border="0"><tr><td width="20%" align="left"><a accesskey="p" href="complete-install.html">Prev</a> </td><th width="60%" align="center">Chapter�3.�Complete Installation</th><td width="20%" align="right"> <a accesskey="n" href="oracle.html">Next</a></td></tr></table><hr></div><div class="sect1" lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="unix-installation"></a>Install a Unix-like system and supporting software</h2></div></div></div><div class="authorblurb"><p>by <a href="mailto:joel@aufrecht.org" target="_top">Joel Aufrecht</a></p>
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html><head><meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"><title>Install a Unix-like system and supporting software</title><meta name="generator" content="DocBook XSL Stylesheets V1.60.1"><link rel="home" href="index.html" title="OpenACS Core Documentation"><link rel="up" href="complete-install.html" title="Chapter�3.�Complete Installation"><link rel="previous" href="complete-install.html" title="Chapter�3.�Complete Installation"><link rel="next" href="oracle.html" title="Install Oracle 8.1.7"><link rel="stylesheet" href="openacs.css" type="text/css"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><a href="http://openacs.org"><img src="/doc/images/alex.jpg" border="0" alt="Alex logo"></a><table width="100%" summary="Navigation header" border="0"><tr><td width="20%" align="left"><a accesskey="p" href="complete-install.html">Prev</a> </td><th width="60%" align="center">Chapter�3.�Complete Installation</th><td width="20%" align="right"> <a accesskey="n" href="oracle.html">Next</a></td></tr></table><hr></div><div class="sect1" lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="unix-installation"></a>Install a Unix-like system and supporting software</h2></div></div><div></div></div><div class="authorblurb"><p>by <a href="mailto:joel@aufrecht.org" target="_top">Joel Aufrecht</a></p>
           OpenACS docs are written by the named authors, and may be edited
           by OpenACS documentation staff.
-        </div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="unix-install"></a>a Unix-like system</h3></div></div></div><p>You will need a computer running a unix-like system with the following software installed:</p><div class="itemizedlist"><ul type="disc"><li><p>tdom</p></li><li><p>tcl --if you plan to use the OpenACS installation script</p></li><li><p>gmake and the compile and build environment.</p><div class="note" style="margin-left: 0.5in; margin-right: 0.5in;"><h3 class="title">BSD Note</h3><p>BSD users: in most places in these instructions, gmake will work better than make.  (<a href="http://openacs.org/forums/message-view?message_id=136910" target="_top">more
+        </div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="unix-install"></a>a Unix-like system</h3></div></div><div></div></div><p>You will need a computer running a unix-like system with the following software installed:</p><div class="itemizedlist"><ul type="disc"><li><p>tdom</p></li><li><p>tcl --if you plan to use the OpenACS installation script</p></li><li><p>gmake and the compile and build environment.</p><div class="note" style="margin-left: 0.5in; margin-right: 0.5in;"><h3 class="title">BSD Note</h3><p>BSD users: in most places in these instructions, gmake will work better than make.  (<a href="http://openacs.org/forums/message-view?message_id=136910" target="_top">more
           information on FreeBSD installation</a>). Also, fetch is a native replacement for wget.</p></div></li></ul></div><p>Note: Instructions for installing tDOM and threaded tcl are included with the AOLserver4 installation instructions, 
     if these are not yet installed.</p><p>The following programs may be useful or required for some configurations. They are included in most distributions:</p><div class="itemizedlist"><ul type="disc"><li><p>emacs</p></li><li><p>cvs (and <a href="install-cvs.html" title="Initialize CVS (OPTIONAL)">initialize</a> it)</p></li><li><p>ImageMagick (used by some packages for server side image manipulation)</p></li><li><p>Aspell (<a href="http://openacs.org/forums/message-view?message_id=130549" target="_top">more information on spell-checking</a>)</p></li><li><p>DocBook and supporting software (and <a href="psgml-for-emacs.html" title="Add PSGML commands to emacs init file (OPTIONAL)">install</a> emacs keybindings for DocBook SGML)</p></li><li><p>daemontools (<a href="install-daemontools.html" title="Install Daemontools (OPTIONAL)">install from source</a>)</p></li><li><p>a Mail Transport Agent, such as exim or sendmail (or <a href="install-qmail.html" title="Install qmail (OPTIONAL)">install qmail from source</a>)</p></li></ul></div><p>In order to cut and paste the example code into your shell, you must first do <a href="install-steps.html#cut-and-paste-name-var" title="Setting a global shell variable for cut and paste">Setting a global shell variable for cut and paste</a>.</p><p>To install a machine to the specifications of the Reference Platform, do the 
     <a href="install-redhat.html" title="Appendix�A.�Install Red Hat 8/9">walkthrough of the Red Hat 8.0 Install for OpenACS</a>.</p><div class="cvstag">($Id$)</div></div></div><div class="navfooter"><hr><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="complete-install.html">Prev</a> </td><td width="20%" align="center"><a accesskey="h" href="index.html">Home</a></td><td width="40%" align="right"> <a accesskey="n" href="oracle.html">Next</a></td></tr><tr><td width="40%" align="left">Chapter�3.�Complete Installation </td><td width="20%" align="center"><a accesskey="u" href="complete-install.html">Up</a></td><td width="40%" align="right"> Install Oracle 8.1.7</td></tr></table><hr><address><a href="mailto:docs@openacs.org">docs@openacs.org</a></address></div><a name="comments"></a><center><a href="http://openacs.org/doc/current/unix-installation.html#comments">View comments on this page at openacs.org</a></center></body></html>
Index: openacs-4/packages/acs-core-docs/www/update-repository.html
===================================================================
RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/update-repository.html,v
diff -u -r1.11 -r1.11.4.1
--- openacs-4/packages/acs-core-docs/www/update-repository.html	17 Jul 2006 05:38:32 -0000	1.11
+++ openacs-4/packages/acs-core-docs/www/update-repository.html	3 Feb 2008 12:07:41 -0000	1.11.4.1
@@ -1,7 +1,8 @@
-<html><head><meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"><title>How to Update the OpenACS.org repository</title><meta name="generator" content="DocBook XSL Stylesheets V1.70.1"><link rel="home" href="index.html" title="OpenACS Core Documentation"><link rel="up" href="releasing-openacs.html" title="Chapter�16.�Releasing OpenACS"><link rel="previous" href="releasing-openacs-core.html" title="OpenACS Core and .LRN"><link rel="next" href="releasing-package.html" title="How to package and release an OpenACS Package"><link rel="stylesheet" href="openacs.css" type="text/css"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><a href="http://openacs.org"><img src="/doc/images/alex.jpg" border="0" alt="Alex logo"></a><table width="100%" summary="Navigation header" border="0"><tr><td width="20%" align="left"><a accesskey="p" href="releasing-openacs-core.html">Prev</a> </td><th width="60%" align="center">Chapter�16.�Releasing OpenACS</th><td width="20%" align="right"> <a accesskey="n" href="releasing-package.html">Next</a></td></tr></table><hr></div><div class="section" lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="update-repository"></a>How to Update the OpenACS.org repository</h2></div></div></div><div class="orderedlist"><ol type="1"><li><p>
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html><head><meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"><title>How to Update the OpenACS.org repository</title><meta name="generator" content="DocBook XSL Stylesheets V1.60.1"><link rel="home" href="index.html" title="OpenACS Core Documentation"><link rel="up" href="releasing-openacs.html" title="Chapter�16.�Releasing OpenACS"><link rel="previous" href="releasing-openacs-core.html" title="OpenACS Core and .LRN"><link rel="next" href="releasing-package.html" title="How to package and release an OpenACS Package"><link rel="stylesheet" href="openacs.css" type="text/css"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><a href="http://openacs.org"><img src="/doc/images/alex.jpg" border="0" alt="Alex logo"></a><table width="100%" summary="Navigation header" border="0"><tr><td width="20%" align="left"><a accesskey="p" href="releasing-openacs-core.html">Prev</a> </td><th width="60%" align="center">Chapter�16.�Releasing OpenACS</th><td width="20%" align="right"> <a accesskey="n" href="releasing-package.html">Next</a></td></tr></table><hr></div><div class="section" lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="update-repository"></a>How to Update the OpenACS.org repository</h2></div></div><div></div></div><div class="orderedlist"><ol type="1"><li><p>
           Setup a local OpenACS server running 5.0 or better.
         </p></li><li><p>
-        Edit <code class="computeroutput">packages/acs-admin/www/apm/build-repository.tcl</code> and adjust the Configuration Settings.        </p></li><li><p>
+        Edit <tt class="computeroutput">packages/acs-admin/www/apm/build-repository.tcl</tt> and adjust the Configuration Settings.        </p></li><li><p>
           Request /acs-admin/apm/build-repository on your new server.
         </p></li><li><div class="orderedlist"><ol type="a"><li><p>
               The page will find all branches in the cvs repository labeled oacs-x-y, and build a repository channel for each of
@@ -10,15 +11,15 @@
             </p></li><li><p>
               For each channel, it'll do an anonymous checkout of packges and contrib/packages, then build .apm files for each package in the checkout.
             </p></li><li><p>
-              The files will be stored on the server's hard drive in the directory specified by the 'repository_dir' variable in the page script, by default "[acs_root_dir]/www/repository/".
+              The files will be stored on the server's hard drive in the directory specified by the 'repository_dir' variable in the page script, by default &quot;[acs_root_dir]/www/repository/&quot;.
             </p></li></ol></div></li><li><p>
           If you're on openacs.org, everything should now be fine. Otherwise, you need to move the entire directory tree to openacs.org:/web/openacs/www/repository, replacing what was already there.
         </p><p>This is automated on OpenACS.org by having a dedicated site just for building the repository, invoked with this shell script.  Since the page circumvents security checks for ease of use, the entire site is limited to local requests.  The script is called daily with a cron job.</p><pre class="programlisting">#!/bin/sh
 #set -x
 
 STATUS=`wget --output-document - http://127.0.0.1:8002/build-repository.tcl | grep DONE | wc -l`
 
-if [ $STATUS -eq "1" ]
+if [ $STATUS -eq &quot;1&quot; ]
 then
     rm -rf /web/openacs.org/www/repository.old
     mv /web/openacs.org/www/repository /web/openacs.org/www/repository.old
Index: openacs-4/packages/acs-core-docs/www/update-translations.html
===================================================================
RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/update-translations.html,v
diff -u -r1.10 -r1.10.4.1
--- openacs-4/packages/acs-core-docs/www/update-translations.html	17 Jul 2006 05:38:32 -0000	1.10
+++ openacs-4/packages/acs-core-docs/www/update-translations.html	3 Feb 2008 12:07:41 -0000	1.10.4.1
@@ -1,4 +1,5 @@
-<html><head><meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"><title>How to Update the translations</title><meta name="generator" content="DocBook XSL Stylesheets V1.70.1"><link rel="home" href="index.html" title="OpenACS Core Documentation"><link rel="up" href="releasing-openacs.html" title="Chapter�16.�Releasing OpenACS"><link rel="previous" href="releasing-package.html" title="How to package and release an OpenACS Package"><link rel="next" href="ix01.html" title="Index"><link rel="stylesheet" href="openacs.css" type="text/css"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><a href="http://openacs.org"><img src="/doc/images/alex.jpg" border="0" alt="Alex logo"></a><table width="100%" summary="Navigation header" border="0"><tr><td width="20%" align="left"><a accesskey="p" href="releasing-package.html">Prev</a> </td><th width="60%" align="center">Chapter�16.�Releasing OpenACS</th><td width="20%" align="right"> <a accesskey="n" href="ix01.html">Next</a></td></tr></table><hr></div><div class="section" lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="update-translations"></a>How to Update the translations</h2></div></div></div><div class="orderedlist"><ol type="1"><li><p>Identify any new locales that have been created.
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html><head><meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"><title>How to Update the translations</title><meta name="generator" content="DocBook XSL Stylesheets V1.60.1"><link rel="home" href="index.html" title="OpenACS Core Documentation"><link rel="up" href="releasing-openacs.html" title="Chapter�16.�Releasing OpenACS"><link rel="previous" href="releasing-package.html" title="How to package and release an OpenACS Package"><link rel="next" href="ix01.html" title="Index"><link rel="stylesheet" href="openacs.css" type="text/css"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><a href="http://openacs.org"><img src="/doc/images/alex.jpg" border="0" alt="Alex logo"></a><table width="100%" summary="Navigation header" border="0"><tr><td width="20%" align="left"><a accesskey="p" href="releasing-package.html">Prev</a> </td><th width="60%" align="center">Chapter�16.�Releasing OpenACS</th><td width="20%" align="right"> <a accesskey="n" href="ix01.html">Next</a></td></tr></table><hr></div><div class="section" lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="update-translations"></a>How to Update the translations</h2></div></div><div></div></div><div class="orderedlist"><ol type="1"><li><p>Identify any new locales that have been created.
         For each new locale, check the parameters, especially that
         the locale is in the format <span class="emphasis"><em>[two-letter code for
         language, lower-case]_[TWO-LETTER CODE FOR COUNTRY,
@@ -9,10 +10,10 @@
        values ('fa_IR', 'Farsi (IR)', 'fa', 'IR', 'FARSI', 'IRAN', 'AL24UTFFSS', 
         'windows-1256', 't', 'f');</pre><p>Put this command into the following four files.  For the
         upgrade files, the correct file name will depend on the
-        exact version.</p><div class="itemizedlist"><ul type="disc"><li><p><code class="computeroutput">/packages/acs-lang/sql/postgresql/ad-locales.sql</code></p></li><li><p><code class="computeroutput">/packages/acs-lang/sql/postgresql/upgrade/upgrade-<span class="replaceable"><span class="replaceable">current-version</span></span>.sql</code></p></li><li><p><code class="computeroutput">/packages/acs-lang/sql/oracle/ad-locales.sql</code></p></li><li><p><code class="computeroutput">/packages/acs-lang/sql/oracle/upgrade/upgrade-<span class="replaceable"><span class="replaceable">current-version</span></span>.sql</code></p></li></ul></div></li><li><p>Make a backup of the production database.  Restore it as a new database.  For example, if upgrading from OpenACS 5.1.1, and the site name/database name is translate-511, create translate-512b1.</p></li><li><p>Check out the latest code on the release branch (e.g., oacs-5-1) as a new site, using the new site name (e.g., /var/lib/aolserver/translate-512b1.  Copy over any local settings - usually, <code class="computeroutput">/etc/config.tcl</code> and <code class="computeroutput">/etc/daemontools/run</code> and modify appropriately.  Also, copy over several translation-server-only files:  
+        exact version.</p><div class="itemizedlist"><ul type="disc"><li><p><tt class="computeroutput">/packages/acs-lang/sql/postgresql/ad-locales.sql</tt></p></li><li><p><tt class="computeroutput">/packages/acs-lang/sql/postgresql/upgrade/upgrade-<span class="replaceable"><span class="replaceable">current-version</span></span>.sql</tt></p></li><li><p><tt class="computeroutput">/packages/acs-lang/sql/oracle/ad-locales.sql</tt></p></li><li><p><tt class="computeroutput">/packages/acs-lang/sql/oracle/upgrade/upgrade-<span class="replaceable"><span class="replaceable">current-version</span></span>.sql</tt></p></li></ul></div></li><li><p>Make a backup of the production database.  Restore it as a new database.  For example, if upgrading from OpenACS 5.1.1, and the site name/database name is translate-511, create translate-512b1.</p></li><li><p>Check out the latest code on the release branch (e.g., oacs-5-1) as a new site, using the new site name (e.g., /var/lib/aolserver/translate-512b1.  Copy over any local settings - usually, <tt class="computeroutput">/etc/config.tcl</tt> and <tt class="computeroutput">/etc/daemontools/run</tt> and modify appropriately.  Also, copy over several translation-server-only files:  
           </p><pre class="programlisting">...TBD
           </pre><p>
-          </p></li><li><p>Shut down the production site and put up a notice (no procedure on how to do this yet.)</p></li><li><p>Start the new site, and upgrade it.</p></li><li><p>Go to <a href="/acs-lang/admin" target="_top">ACS Lang admin page</a> and click "Import All Messages"</p></li><li><p>Resolve conflicts, if any, on the provided page.
+          </p></li><li><p>Shut down the production site and put up a notice (no procedure on how to do this yet.)</p></li><li><p>Start the new site, and upgrade it.</p></li><li><p>Go to <a href="/acs-lang/admin" target="_top">ACS Lang admin page</a> and click &quot;Import All Messages&quot;</p></li><li><p>Resolve conflicts, if any, on the provided page.
           </p></li><li><p>Back on the admin page, click the export link.  If there are conflicts, the messages will be exported anyway and any errors will be shown in the web interface.</p></li><li><p>Commit the message catalogs to cvs.</p></li><li><p>From the packages dir, run the acs-lang/bin/check-catalog.sh script.  (This checks for keys no longer in use and some other things.  Until it is rolled into the UI, do it manually and check the results and take whatever steps you can intuit you should do.)
-          </p></li><li><p>CVS commit the catalog files.  Done</p></li><li><p>If everything went well, reconfigure the new site to take over the role of the old site (<code class="computeroutput">/etc/config.tcl</code> and <code class="computeroutput">/etc/daemontools/run</code>).  Otherwise, bring the old site back up while investigating problems, and then repeat.
+          </p></li><li><p>CVS commit the catalog files.  Done</p></li><li><p>If everything went well, reconfigure the new site to take over the role of the old site (<tt class="computeroutput">/etc/config.tcl</tt> and <tt class="computeroutput">/etc/daemontools/run</tt>).  Otherwise, bring the old site back up while investigating problems, and then repeat.
           </p></li></ol></div></div><div class="navfooter"><hr><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="releasing-package.html">Prev</a> </td><td width="20%" align="center"><a accesskey="h" href="index.html">Home</a></td><td width="40%" align="right"> <a accesskey="n" href="ix01.html">Next</a></td></tr><tr><td width="40%" align="left">How to package and release an OpenACS Package </td><td width="20%" align="center"><a accesskey="u" href="releasing-openacs.html">Up</a></td><td width="40%" align="right"> Index</td></tr></table><hr><address><a href="mailto:docs@openacs.org">docs@openacs.org</a></address></div><a name="comments"></a><center><a href="http://openacs.org/doc/current/update-translations.html#comments">View comments on this page at openacs.org</a></center></body></html>
Index: openacs-4/packages/acs-core-docs/www/upgrade-4.5-to-4.6.html
===================================================================
RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/upgrade-4.5-to-4.6.html,v
diff -u -r1.20 -r1.20.4.1
--- openacs-4/packages/acs-core-docs/www/upgrade-4.5-to-4.6.html	17 Jul 2006 05:38:32 -0000	1.20
+++ openacs-4/packages/acs-core-docs/www/upgrade-4.5-to-4.6.html	3 Feb 2008 12:07:41 -0000	1.20.4.1
@@ -1,11 +1,12 @@
-<html><head><meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"><title>Upgrading 4.5 or higher to 4.6.3</title><meta name="generator" content="DocBook XSL Stylesheets V1.70.1"><link rel="home" href="index.html" title="OpenACS Core Documentation"><link rel="up" href="upgrade.html" title="Chapter�5.�Upgrading"><link rel="previous" href="upgrade-overview.html" title="Overview"><link rel="next" href="upgrade-4.6.3-to-5.html" title="Upgrading OpenACS 4.6.3 to 5.0"><link rel="stylesheet" href="openacs.css" type="text/css"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><a href="http://openacs.org"><img src="/doc/images/alex.jpg" border="0" alt="Alex logo"></a><table width="100%" summary="Navigation header" border="0"><tr><td width="20%" align="left"><a accesskey="p" href="upgrade-overview.html">Prev</a> </td><th width="60%" align="center">Chapter�5.�Upgrading</th><td width="20%" align="right"> <a accesskey="n" href="upgrade-4.6.3-to-5.html">Next</a></td></tr></table><hr></div><div class="sect1" lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="upgrade-4.5-to-4.6"></a>Upgrading 4.5 or higher to 4.6.3</h2></div></div></div><a class="indexterm" name="id977696"></a><p>The required platform for OpenACS 4.6 is the same as
-      4.5, with the exception of OpenFTS.  OpenACS 4.6 and later require OpenFTS 0.3.2 for full text search on PostGreSQL.  If you have OpenFTS 0.2, you'll need to upgrade.  </p><p>If upgrading from 4.4, you need to manually run acs-kernel/sql/postgres/upgrade-4.4-4.5.sql.  See <a href="http://openacs.org/bugtracker/openacs/bug?bug_number=632" target="_top">Bug #632</a></p><div class="itemizedlist"><ul type="circle"><li style="list-style-type: circle"><p>A computer with OpenACS 4.5.</p></li><li style="list-style-type: circle"><p><a href="http://openacs.org/projects/openacs/download/" target="_top">OpenACS 4.6 tarball</a> or CVS checkout/export.</p></li><li style="list-style-type: circle"><p>Required for Full Text Search on PostgreSQL: <a href="http://openfts.sourceforge.net" target="_top">OpenFTS 0.3.2</a></p></li></ul></div><div class="orderedlist"><ol type="1"><li><p><b>Make a Backup.�</b>Back up the database and file system (see <a href="snapshot-backup.html" title="Manual backup and recovery">the section called &#8220;Manual backup and recovery&#8221;</a>).</p></li><li><p><b>OPTIONAL: Upgrade OpenFTS.�</b><a href="upgrade-supporting.html#upgrade-openfts-0.2-to-0.3.2" title="Upgrading OpenFTS from 0.2 to 0.3.2">the section called &#8220;Upgrading OpenFTS from 0.2 to 0.3.2&#8221;</a></p></li><li><p>
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html><head><meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"><title>Upgrading 4.5 or higher to 4.6.3</title><meta name="generator" content="DocBook XSL Stylesheets V1.60.1"><link rel="home" href="index.html" title="OpenACS Core Documentation"><link rel="up" href="upgrade.html" title="Chapter�5.�Upgrading"><link rel="previous" href="upgrade-overview.html" title="Overview"><link rel="next" href="upgrade-4.6.3-to-5.html" title="Upgrading OpenACS 4.6.3 to 5.0"><link rel="stylesheet" href="openacs.css" type="text/css"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><a href="http://openacs.org"><img src="/doc/images/alex.jpg" border="0" alt="Alex logo"></a><table width="100%" summary="Navigation header" border="0"><tr><td width="20%" align="left"><a accesskey="p" href="upgrade-overview.html">Prev</a> </td><th width="60%" align="center">Chapter�5.�Upgrading</th><td width="20%" align="right"> <a accesskey="n" href="upgrade-4.6.3-to-5.html">Next</a></td></tr></table><hr></div><div class="sect1" lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="upgrade-4.5-to-4.6"></a>Upgrading 4.5 or higher to 4.6.3</h2></div></div><div></div></div><a class="indexterm" name="id2980654"></a><p>The required platform for OpenACS 4.6 is the same as
+      4.5, with the exception of OpenFTS.  OpenACS 4.6 and later require OpenFTS 0.3.2 for full text search on PostGreSQL.  If you have OpenFTS 0.2, you'll need to upgrade.  </p><p>If upgrading from 4.4, you need to manually run acs-kernel/sql/postgres/upgrade-4.4-4.5.sql.  See <a href="http://openacs.org/bugtracker/openacs/bug?bug_number=632" target="_top">Bug #632</a></p><div class="itemizedlist"><ul type="circle"><li style="list-style-type: circle"><p>A computer with OpenACS 4.5.</p></li><li style="list-style-type: circle"><p><a href="http://openacs.org/projects/openacs/download/" target="_top">OpenACS 4.6 tarball</a> or CVS checkout/export.</p></li><li style="list-style-type: circle"><p>Required for Full Text Search on PostgreSQL: <a href="http://openfts.sourceforge.net" target="_top">OpenFTS 0.3.2</a></p></li></ul></div><div class="orderedlist"><ol type="1"><li><p><b>Make a Backup.�</b>Back up the database and file system (see <a href="snapshot-backup.html" title="Manual backup and recovery">Section�, &#8220;Manual backup and recovery&#8221;</a>).</p></li><li><p><b>OPTIONAL: Upgrade OpenFTS.�</b><a href="upgrade-supporting.html#upgrade-openfts-0.2-to-0.3.2" title="Upgrading OpenFTS from 0.2 to 0.3.2">Section�, &#8220;Upgrading OpenFTS from 0.2 to 0.3.2&#8221;</a></p></li><li><p>
             Stop the server
-          </p><pre class="screen">[root root]# <strong class="userinput"><code>svc -d /service/<span class="replaceable"><span class="replaceable">$OPENACS_SERVICE_NAME</span></span></code></strong></pre></li><li><p><b>Upgrade the file system.�</b><a href="upgrade-openacs-files.html" title="Upgrading the OpenACS files">the section called &#8220;Upgrading the OpenACS files&#8221;</a></p></li><li><p>
-            <span class="strong"><strong>Start the server</strong></span>
-          </p><pre class="screen">[root root]# <strong class="userinput"><code>svc -u /service/<span class="replaceable"><span class="replaceable">$OPENACS_SERVICE_NAME</span></span></code></strong></pre></li><li><p><a name="upgrade-with-apm"></a><b>Use APM to upgrade the database.�</b></p><div class="orderedlist"><ol type="a"><li><p>Browse to the package manager, <code class="computeroutput">http://<span class="replaceable"><span class="replaceable">yourserver</span></span>/acs-admin/apm</code>.</p></li><li><p>Click <code class="computeroutput"><span class="guilabel"><span class="guilabel">Install packages.</span></span></code></p></li><li><p>Select the packages you want to install.  This should
+          </p><pre class="screen">[root root]# <b class="userinput"><tt>svc -d /service/<span class="replaceable"><span class="replaceable">$OPENACS_SERVICE_NAME</span></span></tt></b></pre></li><li><p><b>Upgrade the file system.�</b><a href="upgrade-openacs-files.html" title="Upgrading the OpenACS files">Section�, &#8220;Upgrading the OpenACS files&#8221;</a></p></li><li><p>
+            <span class="strong">Start the server</span>
+          </p><pre class="screen">[root root]# <b class="userinput"><tt>svc -u /service/<span class="replaceable"><span class="replaceable">$OPENACS_SERVICE_NAME</span></span></tt></b></pre></li><li><p><a name="upgrade-with-apm"></a><b>Use APM to upgrade the database.�</b></p><div class="orderedlist"><ol type="a"><li><p>Browse to the package manager, <tt class="computeroutput">http://<span class="replaceable"><span class="replaceable">yourserver</span></span>/acs-admin/apm</tt>.</p></li><li><p>Click <tt class="computeroutput"><span class="guilabel"><span class="guilabel">Install packages.</span></span></tt></p></li><li><p>Select the packages you want to install.  This should
               be everything that says
-              <code class="computeroutput">upgrade</code>, plus any new
+              <tt class="computeroutput">upgrade</tt>, plus any new
               packages you want.  It's safest to upgrade the kernel by
               itself, and then come back and upgrade the rest of the
-              desired packages in a second pass.</p></li><li><p>On the next screen, click <code class="computeroutput"><span class="guibutton"><span class="guibutton">Install Packages</span></span></code></p></li><li><p>When prompted, restart the server:</p><pre class="screen">[root root]# <strong class="userinput"><code>restart-aolserver <span class="replaceable"><span class="replaceable">$OPENACS_SERVICE_NAME</span></span></code></strong></pre></li><li><p>Wait a minute, then browse to the package manager, <code class="computeroutput">http://<span class="replaceable"><span class="replaceable">yourserver</span></span>/acs-admin/apm</code>.</p></li><li><p>Check that the kernel upgrade worked by clicking <code class="computeroutput"><span class="guilabel"><span class="guilabel">All</span></span></code> and making sure that <code class="computeroutput">acs-kernel</code> version is 5.2.3rc1.</p></li></ol></div></li><li><p><b>Rollback.�</b>If anything goes wrong, <a href="snapshot-backup.html#recovery">roll back</a> to the backup snapshot.</p></li></ol></div></div><div class="navfooter"><hr><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="upgrade-overview.html">Prev</a> </td><td width="20%" align="center"><a accesskey="h" href="index.html">Home</a></td><td width="40%" align="right"> <a accesskey="n" href="upgrade-4.6.3-to-5.html">Next</a></td></tr><tr><td width="40%" align="left">Overview </td><td width="20%" align="center"><a accesskey="u" href="upgrade.html">Up</a></td><td width="40%" align="right"> Upgrading OpenACS 4.6.3 to 5.0</td></tr></table><hr><address><a href="mailto:docs@openacs.org">docs@openacs.org</a></address></div><a name="comments"></a><center><a href="http://openacs.org/doc/current/upgrade-4.5-to-4.6.html#comments">View comments on this page at openacs.org</a></center></body></html>
+              desired packages in a second pass.</p></li><li><p>On the next screen, click <tt class="computeroutput"><span class="guibutton"><span class="guibutton">Install Packages</span></span></tt></p></li><li><p>When prompted, restart the server:</p><pre class="screen">[root root]# <b class="userinput"><tt>restart-aolserver <span class="replaceable"><span class="replaceable">$OPENACS_SERVICE_NAME</span></span></tt></b></pre></li><li><p>Wait a minute, then browse to the package manager, <tt class="computeroutput">http://<span class="replaceable"><span class="replaceable">yourserver</span></span>/acs-admin/apm</tt>.</p></li><li><p>Check that the kernel upgrade worked by clicking <tt class="computeroutput"><span class="guilabel"><span class="guilabel">All</span></span></tt> and making sure that <tt class="computeroutput">acs-kernel</tt> version is 5.4.0.</p></li></ol></div></li><li><p><b>Rollback.�</b>If anything goes wrong, <a href="snapshot-backup.html#recovery">roll back</a> to the backup snapshot.</p></li></ol></div></div><div class="navfooter"><hr><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="upgrade-overview.html">Prev</a> </td><td width="20%" align="center"><a accesskey="h" href="index.html">Home</a></td><td width="40%" align="right"> <a accesskey="n" href="upgrade-4.6.3-to-5.html">Next</a></td></tr><tr><td width="40%" align="left">Overview </td><td width="20%" align="center"><a accesskey="u" href="upgrade.html">Up</a></td><td width="40%" align="right"> Upgrading OpenACS 4.6.3 to 5.0</td></tr></table><hr><address><a href="mailto:docs@openacs.org">docs@openacs.org</a></address></div><a name="comments"></a><center><a href="http://openacs.org/doc/current/upgrade-4.5-to-4.6.html#comments">View comments on this page at openacs.org</a></center></body></html>
Index: openacs-4/packages/acs-core-docs/www/upgrade-4.6.3-to-5.html
===================================================================
RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/upgrade-4.6.3-to-5.html,v
diff -u -r1.10 -r1.10.4.1
--- openacs-4/packages/acs-core-docs/www/upgrade-4.6.3-to-5.html	17 Jul 2006 05:38:32 -0000	1.10
+++ openacs-4/packages/acs-core-docs/www/upgrade-4.6.3-to-5.html	3 Feb 2008 12:07:41 -0000	1.10.4.1
@@ -1,11 +1,12 @@
-<html><head><meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"><title>Upgrading OpenACS 4.6.3 to 5.0</title><meta name="generator" content="DocBook XSL Stylesheets V1.70.1"><link rel="home" href="index.html" title="OpenACS Core Documentation"><link rel="up" href="upgrade.html" title="Chapter�5.�Upgrading"><link rel="previous" href="upgrade-4.5-to-4.6.html" title="Upgrading 4.5 or higher to 4.6.3"><link rel="next" href="upgrade-5-0-dot.html" title="Upgrading an OpenACS 5.0.0 or greater installation"><link rel="stylesheet" href="openacs.css" type="text/css"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><a href="http://openacs.org"><img src="/doc/images/alex.jpg" border="0" alt="Alex logo"></a><table width="100%" summary="Navigation header" border="0"><tr><td width="20%" align="left"><a accesskey="p" href="upgrade-4.5-to-4.6.html">Prev</a> </td><th width="60%" align="center">Chapter�5.�Upgrading</th><td width="20%" align="right"> <a accesskey="n" href="upgrade-5-0-dot.html">Next</a></td></tr></table><hr></div><div class="sect1" lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="upgrade-4.6.3-to-5"></a>Upgrading OpenACS 4.6.3 to 5.0</h2></div></div></div><div class="itemizedlist"><ul type="disc"><li><p><b>Oracle.�</b>This forum posting documents 
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html><head><meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"><title>Upgrading OpenACS 4.6.3 to 5.0</title><meta name="generator" content="DocBook XSL Stylesheets V1.60.1"><link rel="home" href="index.html" title="OpenACS Core Documentation"><link rel="up" href="upgrade.html" title="Chapter�5.�Upgrading"><link rel="previous" href="upgrade-4.5-to-4.6.html" title="Upgrading 4.5 or higher to 4.6.3"><link rel="next" href="upgrade-5-0-dot.html" title="Upgrading an OpenACS 5.0.0 or greater installation"><link rel="stylesheet" href="openacs.css" type="text/css"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><a href="http://openacs.org"><img src="/doc/images/alex.jpg" border="0" alt="Alex logo"></a><table width="100%" summary="Navigation header" border="0"><tr><td width="20%" align="left"><a accesskey="p" href="upgrade-4.5-to-4.6.html">Prev</a> </td><th width="60%" align="center">Chapter�5.�Upgrading</th><td width="20%" align="right"> <a accesskey="n" href="upgrade-5-0-dot.html">Next</a></td></tr></table><hr></div><div class="sect1" lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="upgrade-4.6.3-to-5"></a>Upgrading OpenACS 4.6.3 to 5.0</h2></div></div><div></div></div><div class="itemizedlist"><ul type="disc"><li><p><b>Oracle.�</b>This forum posting documents 
             <a href="http://openacs.org/forums/message-view?message_id=201394" target="_top">
             how to upgrade an Oracle installation from OpenACS 4.6.3 to 5
             </a>.
-            </p></li><li><p><b>PostGreSQL.�</b>You must use PostGreSQL 7.3.x or newer to upgrade OpenACS beyond 4.6.3.  See <a href="upgrade-supporting.html#upgrade-postgres-7.2-to-7.3" title="Upgrading from PostGreSQL 7.2 to 7.3">Upgrade PostGreSQL to 7.3</a>; <a href="individual-programs.html#compatibility-matrix" title="Table�2.2.�Version Compatibility Matrix">Table�2.2, &#8220;Version Compatibility Matrix&#8221;</a>
-            </p><div class="orderedlist"><ol type="1"><li><p><a href="snapshot-backup.html" title="Manual backup and recovery">Back up the database and file system.</a></p></li><li><p><b>Upgrade the file system for packages/acs-kernel.�</b><a href="upgrade-openacs-files.html" title="Upgrading the OpenACS files">the section called &#8220;Upgrading the OpenACS files&#8221;</a></p></li><li><p>Upgrade the kernel manually. (There is a script to do most of the rest: <a href="http://cvs.openacs.org/cvs/openacs-4/contrib/misc/upgrade_4.6_to_5.0.sh?only_with_tag=HEAD" target="_top">/contrib/misc/upgrade_4.6_to_5.0.sh on HEAD</a>).  You'll still have to do a lot of stuff manually, but automated trial and error is much more fun.)</p><pre class="screen">[root root]# <strong class="userinput"><code>su - <span class="replaceable"><span class="replaceable">$OPENACS_SERVICE_NAME</span></span></code></strong>
-[$OPENACS_SERVICE_NAME aolserver]$ <strong class="userinput"><code>cd /var/lib/aolserver/ <span class="replaceable"><span class="replaceable">$OPENACS_SERVICE_NAME</span></span>/packages/acs-kernel/sql/postgresql/upgrade</code></strong></pre><p>
-                Manually execute each of the upgrade scripts in sequence, either from within psql or from the command line with commands such as <code class="computeroutput"><strong class="userinput"><code>psql -f upgrade-4.6.3-4.6.4.sql  <span class="replaceable"><span class="replaceable">$OPENACS_SERVICE_NAME</span></span></code></strong></code>.  Run the scripts in this order (order is tentative, not verified):
+            </p></li><li><p><b>PostGreSQL.�</b>You must use PostGreSQL 7.3.x or newer to upgrade OpenACS beyond 4.6.3.  See <a href="upgrade-supporting.html#upgrade-postgres-7.2-to-7.3" title="Upgrading from PostGreSQL 7.2 to 7.3">Upgrade PostGreSQL to 7.3</a>; <a href="individual-programs.html#compatibility-matrix" title="Table�2.2.�Version Compatibility Matrix">Table�2.2</a>
+            </p><div class="orderedlist"><ol type="1"><li><p><a href="snapshot-backup.html" title="Manual backup and recovery">Back up the database and file system.</a></p></li><li><p><b>Upgrade the file system for packages/acs-kernel.�</b><a href="upgrade-openacs-files.html" title="Upgrading the OpenACS files">Section�, &#8220;Upgrading the OpenACS files&#8221;</a></p></li><li><p>Upgrade the kernel manually. (There is a script to do most of the rest: <a href="http://cvs.openacs.org/cvs/openacs-4/contrib/misc/upgrade_4.6_to_5.0.sh?only_with_tag=HEAD" target="_top">/contrib/misc/upgrade_4.6_to_5.0.sh on HEAD</a>).  You'll still have to do a lot of stuff manually, but automated trial and error is much more fun.)</p><pre class="screen">[root root]# <b class="userinput"><tt>su - <span class="replaceable"><span class="replaceable">$OPENACS_SERVICE_NAME</span></span></tt></b>
+[$OPENACS_SERVICE_NAME aolserver]$ <b class="userinput"><tt>cd /var/lib/aolserver/ <span class="replaceable"><span class="replaceable">$OPENACS_SERVICE_NAME</span></span>/packages/acs-kernel/sql/postgresql/upgrade</tt></b></pre><p>
+                Manually execute each of the upgrade scripts in sequence, either from within psql or from the command line with commands such as <tt class="computeroutput"><b class="userinput"><tt>psql -f upgrade-4.6.3-4.6.4.sql  <span class="replaceable"><span class="replaceable">$OPENACS_SERVICE_NAME</span></span></tt></b></tt>.  Run the scripts in this order (order is tentative, not verified):
               </p><pre class="programlisting">psql -f upgrade-4.6.3-4.6.4.sql <span class="replaceable"><span class="replaceable">$OPENACS_SERVICE_NAME</span></span>
 psql -f upgrade-4.6.4-4.6.5.sql <span class="replaceable"><span class="replaceable">$OPENACS_SERVICE_NAME</span></span>
 psql -f upgrade-4.6.5-4.6.6.sql <span class="replaceable"><span class="replaceable">$OPENACS_SERVICE_NAME</span></span>
@@ -19,20 +20,20 @@
 psql -f upgrade-5.0.0a4-5.0.0a5.sql <span class="replaceable"><span class="replaceable">$OPENACS_SERVICE_NAME</span></span>
 psql -f upgrade-5.0.0b1-5.0.0b2.sql <span class="replaceable"><span class="replaceable">$OPENACS_SERVICE_NAME</span></span>
 psql -f upgrade-5.0.0b2-5.0.0b3.sql <span class="replaceable"><span class="replaceable">$OPENACS_SERVICE_NAME</span></span>
-psql -f upgrade-5.0.0b3-5.0.0b4.sql <span class="replaceable"><span class="replaceable">$OPENACS_SERVICE_NAME</span></span></pre></li><li><p>Upgrade ACS Service Contracts manually:</p><pre class="screen">[$OPENACS_SERVICE_NAME aolserver]$ <strong class="userinput"><code>cd /var/lib/aolserver/ <span class="replaceable"><span class="replaceable">$OPENACS_SERVICE_NAME</span></span>/packages/acs-service-contracts/sql/postgresql/upgrade</code></strong>
+psql -f upgrade-5.0.0b3-5.0.0b4.sql <span class="replaceable"><span class="replaceable">$OPENACS_SERVICE_NAME</span></span></pre></li><li><p>Upgrade ACS Service Contracts manually:</p><pre class="screen">[$OPENACS_SERVICE_NAME aolserver]$ <b class="userinput"><tt>cd /var/lib/aolserver/ <span class="replaceable"><span class="replaceable">$OPENACS_SERVICE_NAME</span></span>/packages/acs-service-contracts/sql/postgresql/upgrade</tt></b>
 psql -f upgrade-4.7d2-4.7d3.sql <span class="replaceable"><span class="replaceable">$OPENACS_SERVICE_NAME</span></span>
-</pre></li><li><p>Load acs-authentication data model.</p><pre class="screen"><strong class="userinput"><code>psql -f /var/lib/aolserver/<span class="replaceable"><span class="replaceable">$OPENACS_SERVICE_NAME</span></span>/openacs-5/packages/acs-authentication/sql/postgresql/acs-authentication-create.sql <span class="replaceable"><span class="replaceable">$OPENACS_SERVICE_NAME</span></span></code></strong></pre></li><li><p>Load acs-lang data model.</p><pre class="screen"><strong class="userinput"><code>psql -f /var/lib/aolserver/<span class="replaceable"><span class="replaceable">$OPENACS_SERVICE_NAME</span></span>/packages/acs-lang/sql/postgresql/acs-lang-create.sql <span class="replaceable"><span class="replaceable">$OPENACS_SERVICE_NAME</span></span></code></strong></pre></li><li><p>(This step may overlap with the two previous steps, but I think it's harmless?) Create a file which will be executed on startup which takes care of a few issues with authentication and internationalization: create <span class="replaceable"><span class="replaceable">$OPENACS_SERVICE_NAME</span></span>/tcl/zzz-postload.tcl containing:</p><pre class="programlisting">if {![apm_package_installed_p acs-lang]} {
+</pre></li><li><p>Load acs-authentication data model.</p><pre class="screen"><b class="userinput"><tt>psql -f /var/lib/aolserver/<span class="replaceable"><span class="replaceable">$OPENACS_SERVICE_NAME</span></span>/openacs-5/packages/acs-authentication/sql/postgresql/acs-authentication-create.sql <span class="replaceable"><span class="replaceable">$OPENACS_SERVICE_NAME</span></span></tt></b></pre></li><li><p>Load acs-lang data model.</p><pre class="screen"><b class="userinput"><tt>psql -f /var/lib/aolserver/<span class="replaceable"><span class="replaceable">$OPENACS_SERVICE_NAME</span></span>/packages/acs-lang/sql/postgresql/acs-lang-create.sql <span class="replaceable"><span class="replaceable">$OPENACS_SERVICE_NAME</span></span></tt></b></pre></li><li><p>(This step may overlap with the two previous steps, but I think it's harmless?) Create a file which will be executed on startup which takes care of a few issues with authentication and internationalization: create <span class="replaceable"><span class="replaceable">$OPENACS_SERVICE_NAME</span></span>/tcl/zzz-postload.tcl containing:</p><pre class="programlisting">if {![apm_package_installed_p acs-lang]} {
 apm_package_install -enable -mount_path acs-lang [acs_root_dir]/packages/acs-lang/acs-lang.info
-lang::catalog::import -locales [list "en_US"]
+lang::catalog::import -locales [list &quot;en_US&quot;]
 }
 
 if {![apm_package_installed_p acs-authentication]} {
 apm_package_install -enable [acs_root_dir]/packages/acs-authentication/acs-authentication.info
-apm_parameter_register "UsePasswordWidgetForUsername" \
-"Should we hide what the user types in the username
+apm_parameter_register &quot;UsePasswordWidgetForUsername&quot; \
+&quot;Should we hide what the user types in the username
 field, the way we do with the password field? Set
 this to 1 if you are using sensitive information
-such as social security number for username." \
+such as social security number for username.&quot; \
 acs-kernel 0 number \
 security 1 1
 parameter::set_value -package_id [ad_acs_kernel_id] -parameter UsePasswordWidgetForUsername -value 0
Index: openacs-4/packages/acs-core-docs/www/upgrade-5-0-dot.html
===================================================================
RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/upgrade-5-0-dot.html,v
diff -u -r1.11 -r1.11.4.1
--- openacs-4/packages/acs-core-docs/www/upgrade-5-0-dot.html	17 Jul 2006 05:38:32 -0000	1.11
+++ openacs-4/packages/acs-core-docs/www/upgrade-5-0-dot.html	3 Feb 2008 12:07:41 -0000	1.11.4.1
@@ -1 +1,2 @@
-<html><head><meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"><title>Upgrading an OpenACS 5.0.0 or greater installation</title><meta name="generator" content="DocBook XSL Stylesheets V1.70.1"><link rel="home" href="index.html" title="OpenACS Core Documentation"><link rel="up" href="upgrade.html" title="Chapter�5.�Upgrading"><link rel="previous" href="upgrade-4.6.3-to-5.html" title="Upgrading OpenACS 4.6.3 to 5.0"><link rel="next" href="upgrade-openacs-files.html" title="Upgrading the OpenACS files"><link rel="stylesheet" href="openacs.css" type="text/css"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><a href="http://openacs.org"><img src="/doc/images/alex.jpg" border="0" alt="Alex logo"></a><table width="100%" summary="Navigation header" border="0"><tr><td width="20%" align="left"><a accesskey="p" href="upgrade-4.6.3-to-5.html">Prev</a> </td><th width="60%" align="center">Chapter�5.�Upgrading</th><td width="20%" align="right"> <a accesskey="n" href="upgrade-openacs-files.html">Next</a></td></tr></table><hr></div><div class="sect1" lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="upgrade-5-0-dot"></a>Upgrading an OpenACS 5.0.0 or greater installation</h2></div></div></div><div class="itemizedlist"><ul type="disc"><li><p><b>Upgrading a stock site.�</b>If you have no custom code, and your site is not in a CVS repository, upgrade with these steps:</p><div class="orderedlist"><ol type="1"><li><p>Go to <a href="/acs-admin/install" target="_top">/acs-admin/install/</a> and click "Upgrade Your System" in "Install from OpenACS Repository"</p></li><li><p>Select all of the packages you want to upgrade and proceed</p></li><li><p>After upgrade is complete, restart the server as indicated.</p></li><li><p>If you are using locales other than en_US, go to acs-lang/admin and "Import all Messages" to load the new translated messages.  Your local translations, if any, will take precedence over imported translations.</p></li></ol></div></li><li><p><b>Upgrading a Custom or CVS site.�</b>If you have custom code, and your site is in a CVS repository, upgrade with these steps:</p><div class="orderedlist"><ol type="1"><li><p><b>Upgrade the file system for all packages in use.�</b><a href="upgrade-openacs-files.html" title="Upgrading the OpenACS files">the section called &#8220;Upgrading the OpenACS files&#8221;</a></p></li><li><p>Go to <a href="/acs-admin/install" target="_top">/acs-admin/install/</a> and click "Upgrade Your System" in "Install from local file system"</p></li><li><p>Select all of the packages you want to upgrade and proceed</p></li><li><p>After upgrade is complete, restart the server as indicated.</p></li><li><p>If you are using locales other than en_US, go to acs-lang/admin and "Import all Messages" to load the new translated messages.  Your local translations, if any, will take precedence over imported translations.</p></li></ol></div></li></ul></div></div><div class="navfooter"><hr><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="upgrade-4.6.3-to-5.html">Prev</a> </td><td width="20%" align="center"><a accesskey="h" href="index.html">Home</a></td><td width="40%" align="right"> <a accesskey="n" href="upgrade-openacs-files.html">Next</a></td></tr><tr><td width="40%" align="left">Upgrading OpenACS 4.6.3 to 5.0 </td><td width="20%" align="center"><a accesskey="u" href="upgrade.html">Up</a></td><td width="40%" align="right"> Upgrading the OpenACS files</td></tr></table><hr><address><a href="mailto:docs@openacs.org">docs@openacs.org</a></address></div><a name="comments"></a><center><a href="http://openacs.org/doc/current/upgrade-5-0-dot.html#comments">View comments on this page at openacs.org</a></center></body></html>
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html><head><meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"><title>Upgrading an OpenACS 5.0.0 or greater installation</title><meta name="generator" content="DocBook XSL Stylesheets V1.60.1"><link rel="home" href="index.html" title="OpenACS Core Documentation"><link rel="up" href="upgrade.html" title="Chapter�5.�Upgrading"><link rel="previous" href="upgrade-4.6.3-to-5.html" title="Upgrading OpenACS 4.6.3 to 5.0"><link rel="next" href="upgrade-openacs-files.html" title="Upgrading the OpenACS files"><link rel="stylesheet" href="openacs.css" type="text/css"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><a href="http://openacs.org"><img src="/doc/images/alex.jpg" border="0" alt="Alex logo"></a><table width="100%" summary="Navigation header" border="0"><tr><td width="20%" align="left"><a accesskey="p" href="upgrade-4.6.3-to-5.html">Prev</a> </td><th width="60%" align="center">Chapter�5.�Upgrading</th><td width="20%" align="right"> <a accesskey="n" href="upgrade-openacs-files.html">Next</a></td></tr></table><hr></div><div class="sect1" lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="upgrade-5-0-dot"></a>Upgrading an OpenACS 5.0.0 or greater installation</h2></div></div><div></div></div><div class="itemizedlist"><ul type="disc"><li><p><b>Upgrading a stock site.�</b>If you have no custom code, and your site is not in a CVS repository, upgrade with these steps:</p><div class="orderedlist"><ol type="1"><li><p>Go to <a href="/acs-admin/install" target="_top">/acs-admin/install/</a> and click &quot;Upgrade Your System&quot; in &quot;Install from OpenACS Repository&quot;</p></li><li><p>Select all of the packages you want to upgrade and proceed</p></li><li><p>After upgrade is complete, restart the server as indicated.</p></li><li><p>If you are using locales other than en_US, go to acs-lang/admin and &quot;Import all Messages&quot; to load the new translated messages.  Your local translations, if any, will take precedence over imported translations.</p></li></ol></div></li><li><p><b>Upgrading a Custom or CVS site.�</b>If you have custom code, and your site is in a CVS repository, upgrade with these steps:</p><div class="orderedlist"><ol type="1"><li><p><b>Upgrade the file system for all packages in use.�</b><a href="upgrade-openacs-files.html" title="Upgrading the OpenACS files">Section�, &#8220;Upgrading the OpenACS files&#8221;</a></p></li><li><p>Go to <a href="/acs-admin/install" target="_top">/acs-admin/install/</a> and click &quot;Upgrade Your System&quot; in &quot;Install from local file system&quot;</p></li><li><p>Select all of the packages you want to upgrade and proceed</p></li><li><p>After upgrade is complete, restart the server as indicated.</p></li><li><p>If you are using locales other than en_US, go to acs-lang/admin and &quot;Import all Messages&quot; to load the new translated messages.  Your local translations, if any, will take precedence over imported translations.</p></li></ol></div></li></ul></div></div><div class="navfooter"><hr><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="upgrade-4.6.3-to-5.html">Prev</a> </td><td width="20%" align="center"><a accesskey="h" href="index.html">Home</a></td><td width="40%" align="right"> <a accesskey="n" href="upgrade-openacs-files.html">Next</a></td></tr><tr><td width="40%" align="left">Upgrading OpenACS 4.6.3 to 5.0 </td><td width="20%" align="center"><a accesskey="u" href="upgrade.html">Up</a></td><td width="40%" align="right"> Upgrading the OpenACS files</td></tr></table><hr><address><a href="mailto:docs@openacs.org">docs@openacs.org</a></address></div><a name="comments"></a><center><a href="http://openacs.org/doc/current/upgrade-5-0-dot.html#comments">View comments on this page at openacs.org</a></center></body></html>
Index: openacs-4/packages/acs-core-docs/www/upgrade-openacs-files.html
===================================================================
RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/upgrade-openacs-files.html,v
diff -u -r1.20 -r1.20.4.1
--- openacs-4/packages/acs-core-docs/www/upgrade-openacs-files.html	17 Jul 2006 05:38:32 -0000	1.20
+++ openacs-4/packages/acs-core-docs/www/upgrade-openacs-files.html	3 Feb 2008 12:07:41 -0000	1.20.4.1
@@ -1,4 +1,5 @@
-<html><head><meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"><title>Upgrading the OpenACS files</title><meta name="generator" content="DocBook XSL Stylesheets V1.70.1"><link rel="home" href="index.html" title="OpenACS Core Documentation"><link rel="up" href="upgrade.html" title="Chapter�5.�Upgrading"><link rel="previous" href="upgrade-5-0-dot.html" title="Upgrading an OpenACS 5.0.0 or greater installation"><link rel="next" href="upgrade-supporting.html" title="Upgrading Platform components"><link rel="stylesheet" href="openacs.css" type="text/css"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><a href="http://openacs.org"><img src="/doc/images/alex.jpg" border="0" alt="Alex logo"></a><table width="100%" summary="Navigation header" border="0"><tr><td width="20%" align="left"><a accesskey="p" href="upgrade-5-0-dot.html">Prev</a> </td><th width="60%" align="center">Chapter�5.�Upgrading</th><td width="20%" align="right"> <a accesskey="n" href="upgrade-supporting.html">Next</a></td></tr></table><hr></div><div class="sect1" lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="upgrade-openacs-files"></a>Upgrading the OpenACS files</h2></div></div></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id1069981"></a>Chosing a Method to Upgrade your Files</h3></div></div></div><p>OpenACS is distributed in many different ways:
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html><head><meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"><title>Upgrading the OpenACS files</title><meta name="generator" content="DocBook XSL Stylesheets V1.60.1"><link rel="home" href="index.html" title="OpenACS Core Documentation"><link rel="up" href="upgrade.html" title="Chapter�5.�Upgrading"><link rel="previous" href="upgrade-5-0-dot.html" title="Upgrading an OpenACS 5.0.0 or greater installation"><link rel="next" href="upgrade-supporting.html" title="Upgrading Platform components"><link rel="stylesheet" href="openacs.css" type="text/css"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><a href="http://openacs.org"><img src="/doc/images/alex.jpg" border="0" alt="Alex logo"></a><table width="100%" summary="Navigation header" border="0"><tr><td width="20%" align="left"><a accesskey="p" href="upgrade-5-0-dot.html">Prev</a> </td><th width="60%" align="center">Chapter�5.�Upgrading</th><td width="20%" align="right"> <a accesskey="n" href="upgrade-supporting.html">Next</a></td></tr></table><hr></div><div class="sect1" lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="upgrade-openacs-files"></a>Upgrading the OpenACS files</h2></div></div><div></div></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id2980110"></a>Chosing a Method to Upgrade your Files</h3></div></div><div></div></div><p>OpenACS is distributed in many different ways:
         </p><div class="itemizedlist"><ul type="disc"><li><p>as a collection of files</p></li><li><p> as one big tarball</p></li><li><p> via CVS</p></li><li><p> via automatic download from within the APM
             (package manager)</p></li></ul></div><p>
       </p><p>Upgrades work by first changing the file system (via any
@@ -9,29 +10,29 @@
         using the last method, you can skip this page. This page
         describes whether or not you need to be upgrading using this
         page or not:
-        <a href="upgrade-5-0-dot.html" title="Upgrading an OpenACS 5.0.0 or greater installation">the section called &#8220;Upgrading an OpenACS 5.0.0 or greater installation&#8221;</a>
-      </p></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id1070030"></a>Methods of upgrading OpenACS files</h3></div></div></div><div class="itemizedlist"><ul type="disc"><li><p><b>Upgrading files for a site which is not in a CVS repository.�</b>Unpack the tarball into a new directory and copy its
+        <a href="upgrade-5-0-dot.html" title="Upgrading an OpenACS 5.0.0 or greater installation">Section�, &#8220;Upgrading an OpenACS 5.0.0 or greater installation&#8221;</a>
+      </p></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id2980171"></a>Methods of upgrading OpenACS files</h3></div></div><div></div></div><div class="itemizedlist"><ul type="disc"><li><p><b>Upgrading files for a site which is not in a CVS repository.�</b>Unpack the tarball into a new directory and copy its
           contents on top of your working directory. Or just 'install
           software', select remote repository, and upgrade your files
-          from there.</p><pre class="screen">[root root]# <strong class="userinput"><code>su - <span class="replaceable"><span class="replaceable">$OPENACS_SERVICE_NAME</span></span></code></strong>
-[$OPENACS_SERVICE_NAME aolserver]$ <strong class="userinput"><code>cd /var/lib/aolserver</code></strong>
-[$OPENACS_SERVICE_NAME web]$ <strong class="userinput"><code>tar xzf /var/tmp/openacs-5-1.tar.gz</code></strong>
-[$OPENACS_SERVICE_NAME web]$ <strong class="userinput"><code>cp -r openacs-5-1/* openacs-4</code></strong>
-[$OPENACS_SERVICE_NAME openacs-upgrade]$ <strong class="userinput"><code>exit</code></strong>
+          from there.</p><pre class="screen">[root root]# <b class="userinput"><tt>su - <span class="replaceable"><span class="replaceable">$OPENACS_SERVICE_NAME</span></span></tt></b>
+[$OPENACS_SERVICE_NAME aolserver]$ <b class="userinput"><tt>cd /var/lib/aolserver</tt></b>
+[$OPENACS_SERVICE_NAME web]$ <b class="userinput"><tt>tar xzf /var/tmp/openacs-5-1.tar.gz</tt></b>
+[$OPENACS_SERVICE_NAME web]$ <b class="userinput"><tt>cp -r openacs-5-1/* openacs-4</tt></b>
+[$OPENACS_SERVICE_NAME openacs-upgrade]$ <b class="userinput"><tt>exit</tt></b>
 [root root]#
 <span class="action"><span class="action">su - <span class="replaceable"><span class="replaceable">$OPENACS_SERVICE_NAME</span></span>
 cd /var/lib/aolserver
 tar xzf /var/tmp/openacs-5-1.tgz
 cp -r openacs-5-1/* openacs-4
 exit</span></span></pre></li><li><p>
-          <span class="strong"><strong>Upgrading files for a site in a private CVS repository</strong></span>
+          <span class="strong">Upgrading files for a site in a private CVS repository</span>
         </p><p>Many OpenACS site developers operate their own CVS
         repository to keep track of local customizations. In this
         section, we describe how to upgrade your local CVS repository
         with the latest OpenACS version, without overriding your own
         local customizations. </p><p>This diagram explains the basic idea. However, the
         labels are incorrect. Step 1(a) has been removed, and Step
-        1(b) should be labelled Step 1.</p><div class="figure"><a name="id1070125"></a><p class="title"><b>Figure�5.2.�Upgrading a local CVS repository</b></p><div class="figure-contents"><div class="mediaobject" align="center"><img src="images/upgrade-cvs.png" align="middle" alt="Upgrading a local CVS repository"></div></div></div><br class="figure-break"><div class="itemizedlist"><ul type="circle"><li><p><b>Step 0: Set up a working CVS checkout.�</b>To get your OpenACS code into your local CVS
+        1(b) should be labelled Step 1.</p><div class="figure"><a name="id2980291"></a><p class="title"><b>Figure�5.2.�Upgrading a local CVS repository</b></p><div class="mediaobject" align="center"><img src="../images/upgrade-cvs.png" align="middle" alt="Upgrading a local CVS repository"></div></div><div class="itemizedlist"><ul type="circle"><li><p><b>Step 0: Set up a working CVS checkout.�</b>To get your OpenACS code into your local CVS
                 repository, you will set up a working CVS checkout of
                 OpenACS. When you want to update your site, you'll
                 update the working CVS checkout, import those changes
@@ -46,62 +47,62 @@
         using OpenACS 5.1,x, you will need a 5.1 checkout. That will
         be good for 5.1, 5.11, 5.12, and so on. But when you want to
         upgrade to OpenACS 5.2, you'll need to check out another
-        branch.</p><p>The <span class="replaceable"><span class="replaceable">openacs-5-1-compat</span></span> tag identifies the latest released version of OpenACS 5.1 (ie, 5.1.3 or 5.1.4) and the latest compatible version of each package.  Each minor release of OpenACS since 5.0 has this tagging structure.  For example, OpenACS 5.1.x has <code class="computeroutput">openacs-5-1-compat</code>.</p><p>You will want to separately check out all the
+        branch.</p><p>The <span class="replaceable"><span class="replaceable">openacs-5-1-compat</span></span> tag identifies the latest released version of OpenACS 5.1 (ie, 5.1.3 or 5.1.4) and the latest compatible version of each package.  Each minor release of OpenACS since 5.0 has this tagging structure.  For example, OpenACS 5.1.x has <tt class="computeroutput">openacs-5-1-compat</tt>.</p><p>You will want to separately check out all the
                 packages you are using.
-              </p><pre class="screen">[root root]# <strong class="userinput"><code>su - <span class="replaceable"><span class="replaceable">$OPENACS_SERVICE_NAME</span></span></code></strong>
-[$OPENACS_SERVICE_NAME aolserver]$ <strong class="userinput"><code>cd /var/lib/aolserver</code></strong>
-[$OPENACS_SERVICE_NAME aolserver]$ <strong class="userinput"><code>cvs -d :pserver:anonymous@cvs.openacs.org:/cvsroot checkout -r <span class="replaceable"><span class="replaceable">openacs-5-1-compat</span></span> acs-core</code></strong>
-[$OPENACS_SERVICE_NAME aolserver]$ <strong class="userinput"><code>cd openacs-4/packages</code></strong>
-[$OPENACS_SERVICE_NAME aolserver]$ <strong class="userinput"><code>cvs -d :pserver:anonymous@cvs.openacs.org:/cvsroot checkout -r <span class="replaceable"><span class="replaceable">openacs-5-1-compat</span></span> <span class="replaceable"><span class="replaceable">packagename packagename2...</span></span></code></strong>
-[$OPENACS_SERVICE_NAME aolserver]$ <strong class="userinput"><code>cd ../..</code></strong>
-[$OPENACS_SERVICE_NAME aolserver]$ <strong class="userinput"><code>mv openacs-4 <span class="replaceable"><span class="replaceable">openacs-5-1</span></span></code></strong></pre><p>Make sure your working CVS checkout doesn't have
+              </p><pre class="screen">[root root]# <b class="userinput"><tt>su - <span class="replaceable"><span class="replaceable">$OPENACS_SERVICE_NAME</span></span></tt></b>
+[$OPENACS_SERVICE_NAME aolserver]$ <b class="userinput"><tt>cd /var/lib/aolserver</tt></b>
+[$OPENACS_SERVICE_NAME aolserver]$ <b class="userinput"><tt>cvs -d :pserver:anonymous@cvs.openacs.org:/cvsroot checkout -r <span class="replaceable"><span class="replaceable">openacs-5-1-compat</span></span> acs-core</tt></b>
+[$OPENACS_SERVICE_NAME aolserver]$ <b class="userinput"><tt>cd openacs-4/packages</tt></b>
+[$OPENACS_SERVICE_NAME aolserver]$ <b class="userinput"><tt>cvs -d :pserver:anonymous@cvs.openacs.org:/cvsroot checkout -r <span class="replaceable"><span class="replaceable">openacs-5-1-compat</span></span> <span class="replaceable"><span class="replaceable">packagename packagename2...</span></span></tt></b>
+[$OPENACS_SERVICE_NAME aolserver]$ <b class="userinput"><tt>cd ../..</tt></b>
+[$OPENACS_SERVICE_NAME aolserver]$ <b class="userinput"><tt>mv openacs-4 <span class="replaceable"><span class="replaceable">openacs-5-1</span></span></tt></b></pre><p>Make sure your working CVS checkout doesn't have
               the entire CVS tree from OpenACS. A good way to check
               this is if it has a contrib directory. If it does, you
               probably checked out the entire tree. You might want to
               start over, remove your working CVS checkout, and try
               again.
               </p></li><li><p><b>Step 1: Import new OpenACS code.�</b>
-              </p><div class="itemizedlist"><ul type="square"><li><p><b>Update CVS.�</b>Update your local CVS working checkout (unless
-                      you just set it up). </p><pre class="screen">[root root]# <strong class="userinput"><code>su - <span class="replaceable"><span class="replaceable">$OPENACS_SERVICE_NAME</span></span></code></strong>
-[$OPENACS_SERVICE_NAME aolserver]$ <strong class="userinput"><code>cd /var/lib/aolserver/<span class="replaceable"><span class="replaceable">openacs-5-1</span></span></code></strong>
-[$OPENACS_SERVICE_NAME aolserver]$ <strong class="userinput"><code>cvs up -Pd ChangeLog *.txt bin etc tcl www packages/*</code></strong></pre></li><li><p><b>Update a single package via cvs working checkout.�</b>You can add or upgrade a single package at a time, if you already have a cvs working directory.</p><pre class="screen">[root root]# <strong class="userinput"><code>su - <span class="replaceable"><span class="replaceable">$OPENACS_SERVICE_NAME</span></span></code></strong>
-[$OPENACS_SERVICE_NAME aolserver]$ <strong class="userinput"><code>cd /var/lib/aolserver/packages/<span class="replaceable"><span class="replaceable">openacs-5-1</span></span></code></strong>
-[$OPENACS_SERVICE_NAME openacs-5-1]$ <strong class="userinput"><code>cvs up -Pd <span class="replaceable"><span class="replaceable">packagename</span></span></code></strong></pre><p>In the next section, the import must be tailored to just this package.</p></li></ul></div></li><li><p><b>Step 2: Merge New OpenACS code.�</b>Now that you have a local copy of the new OpenACS code, you need to import it into your local CVS repository and resolve any conflicts that occur.</p><p>Import the new files into your cvs repository; where they match existing files, they will become the new version of the file.</p><pre class="screen">[$OPENACS_SERVICE_NAME openacs-5-1]$ <strong class="userinput"><code> cd /var/lib/aolserver/<span class="replaceable"><span class="replaceable">openacs-5-1</span></span></code></strong>
-[$OPENACS_SERVICE_NAME openacs-5-1]$ <strong class="userinput"><code> cvs -d /var/lib/cvs import -m "upgrade to OpenACS 5.1" <span class="replaceable"><span class="replaceable">$OPENACS_SERVICE_NAME</span></span> OpenACS <span class="replaceable"><span class="replaceable">openacs-5-1</span></span></code></strong>
-            </pre><div class="tip" style="margin-left: 0.5in; margin-right: 0.5in;"><h3 class="title">Tip</h3><p>If adding or upgrading a single package, run the cvs import from within the base directory of that package, and adjust the cvs command accordingly.  In this example, we are adding the <code class="computeroutput">myfirstpackage</code> package.</p><pre class="screen">[root root]# <strong class="userinput"><code>su - <span class="replaceable"><span class="replaceable">$OPENACS_SERVICE_NAME</span></span></code></strong>
-[$OPENACS_SERVICE_NAME aolserver]$ <strong class="userinput"><code>cd /var/lib/aolserver/<span class="replaceable"><span class="replaceable">openacs-5-0</span></span>/package/<span class="replaceable"><span class="replaceable">myfirstpackage</span></span></code></strong>
-[$OPENACS_SERVICE_NAME myfirstpackage]$ <strong class="userinput"><code>cvs -d /var/lib/cvs/ import -m "importing package" <span class="replaceable"><span class="replaceable">$OPENACS_SERVICE_NAME</span></span>/packages/<span class="replaceable"><span class="replaceable">myfirstpackage</span></span> OpenACS openacs-5-1</code></strong></pre></div><p>Create a new directory as temporary working space to
+              </p><div class="itemizedlist"><ul type="disc"><li><p><b>Update CVS.�</b>Update your local CVS working checkout (unless
+                      you just set it up). </p><pre class="screen">[root root]# <b class="userinput"><tt>su - <span class="replaceable"><span class="replaceable">$OPENACS_SERVICE_NAME</span></span></tt></b>
+[$OPENACS_SERVICE_NAME aolserver]$ <b class="userinput"><tt>cd /var/lib/aolserver/<span class="replaceable"><span class="replaceable">openacs-5-1</span></span></tt></b>
+[$OPENACS_SERVICE_NAME aolserver]$ <b class="userinput"><tt>cvs up -Pd ChangeLog *.txt bin etc tcl www packages/*</tt></b></pre></li><li><p><b>Update a single package via cvs working checkout.�</b>You can add or upgrade a single package at a time, if you already have a cvs working directory.</p><pre class="screen">[root root]# <b class="userinput"><tt>su - <span class="replaceable"><span class="replaceable">$OPENACS_SERVICE_NAME</span></span></tt></b>
+[$OPENACS_SERVICE_NAME aolserver]$ <b class="userinput"><tt>cd /var/lib/aolserver/packages/<span class="replaceable"><span class="replaceable">openacs-5-1</span></span></tt></b>
+[$OPENACS_SERVICE_NAME openacs-5-1]$ <b class="userinput"><tt>cvs up -Pd <span class="replaceable"><span class="replaceable">packagename</span></span></tt></b></pre><p>In the next section, the import must be tailored to just this package.</p></li></ul></div></li><li><p><b>Step 2: Merge New OpenACS code.�</b>Now that you have a local copy of the new OpenACS code, you need to import it into your local CVS repository and resolve any conflicts that occur.</p><p>Import the new files into your cvs repository; where they match existing files, they will become the new version of the file.</p><pre class="screen">[$OPENACS_SERVICE_NAME openacs-5-1]$ <b class="userinput"><tt> cd /var/lib/aolserver/<span class="replaceable"><span class="replaceable">openacs-5-1</span></span></tt></b>
+[$OPENACS_SERVICE_NAME openacs-5-1]$ <b class="userinput"><tt> cvs -d /var/lib/cvs import -m &quot;upgrade to OpenACS 5.1&quot; <span class="replaceable"><span class="replaceable">$OPENACS_SERVICE_NAME</span></span> OpenACS <span class="replaceable"><span class="replaceable">openacs-5-1</span></span></tt></b>
+            </pre><div class="tip" style="margin-left: 0.5in; margin-right: 0.5in;"><h3 class="title">Tip</h3><p>If adding or upgrading a single package, run the cvs import from within the base directory of that package, and adjust the cvs command accordingly.  In this example, we are adding the <tt class="computeroutput">myfirstpackage</tt> package.</p><pre class="screen">[root root]# <b class="userinput"><tt>su - <span class="replaceable"><span class="replaceable">$OPENACS_SERVICE_NAME</span></span></tt></b>
+[$OPENACS_SERVICE_NAME aolserver]$ <b class="userinput"><tt>cd /var/lib/aolserver/<span class="replaceable"><span class="replaceable">openacs-5-0</span></span>/package/<span class="replaceable"><span class="replaceable">myfirstpackage</span></span></tt></b>
+[$OPENACS_SERVICE_NAME myfirstpackage]$ <b class="userinput"><tt>cvs -d /var/lib/cvs/ import -m &quot;importing package&quot; <span class="replaceable"><span class="replaceable">$OPENACS_SERVICE_NAME</span></span>/packages/<span class="replaceable"><span class="replaceable">myfirstpackage</span></span> OpenACS openacs-5-1</tt></b></pre></div><p>Create a new directory as temporary working space to
             reconcile conflicts between the new files and your current
             work.  The example uses the cvs keyword yesterday, making
             the assumption that you haven't checked in new code to
             your local tree in the last day. This section should be
-            improved to use tags instead of the keyword yesterday!</p><pre class="screen">[$OPENACS_SERVICE_NAME openacs-5.1]$ <strong class="userinput"><code> cd /var/lib/aolserver</code></strong>
-[$OPENACS_SERVICE_NAME tmp]$ <strong class="userinput"><code>rm -rf <span class="replaceable"><span class="replaceable">$OPENACS_SERVICE_NAME</span></span>-upgrade</code></strong>
-[$OPENACS_SERVICE_NAME tmp]$ <strong class="userinput"><code>mkdir <span class="replaceable"><span class="replaceable">$OPENACS_SERVICE_NAME</span></span>-upgrade</code></strong>
-[$OPENACS_SERVICE_NAME tmp]$ <strong class="userinput"><code>cvs checkout -d <span class="replaceable"><span class="replaceable">$OPENACS_SERVICE_NAME</span></span>-upgrade -jOpenACS:yesterday -jOpenACS -kk <span class="replaceable"><span class="replaceable">$OPENACS_SERVICE_NAME</span></span> &gt; cvs.txt 2&gt;&amp;1</code></strong>
+            improved to use tags instead of the keyword yesterday!</p><pre class="screen">[$OPENACS_SERVICE_NAME openacs-5.1]$ <b class="userinput"><tt> cd /var/lib/aolserver</tt></b>
+[$OPENACS_SERVICE_NAME tmp]$ <b class="userinput"><tt>rm -rf <span class="replaceable"><span class="replaceable">$OPENACS_SERVICE_NAME</span></span>-upgrade</tt></b>
+[$OPENACS_SERVICE_NAME tmp]$ <b class="userinput"><tt>mkdir <span class="replaceable"><span class="replaceable">$OPENACS_SERVICE_NAME</span></span>-upgrade</tt></b>
+[$OPENACS_SERVICE_NAME tmp]$ <b class="userinput"><tt>cvs checkout -d <span class="replaceable"><span class="replaceable">$OPENACS_SERVICE_NAME</span></span>-upgrade -jOpenACS:yesterday -jOpenACS -kk <span class="replaceable"><span class="replaceable">$OPENACS_SERVICE_NAME</span></span> &gt; cvs.txt 2&gt;&amp;1</tt></b>
 (CVS feedback here)</pre><p>The file /var/tmp/openacs-upgrade/cvs.txt contains the
             results of the upgrade.  If you changed files that are
             part of the OpenACS tarball and those changes conflict,
             you'll have to manually reconcile them.  Use the emacs
-            command <code class="computeroutput">M-x sort-lines</code>
+            command <tt class="computeroutput">M-x sort-lines</tt>
             (you may have to click Ctrl-space at the beginning of the
             file, and go to the end, and then try M-x sort-lines) and then, for each line that starts with a C, open that file and manually resolve the conflict by deleting the excess lines.  When you're finished, or if there aren't any conflicts, save and exit.</p><p>Once you've fixed any conflicts, commit the new code
-            to your local tree.  </p><pre class="screen">[$OPENACS_SERVICE_NAME tmp]$ <strong class="userinput"><code>cd <span class="replaceable"><span class="replaceable">$OPENACS_SERVICE_NAME</span></span>-upgrade</code></strong>
-[$OPENACS_SERVICE_NAME <span class="replaceable"><span class="replaceable">$OPENACS_SERVICE_NAME</span></span>-upgrade]$ <strong class="userinput"><code>cvs commit -m "Upgraded to 5.1"</code></strong></pre></li><li><p><b>Step 3: Upgrade your local staging site.�</b>Update your working tree with the new files.  The CVS flags ensure that new directories are created and pruned directories destroyed.</p><pre class="screen">[$OPENACS_SERVICE_NAME <span class="replaceable"><span class="replaceable">$OPENACS_SERVICE_NAME</span></span>-upgrade]$ <strong class="userinput"><code>cd /var/lib/aolserver/<span class="replaceable"><span class="replaceable">$OPENACS_SERVICE_NAME</span></span></code></strong>
-[$OPENACS_SERVICE_NAME $OPENACS_SERVICE_NAME]$ <strong class="userinput"><code>cvs up -Pd</code></strong>
+            to your local tree.  </p><pre class="screen">[$OPENACS_SERVICE_NAME tmp]$ <b class="userinput"><tt>cd <span class="replaceable"><span class="replaceable">$OPENACS_SERVICE_NAME</span></span>-upgrade</tt></b>
+[$OPENACS_SERVICE_NAME <span class="replaceable"><span class="replaceable">$OPENACS_SERVICE_NAME</span></span>-upgrade]$ <b class="userinput"><tt>cvs commit -m &quot;Upgraded to 5.1&quot;</tt></b></pre></li><li><p><b>Step 3: Upgrade your local staging site.�</b>Update your working tree with the new files.  The CVS flags ensure that new directories are created and pruned directories destroyed.</p><pre class="screen">[$OPENACS_SERVICE_NAME <span class="replaceable"><span class="replaceable">$OPENACS_SERVICE_NAME</span></span>-upgrade]$ <b class="userinput"><tt>cd /var/lib/aolserver/<span class="replaceable"><span class="replaceable">$OPENACS_SERVICE_NAME</span></span></tt></b>
+[$OPENACS_SERVICE_NAME $OPENACS_SERVICE_NAME]$ <b class="userinput"><tt>cvs up -Pd</tt></b>
 (CVS feedback)
-[$OPENACS_SERVICE_NAME $OPENACS_SERVICE_NAME]$ <strong class="userinput"><code>exit</code></strong>
+[$OPENACS_SERVICE_NAME $OPENACS_SERVICE_NAME]$ <b class="userinput"><tt>exit</tt></b>
 [root root]# </pre></li></ul></div></li></ul></div><p>
-        <span class="strong"><strong>Upgrading files for a site using the OpenACS CVS repository (cvs.openacs.org)</strong></span>
-      </p><div class="orderedlist"><ol type="1"><li><pre class="screen">[$OPENACS_SERVICE_NAME ~]$ <strong class="userinput"><code>cd /var/lib/aolserver/<span class="replaceable"><span class="replaceable">$OPENACS_SERVICE_NAME</span></span></code></strong>
-[$OPENACS_SERVICE_NAME $OPENACS_SERVICE_NAME]$ <strong class="userinput"><code>cvs up -Pd</code></strong>
+        <span class="strong">Upgrading files for a site using the OpenACS CVS repository (cvs.openacs.org)</span>
+      </p><div class="orderedlist"><ol type="1"><li><pre class="screen">[$OPENACS_SERVICE_NAME ~]$ <b class="userinput"><tt>cd /var/lib/aolserver/<span class="replaceable"><span class="replaceable">$OPENACS_SERVICE_NAME</span></span></tt></b>
+[$OPENACS_SERVICE_NAME $OPENACS_SERVICE_NAME]$ <b class="userinput"><tt>cvs up -Pd</tt></b>
 (CVS feedback)
-[$OPENACS_SERVICE_NAME $OPENACS_SERVICE_NAME]$</pre></li></ol></div></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id1070644"></a>Upgrading a Production Site Safely</h3></div></div></div><p>If you are upgrading a production OpenACS site which is on a private CVS tree, this process lets you do the upgrade without risking extended downtime or an unusable site:</p><div class="orderedlist"><ol type="1"><li><p>Declare a freeze on new cvs updates - ie, you cannot run cvs update
+[$OPENACS_SERVICE_NAME $OPENACS_SERVICE_NAME]$</pre></li></ol></div></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id2982867"></a>Upgrading a Production Site Safely</h3></div></div><div></div></div><p>If you are upgrading a production OpenACS site which is on a private CVS tree, this process lets you do the upgrade without risking extended downtime or an unusable site:</p><div class="orderedlist"><ol type="1"><li><p>Declare a freeze on new cvs updates - ie, you cannot run cvs update
    on the production site</p></li><li><p>
             Make a manual backup of the production site in addition to the
    automated backups</p></li><li><p>Import the new code (for example, OpenACS 5.0.4, openacs-5-0-compat versions of
-   ETP, blogger, and other applications) into a "vendor branch" of the
-   <span class="replaceable"><span class="replaceable">$OPENACS_SERVICE_NAME</span></span> CVS tree, as described in "Upgrading a local CVS repository", step 1, above. 
+   ETP, blogger, and other applications) into a &quot;vendor branch&quot; of the
+   <span class="replaceable"><span class="replaceable">$OPENACS_SERVICE_NAME</span></span> CVS tree, as described in &quot;Upgrading a local CVS repository&quot;, step 1, above. 
    As soon as we do this, any cvs update command on production might bring new code onto the production site, which
    would be bad.</p><p>Do step 2 above (merging conflicts in a <span class="replaceable"><span class="replaceable">$OPENACS_SERVICE_NAME</span></span>-upgrade working tree).</p></li><li><p>
             Manually resolve any conflicts in the working upgrade tree
@@ -110,5 +111,5 @@
    have a new website called <span class="replaceable"><span class="replaceable">$OPENACS_SERVICE_NAME</span></span>-upgrade.
           </p></li><li><p>
             Test the <span class="replaceable"><span class="replaceable">$OPENACS_SERVICE_NAME</span></span>-upgrade site
-          </p></li><li><p>If <span class="replaceable"><span class="replaceable">$OPENACS_SERVICE_NAME</span></span>-upgrade is fully functional, do the real upgrade.</p><div class="orderedlist"><ol type="a"><li><p>Take down the <span class="replaceable"><span class="replaceable">$OPENACS_SERVICE_NAME</span></span> site and put up a "down for maintenance" page.</p></li><li><p>Repeat the upgrade with the most recent database</p></li><li><p>Test the that the new site is functional.  If so, change the upgraded site to respond to
+          </p></li><li><p>If <span class="replaceable"><span class="replaceable">$OPENACS_SERVICE_NAME</span></span>-upgrade is fully functional, do the real upgrade.</p><div class="orderedlist"><ol type="a"><li><p>Take down the <span class="replaceable"><span class="replaceable">$OPENACS_SERVICE_NAME</span></span> site and put up a &quot;down for maintenance&quot; page.</p></li><li><p>Repeat the upgrade with the most recent database</p></li><li><p>Test the that the new site is functional.  If so, change the upgraded site to respond to
                <span class="replaceable"><span class="replaceable">yourserver.net</span></span> requests. If not, bring the original production site back up and return to the merge.</p></li></ol></div></li></ol></div></div></div><div class="navfooter"><hr><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="upgrade-5-0-dot.html">Prev</a> </td><td width="20%" align="center"><a accesskey="h" href="index.html">Home</a></td><td width="40%" align="right"> <a accesskey="n" href="upgrade-supporting.html">Next</a></td></tr><tr><td width="40%" align="left">Upgrading an OpenACS 5.0.0 or greater installation </td><td width="20%" align="center"><a accesskey="u" href="upgrade.html">Up</a></td><td width="40%" align="right"> Upgrading Platform components</td></tr></table><hr><address><a href="mailto:docs@openacs.org">docs@openacs.org</a></address></div><a name="comments"></a><center><a href="http://openacs.org/doc/current/upgrade-openacs-files.html#comments">View comments on this page at openacs.org</a></center></body></html>
Index: openacs-4/packages/acs-core-docs/www/upgrade-overview.html
===================================================================
RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/upgrade-overview.html,v
diff -u -r1.20 -r1.20.4.1
--- openacs-4/packages/acs-core-docs/www/upgrade-overview.html	17 Jul 2006 05:38:32 -0000	1.20
+++ openacs-4/packages/acs-core-docs/www/upgrade-overview.html	3 Feb 2008 12:07:41 -0000	1.20.4.1
@@ -1,6 +1,7 @@
-<html><head><meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"><title>Overview</title><meta name="generator" content="DocBook XSL Stylesheets V1.70.1"><link rel="home" href="index.html" title="OpenACS Core Documentation"><link rel="up" href="upgrade.html" title="Chapter�5.�Upgrading"><link rel="previous" href="upgrade.html" title="Chapter�5.�Upgrading"><link rel="next" href="upgrade-4.5-to-4.6.html" title="Upgrading 4.5 or higher to 4.6.3"><link rel="stylesheet" href="openacs.css" type="text/css"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><a href="http://openacs.org"><img src="/doc/images/alex.jpg" border="0" alt="Alex logo"></a><table width="100%" summary="Navigation header" border="0"><tr><td width="20%" align="left"><a accesskey="p" href="upgrade.html">Prev</a> </td><th width="60%" align="center">Chapter�5.�Upgrading</th><td width="20%" align="right"> <a accesskey="n" href="upgrade-4.5-to-4.6.html">Next</a></td></tr></table><hr></div><div class="sect1" lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="upgrade-overview"></a>Overview</h2></div></div></div><p>Starting with Version 4.5, all OpenACS core packages support
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html><head><meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"><title>Overview</title><meta name="generator" content="DocBook XSL Stylesheets V1.60.1"><link rel="home" href="index.html" title="OpenACS Core Documentation"><link rel="up" href="upgrade.html" title="Chapter�5.�Upgrading"><link rel="previous" href="upgrade.html" title="Chapter�5.�Upgrading"><link rel="next" href="upgrade-4.5-to-4.6.html" title="Upgrading 4.5 or higher to 4.6.3"><link rel="stylesheet" href="openacs.css" type="text/css"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><a href="http://openacs.org"><img src="/doc/images/alex.jpg" border="0" alt="Alex logo"></a><table width="100%" summary="Navigation header" border="0"><tr><td width="20%" align="left"><a accesskey="p" href="upgrade.html">Prev</a> </td><th width="60%" align="center">Chapter�5.�Upgrading</th><td width="20%" align="right"> <a accesskey="n" href="upgrade-4.5-to-4.6.html">Next</a></td></tr></table><hr></div><div class="sect1" lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="upgrade-overview"></a>Overview</h2></div></div><div></div></div><p>Starting with Version 4.5, all OpenACS core packages support
     automatic upgrade.  That means that, if you have OpenACS 4.5
     or better, you should always be able to upgrade all of your core
     packages automatically.  If you haven't changed anything, no
     manual intervention should be required.  If you are running
-    OpenACS prior to 4.5, upgrading will require manual effort.</p><p>If all of these conditions are true:</p><div class="itemizedlist"><ul type="disc"><li><p>Your OpenACS Core is 5.0.0 or later</p></li><li><p>You do not keep your OpenACS site in a local CVS repository</p></li><li><p>You do not have any custom code</p></li></ul></div><p>then you can upgrade automatically using the automated installer in the OpenACS Package Manager (APM), and you can probably skip the rest of this chapter.  To upgrade directly from the OpenACS repository using the APM:</p><div class="orderedlist"><ol type="1"><li><p>Browse to the <a href="/acs-admin/install/" target="_top">Installer</a>.</p></li><li><p>Click install or upgrade under "Install from OpenACS Repository" and select the packages to install or upgrade.</p></li><li><p>The APM will download the requested packages from OpenACS.org, install the files on your hard drive, run any appropriate database upgrade scripts, and prompt you to restart the server.  After restarting the server again, the upgrade is complete.</p></li></ol></div><div class="figure"><a name="id1036695"></a><p class="title"><b>Figure�5.1.�Upgrading with the APM</b></p><div class="figure-contents"><div class="mediaobject" align="center"><img src="images/upgrade-apm.png" align="middle" alt="Upgrading with the APM"></div></div></div><br class="figure-break"><p>It's always a good idea to precede an upgrade attempt with a <a href="snapshot-backup.html" title="Manual backup and recovery">snapshot backup</a>.</p><div class="table"><a name="id939224"></a><p class="title"><b>Table�5.1.�Assumptions in this section</b></p><div class="table-contents"><table summary="Assumptions in this section" cellspacing="0" border="1"><colgroup><col><col></colgroup><tbody><tr><td>name of OpenACS user</td><td><span class="replaceable"><span class="replaceable">$OPENACS_SERVICE_NAME</span></span></td></tr><tr><td>OpenACS server name</td><td><span class="replaceable"><span class="replaceable">$OPENACS_SERVICE_NAME</span></span></td></tr><tr><td>Root of OpenACS file tree</td><td><span class="replaceable"><span class="replaceable">/var/lib/aolserver/$OPENACS_SERVICE_NAME</span></span></td></tr><tr><td>Database backup directory</td><td><span class="replaceable"><span class="replaceable">/var/lib/aolserver/$OPENACS_SERVICE_NAME/database-backup</span></span></td></tr></tbody></table></div></div><br class="table-break"></div><div class="navfooter"><hr><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="upgrade.html">Prev</a> </td><td width="20%" align="center"><a accesskey="h" href="index.html">Home</a></td><td width="40%" align="right"> <a accesskey="n" href="upgrade-4.5-to-4.6.html">Next</a></td></tr><tr><td width="40%" align="left">Chapter�5.�Upgrading </td><td width="20%" align="center"><a accesskey="u" href="upgrade.html">Up</a></td><td width="40%" align="right"> Upgrading 4.5 or higher to 4.6.3</td></tr></table><hr><address><a href="mailto:docs@openacs.org">docs@openacs.org</a></address></div><a name="comments"></a><center><a href="http://openacs.org/doc/current/upgrade-overview.html#comments">View comments on this page at openacs.org</a></center></body></html>
+    OpenACS prior to 4.5, upgrading will require manual effort.</p><p>If all of these conditions are true:</p><div class="itemizedlist"><ul type="disc"><li><p>Your OpenACS Core is 5.0.0 or later</p></li><li><p>You do not keep your OpenACS site in a local CVS repository</p></li><li><p>You do not have any custom code</p></li></ul></div><p>then you can upgrade automatically using the automated installer in the OpenACS Package Manager (APM), and you can probably skip the rest of this chapter.  To upgrade directly from the OpenACS repository using the APM:</p><div class="orderedlist"><ol type="1"><li><p>Browse to the <a href="/acs-admin/install/" target="_top">Installer</a>.</p></li><li><p>Click install or upgrade under &quot;Install from OpenACS Repository&quot; and select the packages to install or upgrade.</p></li><li><p>The APM will download the requested packages from OpenACS.org, install the files on your hard drive, run any appropriate database upgrade scripts, and prompt you to restart the server.  After restarting the server again, the upgrade is complete.</p></li></ol></div><div class="figure"><a name="id2922430"></a><p class="title"><b>Figure�5.1.�Upgrading with the APM</b></p><div class="mediaobject" align="center"><img src="../images/upgrade-apm.png" align="middle" alt="Upgrading with the APM"></div></div><p>It's always a good idea to precede an upgrade attempt with a <a href="snapshot-backup.html" title="Manual backup and recovery">snapshot backup</a>.</p><div class="table"><a name="id2922471"></a><p class="title"><b>Table�5.1.�Assumptions in this section</b></p><table summary="Assumptions in this section" cellspacing="0" border="1"><colgroup><col><col></colgroup><tbody><tr><td>name of OpenACS user</td><td><span class="replaceable"><span class="replaceable">$OPENACS_SERVICE_NAME</span></span></td></tr><tr><td>OpenACS server name</td><td><span class="replaceable"><span class="replaceable">$OPENACS_SERVICE_NAME</span></span></td></tr><tr><td>Root of OpenACS file tree</td><td><span class="replaceable"><span class="replaceable">/var/lib/aolserver/$OPENACS_SERVICE_NAME</span></span></td></tr><tr><td>Database backup directory</td><td><span class="replaceable"><span class="replaceable">/var/lib/aolserver/$OPENACS_SERVICE_NAME/database-backup</span></span></td></tr></tbody></table></div></div><div class="navfooter"><hr><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="upgrade.html">Prev</a> </td><td width="20%" align="center"><a accesskey="h" href="index.html">Home</a></td><td width="40%" align="right"> <a accesskey="n" href="upgrade-4.5-to-4.6.html">Next</a></td></tr><tr><td width="40%" align="left">Chapter�5.�Upgrading </td><td width="20%" align="center"><a accesskey="u" href="upgrade.html">Up</a></td><td width="40%" align="right"> Upgrading 4.5 or higher to 4.6.3</td></tr></table><hr><address><a href="mailto:docs@openacs.org">docs@openacs.org</a></address></div><a name="comments"></a><center><a href="http://openacs.org/doc/current/upgrade-overview.html#comments">View comments on this page at openacs.org</a></center></body></html>
Index: openacs-4/packages/acs-core-docs/www/upgrade-supporting.html
===================================================================
RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/upgrade-supporting.html,v
diff -u -r1.13 -r1.13.4.1
--- openacs-4/packages/acs-core-docs/www/upgrade-supporting.html	17 Jul 2006 05:38:32 -0000	1.13
+++ openacs-4/packages/acs-core-docs/www/upgrade-supporting.html	3 Feb 2008 12:07:41 -0000	1.13.4.1
@@ -1,5 +1,6 @@
-<html><head><meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"><title>Upgrading Platform components</title><meta name="generator" content="DocBook XSL Stylesheets V1.70.1"><link rel="home" href="index.html" title="OpenACS Core Documentation"><link rel="up" href="upgrade.html" title="Chapter�5.�Upgrading"><link rel="previous" href="upgrade-openacs-files.html" title="Upgrading the OpenACS files"><link rel="next" href="maintenance-web.html" title="Chapter�6.�Production Environments"><link rel="stylesheet" href="openacs.css" type="text/css"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><a href="http://openacs.org"><img src="/doc/images/alex.jpg" border="0" alt="Alex logo"></a><table width="100%" summary="Navigation header" border="0"><tr><td width="20%" align="left"><a accesskey="p" href="upgrade-openacs-files.html">Prev</a> </td><th width="60%" align="center">Chapter�5.�Upgrading</th><td width="20%" align="right"> <a accesskey="n" href="maintenance-web.html">Next</a></td></tr></table><hr></div><div class="sect1" lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="upgrade-supporting"></a>Upgrading Platform components</h2></div></div></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="upgrade-openfts-0.2-to-0.3.2"></a>Upgrading OpenFTS from 0.2 to 0.3.2</h3></div></div></div><p>OpenACS Full Text Search requires several pieces: the OpenFTS code, some database functions, and the OpenFTS Engine.  This section describes how to upgrade OpenFTS from 0.2 to 0.3.2 and upgrade the search engine on an OpenACS site at the same time.</p><div class="orderedlist"><ol type="1"><li><p>Uninstall the old OpenFTS Engine from the <span class="replaceable"><span class="replaceable">$OPENACS_SERVICE_NAME</span></span> database.</p><div class="orderedlist"><ol type="a"><li><p><span class="bold"><strong>Browse to <code class="computeroutput">http://<span class="replaceable"><span class="replaceable">yourserver</span></span>/openfts</code>.</strong></span>
-            </p></li><li><p><span class="bold"><strong>Click <code class="computeroutput"><span class="guilabel"><span class="guilabel">Administration</span></span></code>.</strong></span></p></li><li><p><span class="bold"><strong>Click <code class="computeroutput"><span class="guibutton"><span class="guibutton">Drop OpenFTS Engine</span></span></code></strong></span></p></li></ol></div></li><li><p>Build and install the new OpenFTS driver and supporting tcl procedures.  (This section of shell code is not fully documented; please exercise care.)</p><pre class="screen">cd /usr/local/src/
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html><head><meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"><title>Upgrading Platform components</title><meta name="generator" content="DocBook XSL Stylesheets V1.60.1"><link rel="home" href="index.html" title="OpenACS Core Documentation"><link rel="up" href="upgrade.html" title="Chapter�5.�Upgrading"><link rel="previous" href="upgrade-openacs-files.html" title="Upgrading the OpenACS files"><link rel="next" href="maintenance-web.html" title="Chapter�6.�Production Environments"><link rel="stylesheet" href="openacs.css" type="text/css"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><a href="http://openacs.org"><img src="/doc/images/alex.jpg" border="0" alt="Alex logo"></a><table width="100%" summary="Navigation header" border="0"><tr><td width="20%" align="left"><a accesskey="p" href="upgrade-openacs-files.html">Prev</a> </td><th width="60%" align="center">Chapter�5.�Upgrading</th><td width="20%" align="right"> <a accesskey="n" href="maintenance-web.html">Next</a></td></tr></table><hr></div><div class="sect1" lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="upgrade-supporting"></a>Upgrading Platform components</h2></div></div><div></div></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="upgrade-openfts-0.2-to-0.3.2"></a>Upgrading OpenFTS from 0.2 to 0.3.2</h3></div></div><div></div></div><p>OpenACS Full Text Search requires several pieces: the OpenFTS code, some database functions, and the OpenFTS Engine.  This section describes how to upgrade OpenFTS from 0.2 to 0.3.2 and upgrade the search engine on an OpenACS site at the same time.</p><div class="orderedlist"><ol type="1"><li><p>Uninstall the old OpenFTS Engine from the <span class="replaceable"><span class="replaceable">$OPENACS_SERVICE_NAME</span></span> database.</p><div class="orderedlist"><ol type="a"><li><p><span class="bold"><b>Browse to <tt class="computeroutput">http://<span class="replaceable"><span class="replaceable">yourserver</span></span>/openfts</tt>.</b></span>
+            </p></li><li><p><span class="bold"><b>Click <tt class="computeroutput"><span class="guilabel"><span class="guilabel">Administration</span></span></tt>.</b></span></p></li><li><p><span class="bold"><b>Click <tt class="computeroutput"><span class="guibutton"><span class="guibutton">Drop OpenFTS Engine</span></span></tt></b></span></p></li></ol></div></li><li><p>Build and install the new OpenFTS driver and supporting tcl procedures.  (This section of shell code is not fully documented; please exercise care.)</p><pre class="screen">cd /usr/local/src/
           tar xzf /var/tmp/Search-OpenFTS-tcl-0.3.2.tar.gz
           chown -R root.root Search-OpenFTS-tcl-0.3.2/
           cd Search-OpenFTS-tcl-0.3.2/
@@ -17,22 +18,22 @@
           cd tsearch/
           make
           make install
-          exit</pre><p>In order for the OpenACS 4.6 OpenFTS Engine to use the OpenFTS 0.3.2 driver, we need some commands added to the database.</p><pre class="screen">[root root]# <strong class="userinput"><code>su - <span class="replaceable"><span class="replaceable">$OPENACS_SERVICE_NAME</span></span></code></strong>
-          [$OPENACS_SERVICE_NAME dev]$ <strong class="userinput"><code>psql <span class="replaceable"><span class="replaceable">$OPENACS_SERVICE_NAME</span></span> -f /usr/local/pgsql/share/contrib/openfts.sql</code></strong>
+          exit</pre><p>In order for the OpenACS 4.6 OpenFTS Engine to use the OpenFTS 0.3.2 driver, we need some commands added to the database.</p><pre class="screen">[root root]# <b class="userinput"><tt>su - <span class="replaceable"><span class="replaceable">$OPENACS_SERVICE_NAME</span></span></tt></b>
+          [$OPENACS_SERVICE_NAME dev]$ <b class="userinput"><tt>psql <span class="replaceable"><span class="replaceable">$OPENACS_SERVICE_NAME</span></span> -f /usr/local/pgsql/share/contrib/openfts.sql</tt></b>
           CREATE
           CREATE
-          [$OPENACS_SERVICE_NAME dev]$ <strong class="userinput"><code>psql <span class="replaceable"><span class="replaceable">$OPENACS_SERVICE_NAME</span></span> -f /usr/local/src/postgresql-7.2.3/contrib/tsearch/tsearch.sql</code></strong>
+          [$OPENACS_SERVICE_NAME dev]$ <b class="userinput"><tt>psql <span class="replaceable"><span class="replaceable">$OPENACS_SERVICE_NAME</span></span> -f /usr/local/src/postgresql-7.2.3/contrib/tsearch/tsearch.sql</tt></b>
           BEGIN
           CREATE
           (~30 more lines)
-          [$OPENACS_SERVICE_NAME dev]$ <strong class="userinput"><code>exit</code></strong>
+          [$OPENACS_SERVICE_NAME dev]$ <b class="userinput"><tt>exit</tt></b>
           [root root]# 
           <span class="action"><span class="action">su - <span class="replaceable"><span class="replaceable">$OPENACS_SERVICE_NAME</span></span>
 psql <span class="replaceable"><span class="replaceable">$OPENACS_SERVICE_NAME</span></span> -f /usr/local/pgsql/share/contrib/openfts.sql
 psql <span class="replaceable"><span class="replaceable">$OPENACS_SERVICE_NAME</span></span> -f /usr/local/src/postgresql-7.2.3/contrib/tsearch/tsearch.sql
 exit</span></span></pre></li><li><p><b>OPTIONAL: Install the new OpenFTS Engine.�</b>If you want to upgrade the OpenFTS Engine, do these
             steps.  (You must have already upgraded the OpenFTS driver to
-            0.3.2.)</p><div class="orderedlist"><ol type="a"><li><p>Browse to <code class="computeroutput">http://<span class="replaceable"><span class="replaceable">yourserver</span></span>/admin/site-map</code></p></li><li><p>On the <code class="computeroutput">openfts</code> line, click on <code class="computeroutput"><span class="guilabel"><span class="guilabel">set parameters</span></span></code>.</p></li><li><p>Change the value of <code class="computeroutput">openfts_tcl_src_path</code> from <code class="computeroutput">/usr/local/src/Search-OpenFTS-tcl-0.2/</code> to <code class="computeroutput">/usr/local/src/Search-OpenFTS-tcl-0.3.2/</code></p></li><li><p>Click <code class="computeroutput"><span class="guibutton"><span class="guibutton">Set Parameters</span></span></code></p></li><li><pre class="screen">[root root]# restart-aolserver <span class="replaceable"><span class="replaceable">$OPENACS_SERVICE_NAME</span></span></pre></li><li><p>Browse to <code class="computeroutput">http://<span class="replaceable"><span class="replaceable">yourserver</span></span>/openfts</code></p></li><li><p><span class="bold"><strong>Click <code class="computeroutput"><span class="guilabel"><span class="guilabel">Administration</span></span></code>.</strong></span></p></li><li><p><span class="bold"><strong>Click <code class="computeroutput"><span class="guibutton"><span class="guibutton">Initialize OpenFTS Engine</span></span></code></strong></span></p></li></ol></div></li></ol></div></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="upgrade-postgres-7.2-to-7.3"></a>Upgrading from PostGreSQL 7.2 to 7.3</h3></div></div></div><p>An OpenACS database created in PostGreSQL 7.2 will not
+            0.3.2.)</p><div class="orderedlist"><ol type="a"><li><p>Browse to <tt class="computeroutput">http://<span class="replaceable"><span class="replaceable">yourserver</span></span>/admin/site-map</tt></p></li><li><p>On the <tt class="computeroutput">openfts</tt> line, click on <tt class="computeroutput"><span class="guilabel"><span class="guilabel">set parameters</span></span></tt>.</p></li><li><p>Change the value of <tt class="computeroutput">openfts_tcl_src_path</tt> from <tt class="computeroutput">/usr/local/src/Search-OpenFTS-tcl-0.2/</tt> to <tt class="computeroutput">/usr/local/src/Search-OpenFTS-tcl-0.3.2/</tt></p></li><li><p>Click <tt class="computeroutput"><span class="guibutton"><span class="guibutton">Set Parameters</span></span></tt></p></li><li><pre class="screen">[root root]# restart-aolserver <span class="replaceable"><span class="replaceable">$OPENACS_SERVICE_NAME</span></span></pre></li><li><p>Browse to <tt class="computeroutput">http://<span class="replaceable"><span class="replaceable">yourserver</span></span>/openfts</tt></p></li><li><p><span class="bold"><b>Click <tt class="computeroutput"><span class="guilabel"><span class="guilabel">Administration</span></span></tt>.</b></span></p></li><li><p><span class="bold"><b>Click <tt class="computeroutput"><span class="guibutton"><span class="guibutton">Initialize OpenFTS Engine</span></span></tt></b></span></p></li></ol></div></li></ol></div></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="upgrade-postgres-7.2-to-7.3"></a>Upgrading from PostGreSQL 7.2 to 7.3</h3></div></div><div></div></div><p>An OpenACS database created in PostGreSQL 7.2 will not
       work correctly in PostGreSQL 7.3.  This is because 7.2 truncates
       function names to 31 characters, but 7.3 does not.  This does
       not cause problems in 7.2, because truncation occurs both at
@@ -42,12 +43,12 @@
       are not, and so they don't match.  Also some functions use
       casting commands that no longer work in 7.3 and these functions
       must be recreated.</p><p>
-      To upgrade an OpenACS site from PostGreSQL 7.2 to 7.3, first upgrade the kernel to 4.6.3.  Then, dump the database, run the upgrade script <code class="computeroutput">/var/lib/aolserver/<span class="replaceable"><span class="replaceable">$OPENACS_SERVICE_NAME</span></span>/bin/pg_7.2to7.3_upgrade_helper.pl</code> on the dump file, and reply the dump.  See <a href="http://openacs.org/forums/message-view?message_id=109337" target="_top">Forum OpenACS Q&amp;A: PG 7.2-&gt;7.3 upgrade gotcha?</a>.  Example:</p><div class="orderedlist"><ol type="1"><li><p>Back up the database as per <a href="snapshot-backup.html#postgres-snapshot-backup" title="PostgreSQL">PostgreSQL</a>.</p></li><li><p>Run the upgrade script on the backup file.</p><pre class="screen">[root root]# <strong class="userinput"><code>su - <span class="replaceable"><span class="replaceable">$OPENACS_SERVICE_NAME</span></span></code></strong>
-          [$OPENACS_SERVICE_NAME <span class="replaceable"><span class="replaceable">$OPENACS_SERVICE_NAME</span></span>]# <strong class="userinput"><code>cd /var/lib/aolserver/<span class="replaceable"><span class="replaceable">$OPENACS_SERVICE_NAME</span></span>/bin</code></strong>
-          [$OPENACS_SERVICE_NAME bin]$ <strong class="userinput"><code>./pg_7.2to7.3_upgrade_helper.pl \
+      To upgrade an OpenACS site from PostGreSQL 7.2 to 7.3, first upgrade the kernel to 4.6.3.  Then, dump the database, run the upgrade script <tt class="computeroutput">/var/lib/aolserver/<span class="replaceable"><span class="replaceable">$OPENACS_SERVICE_NAME</span></span>/bin/pg_7.2to7.3_upgrade_helper.pl</tt> on the dump file, and reply the dump.  See <a href="http://openacs.org/forums/message-view?message_id=109337" target="_top">Forum OpenACS Q&amp;A: PG 7.2-&gt;7.3 upgrade gotcha?</a>.  Example:</p><div class="orderedlist"><ol type="1"><li><p>Back up the database as per <a href="snapshot-backup.html#postgres-snapshot-backup" title="PostgreSQL">PostgreSQL</a>.</p></li><li><p>Run the upgrade script on the backup file.</p><pre class="screen">[root root]# <b class="userinput"><tt>su - <span class="replaceable"><span class="replaceable">$OPENACS_SERVICE_NAME</span></span></tt></b>
+          [$OPENACS_SERVICE_NAME <span class="replaceable"><span class="replaceable">$OPENACS_SERVICE_NAME</span></span>]# <b class="userinput"><tt>cd /var/lib/aolserver/<span class="replaceable"><span class="replaceable">$OPENACS_SERVICE_NAME</span></span>/bin</tt></b>
+          [$OPENACS_SERVICE_NAME bin]$ <b class="userinput"><tt>./pg_7.2to7.3_upgrade_helper.pl \
           ../database-backup/nightly.dmp \
           ../database-backup/upgrade-7.3.dmp \
-          /var/lib/aolserver/<span class="replaceable"><span class="replaceable">$OPENACS_SERVICE_NAME</span></span></code></strong>
+          /var/lib/aolserver/<span class="replaceable"><span class="replaceable">$OPENACS_SERVICE_NAME</span></span></tt></b>
           ==================================================================
           looking for function acs_object__check_object_ancest in oacs
           grep result: /var/lib/aolserver/aufrecht-dev/packages/acs-kernel/sql/postgresql/acs-objects-create.sql:create function acs_object__check_object_ancestors (integer,integer,integer)
@@ -56,13 +57,13 @@
 
           <span class="emphasis"><em>(many lines omitted)</em></span>
           [$OPENACS_SERVICE_NAME bin]$
-          </pre></li><li><p>Use perl to replace <code class="computeroutput">timestamp</code> with <code class="computeroutput">timestamptz</code> in the dump file.  See example perl code in step two in <a href="http://cvs.openacs.org/cvs/openacs-4/contrib/misc/upgrade_4.6_to_5.0.sh?only_with_tag=HEAD" target="_top">/contrib/misc/upgrade_4.6_to_5.0.sh</a></p></li><li><p>Create a new user for PostgreSQL 7.3.x, as per the
+          </pre></li><li><p>Use perl to replace <tt class="computeroutput">timestamp</tt> with <tt class="computeroutput">timestamptz</tt> in the dump file.  See example perl code in step two in <a href="http://cvs.openacs.org/cvs/openacs-4/contrib/misc/upgrade_4.6_to_5.0.sh?only_with_tag=HEAD" target="_top">/contrib/misc/upgrade_4.6_to_5.0.sh</a></p></li><li><p>Create a new user for PostgreSQL 7.3.x, as per the
           Postgres installation guide. Keep in mind that your
           installation location is different, and your startup script
           (/etc/init.d/postgres73 should be named differently. You
           might even need to edit that file to make the paths
-          correct). You'll also need to add <code class="computeroutput">export
-          PGPORT=5434</code> to the .bashrc and/or
+          correct). You'll also need to add <tt class="computeroutput">export
+          PGPORT=5434</tt> to the .bashrc and/or
           .bash_profile for the postgres73 user.
           </p></li><li><p>Install PostgreSQL 7.3.x. Note that you PostgreSQL
           must listen on a different port in order to work
Index: openacs-4/packages/acs-core-docs/www/upgrade.html
===================================================================
RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/upgrade.html,v
diff -u -r1.24 -r1.24.4.1
--- openacs-4/packages/acs-core-docs/www/upgrade.html	17 Jul 2006 05:38:32 -0000	1.24
+++ openacs-4/packages/acs-core-docs/www/upgrade.html	3 Feb 2008 12:07:41 -0000	1.24.4.1
@@ -1,4 +1,5 @@
-<html><head><meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"><title>Chapter�5.�Upgrading</title><meta name="generator" content="DocBook XSL Stylesheets V1.70.1"><link rel="home" href="index.html" title="OpenACS Core Documentation"><link rel="up" href="acs-admin.html" title="Part�II.�Administrator's Guide"><link rel="previous" href="how-do-I.html" title="How Do I?"><link rel="next" href="upgrade-overview.html" title="Overview"><link rel="stylesheet" href="openacs.css" type="text/css"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><a href="http://openacs.org"><img src="/doc/images/alex.jpg" border="0" alt="Alex logo"></a><table width="100%" summary="Navigation header" border="0"><tr><td width="20%" align="left"><a accesskey="p" href="how-do-I.html">Prev</a> </td><th width="60%" align="center">Part�II.�Administrator's Guide</th><td width="20%" align="right"> <a accesskey="n" href="upgrade-overview.html">Next</a></td></tr></table><hr></div><div class="chapter" lang="en"><div class="titlepage"><div><div><h2 class="title"><a name="upgrade"></a>Chapter�5.�Upgrading</h2></div></div></div><div class="toc"><p><b>Table of Contents</b></p><dl><dt><span class="sect1"><a href="upgrade-overview.html">Overview</a></span></dt><dt><span class="sect1"><a href="upgrade-4.5-to-4.6.html">Upgrading 4.5 or higher to 4.6.3</a></span></dt><dt><span class="sect1"><a href="upgrade-4.6.3-to-5.html">Upgrading OpenACS 4.6.3 to 5.0</a></span></dt><dt><span class="sect1"><a href="upgrade-5-0-dot.html">Upgrading an OpenACS 5.0.0 or greater installation</a></span></dt><dt><span class="sect1"><a href="upgrade-openacs-files.html">Upgrading the OpenACS files</a></span></dt><dt><span class="sect1"><a href="upgrade-supporting.html">Upgrading Platform components</a></span></dt></dl></div><div class="authorblurb"><p>by <a href="mailto:joel@aufrecht.org" target="_top">Joel Aufrecht</a></p>
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html><head><meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"><title>Chapter�5.�Upgrading</title><meta name="generator" content="DocBook XSL Stylesheets V1.60.1"><link rel="home" href="index.html" title="OpenACS Core Documentation"><link rel="up" href="acs-admin.html" title="Part�II.�Administrator's Guide"><link rel="previous" href="how-do-I.html" title="How Do I?"><link rel="next" href="upgrade-overview.html" title="Overview"><link rel="stylesheet" href="openacs.css" type="text/css"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><a href="http://openacs.org"><img src="/doc/images/alex.jpg" border="0" alt="Alex logo"></a><table width="100%" summary="Navigation header" border="0"><tr><td width="20%" align="left"><a accesskey="p" href="how-do-I.html">Prev</a> </td><th width="60%" align="center">Part�II.�Administrator's Guide</th><td width="20%" align="right"> <a accesskey="n" href="upgrade-overview.html">Next</a></td></tr></table><hr></div><div class="chapter" lang="en"><div class="titlepage"><div><div><h2 class="title"><a name="upgrade"></a>Chapter�5.�Upgrading</h2></div></div><div></div></div><div class="toc"><p><b>Table of Contents</b></p><dl><dt><a href="upgrade-overview.html">Overview</a></dt><dt><a href="upgrade-4.5-to-4.6.html">Upgrading 4.5 or higher to 4.6.3</a></dt><dt><a href="upgrade-4.6.3-to-5.html">Upgrading OpenACS 4.6.3 to 5.0</a></dt><dt><a href="upgrade-5-0-dot.html">Upgrading an OpenACS 5.0.0 or greater installation</a></dt><dt><a href="upgrade-openacs-files.html">Upgrading the OpenACS files</a></dt><dt><a href="upgrade-supporting.html">Upgrading Platform components</a></dt></dl></div><div class="authorblurb"><p>by <a href="mailto:joel@aufrecht.org" target="_top">Joel Aufrecht</a></p>
           OpenACS docs are written by the named authors, and may be edited
           by OpenACS documentation staff.
         </div></div><div class="navfooter"><hr><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="how-do-I.html">Prev</a> </td><td width="20%" align="center"><a accesskey="h" href="index.html">Home</a></td><td width="40%" align="right"> <a accesskey="n" href="upgrade-overview.html">Next</a></td></tr><tr><td width="40%" align="left">How Do I? </td><td width="20%" align="center"><a accesskey="u" href="acs-admin.html">Up</a></td><td width="40%" align="right"> Overview</td></tr></table><hr><address><a href="mailto:docs@openacs.org">docs@openacs.org</a></address></div><a name="comments"></a><center><a href="http://openacs.org/doc/current/upgrade.html#comments">View comments on this page at openacs.org</a></center></body></html>
Index: openacs-4/packages/acs-core-docs/www/uptime.html
===================================================================
RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/uptime.html,v
diff -u -r1.8 -r1.8.4.1
--- openacs-4/packages/acs-core-docs/www/uptime.html	17 Jul 2006 05:38:32 -0000	1.8
+++ openacs-4/packages/acs-core-docs/www/uptime.html	3 Feb 2008 12:07:41 -0000	1.8.4.1
@@ -1 +1,2 @@
-<html><head><meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"><title>External uptime validation</title><meta name="generator" content="DocBook XSL Stylesheets V1.70.1"><link rel="home" href="index.html" title="OpenACS Core Documentation"><link rel="up" href="maintenance-web.html" title="Chapter�6.�Production Environments"><link rel="previous" href="analog-setup.html" title="Set up Log Analysis Reports"><link rel="next" href="maint-performance.html" title="Diagnosing Performance Problems"><link rel="stylesheet" href="openacs.css" type="text/css"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><a href="http://openacs.org"><img src="/doc/images/alex.jpg" border="0" alt="Alex logo"></a><table width="100%" summary="Navigation header" border="0"><tr><td width="20%" align="left"><a accesskey="p" href="analog-setup.html">Prev</a> </td><th width="60%" align="center">Chapter�6.�Production Environments</th><td width="20%" align="right"> <a accesskey="n" href="maint-performance.html">Next</a></td></tr></table><hr></div><div class="sect1" lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="uptime"></a>External uptime validation</h2></div></div></div><p>The <a href="http://uptime.openacs.org/uptime/" target="_top">OpenACS uptime site</a> can monitor your site and send you an email whenever your site fails to respond.  If you test the url <code class="computeroutput">http://<span class="replaceable"><span class="replaceable">yourserver.test</span></span>/SYSTEM/dbtest.tcl</code>, you should get back the string <code class="computeroutput">success</code>.</p></div><div class="navfooter"><hr><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="analog-setup.html">Prev</a> </td><td width="20%" align="center"><a accesskey="h" href="index.html">Home</a></td><td width="40%" align="right"> <a accesskey="n" href="maint-performance.html">Next</a></td></tr><tr><td width="40%" align="left">Set up Log Analysis Reports </td><td width="20%" align="center"><a accesskey="u" href="maintenance-web.html">Up</a></td><td width="40%" align="right"> Diagnosing Performance Problems</td></tr></table><hr><address><a href="mailto:docs@openacs.org">docs@openacs.org</a></address></div><a name="comments"></a><center><a href="http://openacs.org/doc/current/uptime.html#comments">View comments on this page at openacs.org</a></center></body></html>
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html><head><meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"><title>External uptime validation</title><meta name="generator" content="DocBook XSL Stylesheets V1.60.1"><link rel="home" href="index.html" title="OpenACS Core Documentation"><link rel="up" href="maintenance-web.html" title="Chapter�6.�Production Environments"><link rel="previous" href="analog-setup.html" title="Set up Log Analysis Reports"><link rel="next" href="maint-performance.html" title="Diagnosing Performance Problems"><link rel="stylesheet" href="openacs.css" type="text/css"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><a href="http://openacs.org"><img src="/doc/images/alex.jpg" border="0" alt="Alex logo"></a><table width="100%" summary="Navigation header" border="0"><tr><td width="20%" align="left"><a accesskey="p" href="analog-setup.html">Prev</a> </td><th width="60%" align="center">Chapter�6.�Production Environments</th><td width="20%" align="right"> <a accesskey="n" href="maint-performance.html">Next</a></td></tr></table><hr></div><div class="sect1" lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="uptime"></a>External uptime validation</h2></div></div><div></div></div><p>The <a href="http://uptime.openacs.org/uptime/" target="_top">OpenACS uptime site</a> can monitor your site and send you an email whenever your site fails to respond.  If you test the url <tt class="computeroutput">http://<span class="replaceable"><span class="replaceable">yourserver.test</span></span>/SYSTEM/dbtest.tcl</tt>, you should get back the string <tt class="computeroutput">success</tt>.</p></div><div class="navfooter"><hr><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="analog-setup.html">Prev</a> </td><td width="20%" align="center"><a accesskey="h" href="index.html">Home</a></td><td width="40%" align="right"> <a accesskey="n" href="maint-performance.html">Next</a></td></tr><tr><td width="40%" align="left">Set up Log Analysis Reports </td><td width="20%" align="center"><a accesskey="u" href="maintenance-web.html">Up</a></td><td width="40%" align="right"> Diagnosing Performance Problems</td></tr></table><hr><address><a href="mailto:docs@openacs.org">docs@openacs.org</a></address></div><a name="comments"></a><center><a href="http://openacs.org/doc/current/uptime.html#comments">View comments on this page at openacs.org</a></center></body></html>
Index: openacs-4/packages/acs-core-docs/www/variables.html
===================================================================
RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/variables.html,v
diff -u -r1.23 -r1.23.4.1
--- openacs-4/packages/acs-core-docs/www/variables.html	17 Jul 2006 05:38:32 -0000	1.23
+++ openacs-4/packages/acs-core-docs/www/variables.html	3 Feb 2008 12:07:41 -0000	1.23.4.1
@@ -1,14 +1,15 @@
-<html><head><meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"><title>Variables</title><meta name="generator" content="DocBook XSL Stylesheets V1.70.1"><link rel="home" href="index.html" title="OpenACS Core Documentation"><link rel="up" href="eng-standards.html" title="Chapter�12.�Engineering Standards"><link rel="previous" href="eng-standards-plsql.html" title="PL/SQL Standards"><link rel="next" href="automated-testing-best-practices.html" title="Automated Testing"><link rel="stylesheet" href="openacs.css" type="text/css"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><a href="http://openacs.org"><img src="/doc/images/alex.jpg" border="0" alt="Alex logo"></a><table width="100%" summary="Navigation header" border="0"><tr><td width="20%" align="left"><a accesskey="p" href="eng-standards-plsql.html">Prev</a> </td><th width="60%" align="center">Chapter�12.�Engineering Standards</th><td width="20%" align="right"> <a accesskey="n" href="automated-testing-best-practices.html">Next</a></td></tr></table><hr></div><div class="sect1" lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="variables"></a>Variables</h2></div></div></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="variables-datetime"></a>Date and Time Variables</h3></div></div></div><div class="authorblurb"><div class="cvstag">($Id$)</div><p>By <a href="mailto:joel@aufrecht.org" target="_top">joel@aufrecht.org</a></p>
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html><head><meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"><title>Variables</title><meta name="generator" content="DocBook XSL Stylesheets V1.60.1"><link rel="home" href="index.html" title="OpenACS Core Documentation"><link rel="up" href="eng-standards.html" title="Chapter�12.�Engineering Standards"><link rel="previous" href="eng-standards-plsql.html" title="PL/SQL Standards"><link rel="next" href="automated-testing-best-practices.html" title="Automated Testing"><link rel="stylesheet" href="openacs.css" type="text/css"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><a href="http://openacs.org"><img src="/doc/images/alex.jpg" border="0" alt="Alex logo"></a><table width="100%" summary="Navigation header" border="0"><tr><td width="20%" align="left"><a accesskey="p" href="eng-standards-plsql.html">Prev</a> </td><th width="60%" align="center">Chapter�12.�Engineering Standards</th><td width="20%" align="right"> <a accesskey="n" href="automated-testing-best-practices.html">Next</a></td></tr></table><hr></div><div class="sect1" lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="variables"></a>Variables</h2></div></div><div></div></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="variables-datetime"></a>Date and Time Variables</h3></div></div><div></div></div><div class="authorblurb"><div class="cvstag">($Id$)</div><p>By <a href="mailto:joel@aufrecht.org" target="_top">joel@aufrecht.org</a></p>
           OpenACS docs are written by the named authors, and may be edited
           by OpenACS documentation staff.
         </div><p>Starting with OpenACS 5.0 and the introduction of acs-lang,
     we recommend retrieving date/time information from the database in
-    ANSI format and then using <a href="/api-doc/proc-view?proc=lc%5ftime%5ffmt" target="_top">lc_time_fmt</a> to format it for display.</p><div class="example"><a name="id1114009"></a><p class="title"><b>Example�12.1.�Getting datetime from the database ANSI-style</b></p><div class="example-contents"><pre class="programlisting">db_multirow -extend { mydate_pretty } {
+    ANSI format and then using <a href="/api-doc/proc-view?proc=lc%5ftime%5ffmt" target="_top">lc_time_fmt</a> to format it for display.</p><div class="example"><a name="id3039356"></a><p class="title"><b>Example�12.1.�Getting datetime from the database ANSI-style</b></p><pre class="programlisting">db_multirow -extend { mydate_pretty } {
     select to_char(mydate, 'YYYY-MM-DD HH24:MI:SS') as mydate_ansi,
           ...
     ...
 } {
     set mydate_ansi [lc_time_system_to_conn $mydate_ansi]
-    set mydate_pretty [lc_time_fmt $mydate_ansi "%x %X"]
+    set mydate_pretty [lc_time_fmt $mydate_ansi &quot;%x %X&quot;]
 }
-</pre></div></div><br class="example-break"></div></div><div class="navfooter"><hr><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="eng-standards-plsql.html">Prev</a> </td><td width="20%" align="center"><a accesskey="h" href="index.html">Home</a></td><td width="40%" align="right"> <a accesskey="n" href="automated-testing-best-practices.html">Next</a></td></tr><tr><td width="40%" align="left">PL/SQL Standards </td><td width="20%" align="center"><a accesskey="u" href="eng-standards.html">Up</a></td><td width="40%" align="right"> Automated Testing</td></tr></table><hr><address><a href="mailto:docs@openacs.org">docs@openacs.org</a></address></div><a name="comments"></a><center><a href="http://openacs.org/doc/current/variables.html#comments">View comments on this page at openacs.org</a></center></body></html>
+</pre></div></div></div><div class="navfooter"><hr><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="eng-standards-plsql.html">Prev</a> </td><td width="20%" align="center"><a accesskey="h" href="index.html">Home</a></td><td width="40%" align="right"> <a accesskey="n" href="automated-testing-best-practices.html">Next</a></td></tr><tr><td width="40%" align="left">PL/SQL Standards </td><td width="20%" align="center"><a accesskey="u" href="eng-standards.html">Up</a></td><td width="40%" align="right"> Automated Testing</td></tr></table><hr><address><a href="mailto:docs@openacs.org">docs@openacs.org</a></address></div><a name="comments"></a><center><a href="http://openacs.org/doc/current/variables.html#comments">View comments on this page at openacs.org</a></center></body></html>
Index: openacs-4/packages/acs-core-docs/www/win2k-installation.html
===================================================================
RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/win2k-installation.html,v
diff -u -r1.42 -r1.42.4.1
--- openacs-4/packages/acs-core-docs/www/win2k-installation.html	17 Jul 2006 05:38:32 -0000	1.42
+++ openacs-4/packages/acs-core-docs/www/win2k-installation.html	3 Feb 2008 12:07:41 -0000	1.42.4.1
@@ -1,17 +1,18 @@
-<html><head><meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"><title>OpenACS Installation Guide for Windows2000</title><meta name="generator" content="DocBook XSL Stylesheets V1.70.1"><link rel="home" href="index.html" title="OpenACS Core Documentation"><link rel="up" href="complete-install.html" title="Chapter�3.�Complete Installation"><link rel="previous" href="openacs.html" title="Install OpenACS 5.2.3rc1"><link rel="next" href="mac-installation.html" title="OpenACS Installation Guide for Mac OS X"><link rel="stylesheet" href="openacs.css" type="text/css"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><a href="http://openacs.org"><img src="/doc/images/alex.jpg" border="0" alt="Alex logo"></a><table width="100%" summary="Navigation header" border="0"><tr><td width="20%" align="left"><a accesskey="p" href="openacs.html">Prev</a> </td><th width="60%" align="center">Chapter�3.�Complete Installation</th><td width="20%" align="right"> <a accesskey="n" href="mac-installation.html">Next</a></td></tr></table><hr></div><div class="sect1" lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="win2k-installation"></a>OpenACS Installation Guide for Windows2000</h2></div></div></div><div class="authorblurb"><p>by Matthew Burke and Curtis Galloway</p>
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html><head><meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"><title>OpenACS Installation Guide for Windows2000</title><meta name="generator" content="DocBook XSL Stylesheets V1.60.1"><link rel="home" href="index.html" title="OpenACS Core Documentation"><link rel="up" href="complete-install.html" title="Chapter�3.�Complete Installation"><link rel="previous" href="openacs.html" title="Install OpenACS 5.4.0"><link rel="next" href="mac-installation.html" title="OpenACS Installation Guide for Mac OS X"><link rel="stylesheet" href="openacs.css" type="text/css"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><a href="http://openacs.org"><img src="/doc/images/alex.jpg" border="0" alt="Alex logo"></a><table width="100%" summary="Navigation header" border="0"><tr><td width="20%" align="left"><a accesskey="p" href="openacs.html">Prev</a> </td><th width="60%" align="center">Chapter�3.�Complete Installation</th><td width="20%" align="right"> <a accesskey="n" href="mac-installation.html">Next</a></td></tr></table><hr></div><div class="sect1" lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="win2k-installation"></a>OpenACS Installation Guide for Windows2000</h2></div></div><div></div></div><div class="authorblurb"><p>by Matthew Burke and Curtis Galloway</p>
           OpenACS docs are written by the named authors, and may be edited
           by OpenACS documentation staff.
-        </div><p><span class="strong"><strong>NOTE:</strong></span> These instructions were
+        </div><p><span class="strong">NOTE:</span> These instructions were
 	valid for ACS v4, but have not been tested with OpenACS and the ArsDigita binary 
 	distributions are no longer available.	
     Currently
-    (10/2003), the best option to get OpenACS 5.2.3rc1 running on Windows
+    (10/2003), the best option to get OpenACS 5.4.0 running on Windows
     is to use <a href="http://vmware.com" target="_top">VMware</a> and John
     Sequeira's <a href="http://www.pobox.com/~johnseq/projects/oasisvm/" target="_top">Oasis VM
     distribution</a>
   </p><div class="itemizedlist"><ul type="disc"><li><p>Source: <a href="http://openacs.org/projects/openacs/download/" target="_top">http://openacs.org/projects/openacs/download</a></p></li><li><p>Bug reports: <a href="http://openacs.org/bugtracker/openacs/" target="_top">http://openacs.org/bugtracker/openacs</a></p></li><li><p>Philosophy: <a href="http://photo.net/wtr/thebook/community/" target="_top">http://photo.net/wtr/thebook/community</a>
       (the community chapter of <span class="emphasis"><em>Philip and Alex's Guide to Web
-      Publishing</em></span>)</p></li><li><p>Technical background: <a href="http://photo.net/wtr/thebook/" target="_top">http://photo.net/wtr/thebook/</a></p></li></ul></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="win2kinstall-overview"></a>Overview</h3></div></div></div><p>
+      Publishing</em></span>)</p></li><li><p>Technical background: <a href="http://photo.net/wtr/thebook/" target="_top">http://photo.net/wtr/thebook/</a></p></li></ul></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="win2kinstall-overview"></a>Overview</h3></div></div><div></div></div><p>
     With the recent release of a win32 version of AOLserver, it is now
     possible to run the OpenACS on Windows2000 and Windows98. This document
     explains the steps necessary to get the OpenACS installed and running on your
@@ -23,25 +24,25 @@
     for the Win32 platform, which contains patches for several problems we
     have come across in the default AOLserver binary distribution. See <a href="/aol3" target="_top">the ArsDigita AOLserver 3 distribution page</a> for
     details.</p><p>You can download the binary distribution from <a href="http://arsdigita.com/download" target="_top">the ArsDigita download page</a>
-    under "ArsDigita AOLserver 3 Binary Distribution for Win32."
+    under &quot;ArsDigita AOLserver 3 Binary Distribution for Win32.&quot;
     Please read the release notes in the distribution for configuration notes
-    specific to the version you are downloading.</p></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="win2kinstall-prerequisites"></a>Prerequisites</h3></div></div></div><div class="itemizedlist"><ul type="disc"><li><p>Windows 2000 or Windows 98</p></li><li><p><a href="http://www.winzip.com" target="_top">WinZip</a> or any tool that can
+    specific to the version you are downloading.</p></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="win2kinstall-prerequisites"></a>Prerequisites</h3></div></div><div></div></div><div class="itemizedlist"><ul type="disc"><li><p>Windows 2000 or Windows 98</p></li><li><p><a href="http://www.winzip.com" target="_top">WinZip</a> or any tool that can
       extract gzipped/tarred archives.</p></li><li><p><a href="ftp://ftp.blarg.net/users/amol/zsh" target="_top">zsh</a> (free;
       included in the binary distribution). If this link is broken try <a href="http://www.zsh.org" target="_top">http://www.zsh.org</a>.</p></li><li><p><a href="http://www.oracle.com" target="_top">Oracle 8</a> relational database
       management system</p></li><li><p><a href="http://www.aolserver.com" target="_top">AOLserver</a> (free)</p></li><li><p><a href="http://prdownloads.sourceforge.net/aolserver/nsoracle-2.6.tar.gz?download" target="_top">
       Oracle driver for AOLserver</a> (free)</p></li></ul></div><p>    It is helpful if you have Oracle interMedia Text for full-text searches.
     We're also trying to make our system work with the PLS System,
     available free from <a href="http://www.pls.com" target="_top">http://www.pls.com</a>. 
-</p><p>Although the <code class="computeroutput">zsh</code> shell is the only command-line tool
+</p><p>Although the <tt class="computeroutput">zsh</tt> shell is the only command-line tool
     required to install the OpenACS, if you are a UNIX person used to typing
-    <code class="computeroutput">ls</code> instead of <code class="computeroutput">dir</code> you'll get along much
+    <tt class="computeroutput">ls</tt> instead of <tt class="computeroutput">dir</tt> you'll get along much
     better with the Cygwin toolkit from RedHat (available at <a href="http://sourceware.cygnus.com/cygwin" target="_top">http://sourceware.cygnus.com/cygwin</a>).
     This is a development library and set of tools that gives you a very
     UNIX-like environment under Windows. In particular, it includes
-    <code class="computeroutput">bash</code>, <code class="computeroutput">gzip</code> and <code class="computeroutput">tar</code>, which you can
-    use to perform the OpenACS installation instead of WinZip and zsh.</p></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="win2kinstall-oracle"></a>Your Oracle installation</h3></div></div></div><p>
-    When you install Oracle, a good rule of thumb is "every default
-    setting is wrong." We will not discuss Oracle configuration here
+    <tt class="computeroutput">bash</tt>, <tt class="computeroutput">gzip</tt> and <tt class="computeroutput">tar</tt>, which you can
+    use to perform the OpenACS installation instead of WinZip and zsh.</p></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="win2kinstall-oracle"></a>Your Oracle installation</h3></div></div><div></div></div><p>
+    When you install Oracle, a good rule of thumb is &quot;every default
+    setting is wrong.&quot; We will not discuss Oracle configuration here
     except to mention that the OpenACS requires Oracle's NLS_DATE_FORMAT
     parameter be set to 'YYYY-MM-DD'. Fixing this depends on whether
     Oracle Administration Assistant for Windows NT (<span class="emphasis"><em>yes,
@@ -51,202 +52,202 @@
       select the Oracle Home for the database you wish to use.</p></li><li><p>Bring up its properties dialog and add a parameter NLS_DATE_FORMAT
       with value 'YYYY-MM-DD' (<span class="emphasis"><em>without the
       quotes</em></span>)</p></li><li><p>Verify the date format by logging into the database using SQL Plus
-      and run the following query: <code class="computeroutput">select sysdate from
-      dual;</code></p></li></ol></div><p>Otherwise you will need to perform a little registry surgery as
-    follows:</p><div class="orderedlist"><ol type="1"><li><p>Run <code class="computeroutput">regedit</code> and navigate down the registry keys to
-      <code class="computeroutput">HKEY_LOCAL_MACHINE\Software\ORACLE</code>.</p></li><li><p>
-        Choose the appropriate subtree; this will be <code class="computeroutput">HOME0</code> if
+      and run the following query: <tt class="computeroutput">select sysdate from
+      dual;</tt></p></li></ol></div><p>Otherwise you will need to perform a little registry surgery as
+    follows:</p><div class="orderedlist"><ol type="1"><li><p>Run <tt class="computeroutput">regedit</tt> and navigate down the registry keys to
+      <tt class="computeroutput">HKEY_LOCAL_MACHINE\Software\ORACLE</tt>.</p></li><li><p>
+        Choose the appropriate subtree; this will be <tt class="computeroutput">HOME0</tt> if
         you only have on einstallation of Oracle. 
 
         </p><div class="blockquote"><blockquote class="blockquote"><p>
           If you are an Oracle achiever and have more than one Oracle
-          installation on your machine, you will see <code class="computeroutput">HOME0, HOME1,
-          HOME2</code>, etc. Choose the subtree that corresponds to the
+          installation on your machine, you will see <tt class="computeroutput">HOME0, HOME1,
+          HOME2</tt>, etc. Choose the subtree that corresponds to the
           Oracle installtion you wish to use with the OpenACS.
         </p></blockquote></div><p>
-      </p></li><li><p>If the <code class="computeroutput">NLS_DATE_FORMAT</code> key is already present,
+      </p></li><li><p>If the <tt class="computeroutput">NLS_DATE_FORMAT</tt> key is already present,
       double-click on its value and change it to 'YYYY-MM-DD' 
       (<span class="emphasis"><em>without the quotes</em></span>). If the key does not
-      exist, choose <code class="computeroutput">Edit-&gt;New-&gt;String Value</code> from the menu
-      and type <code class="computeroutput">NLS_DATE_FORMAT</code> for the name of the new value to
+      exist, choose <tt class="computeroutput">Edit-&gt;New-&gt;String Value</tt> from the menu
+      and type <tt class="computeroutput">NLS_DATE_FORMAT</tt> for the name of the new value to
       create it. Then double-click on the empty value to change it.</p></li><li><p>Verify the date format by logging into the database using SQL Plus
-      and run the following query: <code class="computeroutput">select sysdate from
-      dual;</code></p></li></ol></div><p>For more information on Oracle configuration look at <a href="http://photo.net/wtr/oracle-tips" target="_top">http://photo.net/wtr/oracle-tips</a>
-    or search the <a href="http://openacs.org/forums/" target="_top">OpenACS forums</a>. One other note: the "nuke a user" admin page and
-    Intermedia won't run unless you set <code class="computeroutput">open_cursors = 500</code>
-    for your database.</p></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="win2kinstall-acs-binary"></a>The ArsDigita binary installation</h3></div></div></div><p>
-    Extract the ArsDigita AOLserver distribution onto the <code class="computeroutput">C:</code>
-    drive into the default <code class="computeroutput">aol30</code> directory. You can install it
+      and run the following query: <tt class="computeroutput">select sysdate from
+      dual;</tt></p></li></ol></div><p>For more information on Oracle configuration look at <a href="http://photo.net/wtr/oracle-tips" target="_top">http://photo.net/wtr/oracle-tips</a>
+    or search the <a href="http://openacs.org/forums/" target="_top">OpenACS forums</a>. One other note: the &quot;nuke a user&quot; admin page and
+    Intermedia won't run unless you set <tt class="computeroutput">open_cursors = 500</tt>
+    for your database.</p></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="win2kinstall-acs-binary"></a>The ArsDigita binary installation</h3></div></div><div></div></div><p>
+    Extract the ArsDigita AOLserver distribution onto the <tt class="computeroutput">C:</tt>
+    drive into the default <tt class="computeroutput">aol30</tt> directory. You can install it
     on any drive, but it will make your life easier if you keep the AOLserver
     binary and your OpenACS instance on the same drive. For the rest of these
-    instructions, we'll assume that you used drive <code class="computeroutput">C:</code>. 
-</p></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="win2kinstall-untar-acs"></a>Untar the OpenACS</h3></div></div></div><p>
-    We recommend rooting webserver content in <code class="computeroutput">c:\web</code>. Since most
+    instructions, we'll assume that you used drive <tt class="computeroutput">C:</tt>. 
+</p></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="win2kinstall-untar-acs"></a>Untar the OpenACS</h3></div></div><div></div></div><p>
+    We recommend rooting webserver content in <tt class="computeroutput">c:\web</tt>. Since most
     servers these days are expected to run multiple services from multiple IP
-    addresses, each server gets a subdirectory from <code class="computeroutput">c:\web</code>. For
-    example, <code class="computeroutput">http://scorecard.org</code> would be rooted at
-    <code class="computeroutput">c:\web\scorecard</code> on one of our machines and if
-    <code class="computeroutput">http://jobdirect.com</code> were on the same box then it would be
-    at <code class="computeroutput">c:\web\jobdirect</code>. 
+    addresses, each server gets a subdirectory from <tt class="computeroutput">c:\web</tt>. For
+    example, <tt class="computeroutput">http://scorecard.org</tt> would be rooted at
+    <tt class="computeroutput">c:\web\scorecard</tt> on one of our machines and if
+    <tt class="computeroutput">http://jobdirect.com</tt> were on the same box then it would be
+    at <tt class="computeroutput">c:\web\jobdirect</tt>. 
 </p><p>For the sake of argument, we're going to assume that your service
-    is called "yourdomain", is going to be at
-    <code class="computeroutput">http://yourdomain.com</code> and is rooted at
-    <code class="computeroutput">c:\web\yourdomain</code> in the Windows 2000 file system. Note that
+    is called &quot;yourdomain&quot;, is going to be at
+    <tt class="computeroutput">http://yourdomain.com</tt> and is rooted at
+    <tt class="computeroutput">c:\web\yourdomain</tt> in the Windows 2000 file system. Note that
     you'll find our definitions files starting out with
-    "yourdomain.com".</p><div class="itemizedlist"><ul type="disc"><li><p>download the OpenACS (see <a href="#source" target="_top">above</a>) into
-      <code class="computeroutput">c:\temp\acs.tar.gz</code></p></li><li><p>use WinZip (or equivalent) to extract the files to
-      <code class="computeroutput">c:\web\yourdomain</code></p></li></ul></div><p>   
- You'll now find that <code class="computeroutput">c:\web\yourdomain\www</code> contains the
-    document root and <code class="computeroutput">c:\web\yourdomain\tcl</code> contains Tcl scripts
+    &quot;yourdomain.com&quot;.</p><div class="itemizedlist"><ul type="disc"><li><p>download the OpenACS (see <a href="#source" target="_top">above</a>) into
+      <tt class="computeroutput">c:\temp\acs.tar.gz</tt></p></li><li><p>use WinZip (or equivalent) to extract the files to
+      <tt class="computeroutput">c:\web\yourdomain</tt></p></li></ul></div><p>   
+ You'll now find that <tt class="computeroutput">c:\web\yourdomain\www</tt> contains the
+    document root and <tt class="computeroutput">c:\web\yourdomain\tcl</tt> contains Tcl scripts
     that are loaded when the AOLserver starts up. 
-</p></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="win2kinstall-data-model"></a>Feeding Oracle the Data Model</h3></div></div></div><p>
+</p></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="win2kinstall-data-model"></a>Feeding Oracle the Data Model</h3></div></div><div></div></div><p>
     The entire server will behave in an unhappy manner if it connects to
     Oracle and finds that, for example, the users table does not exist. Thus
     you need to connect to Oracle as whatever user the AOLserver will connect
     as, and feed Oracle the table definitions. 
 </p><div class="itemizedlist"><ul type="disc"><li><p>
-        load the <code class="computeroutput">states</code>, <code class="computeroutput">country_codes</code> and
-        <code class="computeroutput">counties</code> tables using the <code class="computeroutput">load-geo-tables</code>
-        shell script in the <code class="computeroutput">c:\web\yourdomain\www\install</code>
+        load the <tt class="computeroutput">states</tt>, <tt class="computeroutput">country_codes</tt> and
+        <tt class="computeroutput">counties</tt> tables using the <tt class="computeroutput">load-geo-tables</tt>
+        shell script in the <tt class="computeroutput">c:\web\yourdomain\www\install</tt>
         directory. You will need to open a console window and run </p><pre class="programlisting">
 zsh load-geo-tables foo/foopassword
 </pre><p>
-        You most likely will see a slew of "Commit point reached . . .
-        " messages. This does not indicate a problem. 
+        You most likely will see a slew of &quot;Commit point reached . . .
+        &quot; messages. This does not indicate a problem. 
 
         
       </p></li><li><p>
-        cd to <code class="computeroutput">c:\web\yourdomain\www\doc\sql</code> and feed Oracle the
+        cd to <tt class="computeroutput">c:\web\yourdomain\www\doc\sql</tt> and feed Oracle the
         .sql files that you find there. There is a meta-loader file,
         load-data-model.sql, that includes the other files in the proper
         order. To use it, open a console window and run 
 </p><pre class="programlisting">
 sqlplus foo/foopassword &lt; load-data-model.sql
 </pre></li><li><p>
         If you have interMedia installed, while still in
-        <code class="computeroutput">c:\web\yourdomain\www\doc\sql</code>, run 
+        <tt class="computeroutput">c:\web\yourdomain\www\doc\sql</tt>, run 
 </p><pre class="programlisting">
 zsh load-site-wide-search foo foopassword ctxsys-password
 </pre><p>
-        Note that there's no slash between <code class="computeroutput">foo</code> and
-        <code class="computeroutput">foopassword</code> here. The third argument,
-        <code class="computeroutput">ctxsys-password</code>, is the password for interMedia
+        Note that there's no slash between <tt class="computeroutput">foo</tt> and
+        <tt class="computeroutput">foopassword</tt> here. The third argument,
+        <tt class="computeroutput">ctxsys-password</tt>, is the password for interMedia
         Text's special ctxsys user.
-      </p></li></ul></div></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="win2kinstall-aolserver"></a>Configuring AOLserver</h3></div></div></div><p>You will need two configuration files. The first is a Tcl file with
+      </p></li></ul></div></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="win2kinstall-aolserver"></a>Configuring AOLserver</h3></div></div><div></div></div><p>You will need two configuration files. The first is a Tcl file with
     configuration information for AOLserver. This should be called
-    <code class="computeroutput">yourdomain</code> and should be located in
-    <code class="computeroutput">c:\aolserve3_0</code>. The second is an .ini file that configures
+    <tt class="computeroutput">yourdomain</tt> and should be located in
+    <tt class="computeroutput">c:\aolserve3_0</tt>. The second is an .ini file that configures
     the OpenACS and is discussed <a href="#ini" target="_top">below</a>. Note that pathnames in
-    <code class="computeroutput">yourdomain</code> must use forward slashes rather than the Windows
-    back slashes. This is also true for the .ini file.</p><p>The following items must be defined in <code class="computeroutput">yourdomain</code>:</p><div class="itemizedlist"><ul type="disc"><li><p>three database pools: main, subquery, and log. They must be named
-      as such. The default pool will be "main".</p></li><li><p>the auxconfig directory which contains the .ini file:
-      <code class="computeroutput">c:\web\yourdomain\parameters</code></p></li><li><p>the pageroot: <code class="computeroutput">c:\web\yourdomain\www</code></p></li><li><p>the directory containing the TclLibrary:
-      <code class="computeroutput">c:\web\yourdomain\tcl</code></p></li></ul></div><p>
+    <tt class="computeroutput">yourdomain</tt> must use forward slashes rather than the Windows
+    back slashes. This is also true for the .ini file.</p><p>The following items must be defined in <tt class="computeroutput">yourdomain</tt>:</p><div class="itemizedlist"><ul type="disc"><li><p>three database pools: main, subquery, and log. They must be named
+      as such. The default pool will be &quot;main&quot;.</p></li><li><p>the auxconfig directory which contains the .ini file:
+      <tt class="computeroutput">c:\web\yourdomain\parameters</tt></p></li><li><p>the pageroot: <tt class="computeroutput">c:\web\yourdomain\www</tt></p></li><li><p>the directory containing the TclLibrary:
+      <tt class="computeroutput">c:\web\yourdomain\tcl</tt></p></li></ul></div><p>
     You can use <a href="/doc/files/winnsd.txt" target="_top">our template file</a> as a starting
     point (<span class="emphasis"><em>you'll need to save this file with a rather than .txt
     extension</em></span>). 
-</p></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="wint2install-configure-acs"></a>Configuring OpenACS itself</h3></div></div></div><p>
+</p></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="wint2install-configure-acs"></a>Configuring OpenACS itself</h3></div></div><div></div></div><p>
     If you want a system that works, go to
-    <code class="computeroutput">c:\web\yourdomain\parameters</code> and copy <code class="computeroutput">ad.ini</code> to
-    <code class="computeroutput">yourdomain.ini</code> (<span class="emphasis"><em>or any other name different from
-    <code class="computeroutput">ad.ini</code></em></span>). You don't actually have to delete
-    <code class="computeroutput">ad.ini</code>. 
-</p><p>Each section of <code class="computeroutput">yourdomain.ini</code> has a hardcoded
-    "yourservername" in the name (e.g.
-    <code class="computeroutput">[ns/server/yourservername/acs]</code>). This means that the OpenACS
+    <tt class="computeroutput">c:\web\yourdomain\parameters</tt> and copy <tt class="computeroutput">ad.ini</tt> to
+    <tt class="computeroutput">yourdomain.ini</tt> (<span class="emphasis"><em>or any other name different from
+    <tt class="computeroutput">ad.ini</tt></em></span>). You don't actually have to delete
+    <tt class="computeroutput">ad.ini</tt>. 
+</p><p>Each section of <tt class="computeroutput">yourdomain.ini</tt> has a hardcoded
+    &quot;yourservername&quot; in the name (e.g.
+    <tt class="computeroutput">[ns/server/yourservername/acs]</tt>). This means that the OpenACS
     will ignore your configuration settings unless your AOLserver name
-    happens to be "yourservername". Therefore you must go through
-    <code class="computeroutput">yourdomain.ini</code> and change "yourservername" to
+    happens to be &quot;yourservername&quot;. Therefore you must go through
+    <tt class="computeroutput">yourdomain.ini</tt> and change &quot;yourservername&quot; to
     whatever you're calling this particular AOLserver (<span class="emphasis"><em>look at the
-    server name in the <code class="computeroutput">nsd</code> file for a reference</em></span>).</p><p>Unless you want pages that advertise a community called
-    "Yourdomain Network" owned by
-    "webmaster@yourdomain.com", you'll probably want to edit
-    the text of <code class="computeroutput">yourdomain.ini</code> to change system-wide parameters.
+    server name in the <tt class="computeroutput">nsd</tt> file for a reference</em></span>).</p><p>Unless you want pages that advertise a community called
+    &quot;Yourdomain Network&quot; owned by
+    &quot;webmaster@yourdomain.com&quot;, you'll probably want to edit
+    the text of <tt class="computeroutput">yourdomain.ini</tt> to change system-wide parameters.
     If you want to see how some of these are used, a good place to look is
-    <code class="computeroutput">c:\web\yourdomain\tcl\ad-defs</code>. The Tcl function,
-    <code class="computeroutput">ad_parameter</code>, is used to grab parameter values from the .ini
-    file.</p></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="wi2kinstall-starting-service"></a>Starting the Service</h3></div></div></div><p>
+    <tt class="computeroutput">c:\web\yourdomain\tcl\ad-defs</tt>. The Tcl function,
+    <tt class="computeroutput">ad_parameter</tt>, is used to grab parameter values from the .ini
+    file.</p></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="wi2kinstall-starting-service"></a>Starting the Service</h3></div></div><div></div></div><p>
     Now you're ready to start things up. Before installing as a Windows
     service, you might want to test the setup for configuration errors. Open
-    up a console window and go to <code class="computeroutput">c:\aol30</code>. Then run 
+    up a console window and go to <tt class="computeroutput">c:\aol30</tt>. Then run 
 </p><pre class="programlisting">
 bin\nsd -ft yourdomain.tcl
 </pre><p> This will print all the AOLserver messages to the console so you can see
     them. 
 </p><p>Try to connect to your new server with a web browser. If you see the
-    message "Error in serving group pages", you probably forgot to
-    copy the ad.ini file in <code class="computeroutput">c:\web\yourdomain\parameters</code> If
+    message &quot;Error in serving group pages&quot;, you probably forgot to
+    copy the ad.ini file in <tt class="computeroutput">c:\web\yourdomain\parameters</tt> If
     everything seems ok, you can kill the server with Control-c and then
     issue the following command to install as a Windows service:</p><pre class="programlisting">
 bin\nsd -I -s yourdomain -t yourdomain.tcl
 </pre><p> You can now configure error recovery and other Windows aspects of the
     service from the Services control panel. If you make further changes to
-    <code class="computeroutput">yourdomain</code> or <code class="computeroutput">yourdomain.ini</code> you should stop
+    <tt class="computeroutput">yourdomain</tt> or <tt class="computeroutput">yourdomain.ini</tt> you should stop
     and start the service from the Services control panel. 
-</p></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="win2kinstall-configure-permissions"></a>Configuring Permissions</h3></div></div></div><p>
+</p></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="win2kinstall-configure-permissions"></a>Configuring Permissions</h3></div></div><div></div></div><p>
     Now, you need to protect the proper administration directories of the
     OpenACS. You decide the policy although we recommend requiring the admin
     directories be accessible only via an SSL connection. Here are the
     directories to consider protecting: 
 </p><div class="itemizedlist"><ul type="disc"><li><p>/doc (or at least /doc/sql/ since some AOLserver configurations
       will allow a user to execute SQL files)</p></li><li><p>/admin</p></li><li><p>any private admin dirs for a module you might have written that are
-      not underneath the /admin directory</p></li></ul></div></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="win2kinstall-add-yourself"></a>Adding Yourself as a User and Making Yourself a Sysadmin</h3></div></div></div><p>
+      not underneath the /admin directory</p></li></ul></div></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="win2kinstall-add-yourself"></a>Adding Yourself as a User and Making Yourself a Sysadmin</h3></div></div><div></div></div><p>
     OpenACS will define two users: system and
     anonymous. It will also define a user group of system administrators.
     You'll want to add yourself as a user (at /register/ ) and then add
     yourself as as member of the site-wide administration group. Start by
     logging out as yourself and logging in as the system user (email of
-    "system"). Change the system user's password. Visit the
-    <code class="computeroutput">https://yourservername.com/admin/ug/</code> directory and add your
+    &quot;system&quot;). Change the system user's password. Visit the
+    <tt class="computeroutput">https://yourservername.com/admin/ug/</tt> directory and add your
     personal user as a site-wide administrator. Now you're bootstrapped! 
 </p><p>If you do not know what the system user's password is connect to
     Oracle using SQL Plus and run the following query:</p><pre class="programlisting">
 select password from users where last_name = 'system';
-</pre></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="win2kinstall-closing-down-access"></a>Closing Down Access</h3></div></div></div><p>
-    The OpenACS ships with a user named "anonymous" (email
-    "anonymous") to serve as a content owner. If you're
+</pre></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="win2kinstall-closing-down-access"></a>Closing Down Access</h3></div></div><div></div></div><p>
+    The OpenACS ships with a user named &quot;anonymous&quot; (email
+    &quot;anonymous&quot;) to serve as a content owner. If you're
     operating a restricted-access site, make sure to change the anonymous
     user's password. In recent versions of the OpenACS you cannot log into
-    "anonymous" because the account does not have a valid user
+    &quot;anonymous&quot; because the account does not have a valid user
     state. Log in as a sysadmin and change the anonymous user's password
-    from <code class="computeroutput">https://yourservername/admin/users</code>. You should read the
+    from <tt class="computeroutput">https://yourservername/admin/users</tt>. You should read the
     documentation for <a href="user-registration" target="_top">user registration and
     access control</a> and decide what the appropriate user state is for
     anonymous on your site. 
-</p></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="win2kinstall-where-is-what"></a>Where to Find What</h3></div></div></div><p>
+</p></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="win2kinstall-where-is-what"></a>Where to Find What</h3></div></div><div></div></div><p>
     A few pointers: 
 </p><div class="itemizedlist"><ul type="disc"><li><p>the /register directory contains the login and registration
       scripts. You can easily redirect someone to /register/index to have
       them login or register.</p></li><li><p>the /pvt directory is for user-specific pages. They can only be
-      accessed by people who have logged in.</p></li></ul></div></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="win2kinstall-make-sure-it-works"></a>Making sure that it works</h3></div></div></div><p>
+      accessed by people who have logged in.</p></li></ul></div></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="win2kinstall-make-sure-it-works"></a>Making sure that it works</h3></div></div><div></div></div><p>
     Run the acceptance tests in <a href="/doc/acceptance-test" target="_top">/doc/acceptance-test</a> 
-</p></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="win2kinstall-multiple-acs"></a>Running Multiple Instances of the OpenACS</h3></div></div></div><p>
+</p></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="win2kinstall-multiple-acs"></a>Running Multiple Instances of the OpenACS</h3></div></div><div></div></div><p>
     You can run multiple instances of the OpenACS on a physical machine but they
     must each be set up as a separate Windows service. Each instance of the
     OpenACS must have its own:
 </p><div class="itemizedlist"><ul type="disc"><li><p>Oracle tablespace and a user account with the appropriate
       permissions on that tablespace. Each of these tablespaces must have the
       OpenACS data model loaded.</p></li><li><p>file with the appropriate settings including server name,
       auxconfig, ipaddress, and port.</p></li><li><p>Copy of the acs files in an appropriate directory under
-      <code class="computeroutput">c:\web</code>.</p></li></ul></div><p>    Suppose you wish to run two services: <code class="computeroutput">lintcollectors.com</code> and
-    <code class="computeroutput">iguanasdirect.com</code>. You would need the following: 
-</p><div class="itemizedlist"><ul type="disc"><li><p>an Oracle tablespace, <code class="computeroutput">lintcollectors</code> with a user
-      <code class="computeroutput">lintcollectors</code> and password <code class="computeroutput">secretlint</code></p></li><li><p>an Oracle tablespace, <code class="computeroutput">iguanasdirect</code> with a user
-      <code class="computeroutput">iguanasdirect</code> and password <code class="computeroutput">secretiguanas</code></p></li></ul></div><p> For each of these tablespaces/users you would load the OpenACS data model as
-    described <a href="#data" target="_top">above</a>. Then in <code class="computeroutput">c:\aolserver3_0</code>
-    create files for each service, i.e. <code class="computeroutput">lintcollectors</code> and
-    <code class="computeroutput">iguanasdirect</code>. These files would point to their respective
-    pageroots, <code class="computeroutput">c:\web\lintcollectors\www</code> and
-    <code class="computeroutput">c:\web\iguanasdirect\www</code>; their respective auxconfigdirs,
-    <code class="computeroutput">c:\web\lintcollectors\parameters</code> and
-    <code class="computeroutput">c:\web\iguanasdirect\parameters</code>; etc. In the respective
-    auxconfigdirs would be the files <code class="computeroutput">lintcollectors.ini</code> and
-    <code class="computeroutput">iguanasdirect.ini</code>. 
-</p><p>Now open a console window and go to <code class="computeroutput">c:\aol30</code>. You'll
+      <tt class="computeroutput">c:\web</tt>.</p></li></ul></div><p>    Suppose you wish to run two services: <tt class="computeroutput">lintcollectors.com</tt> and
+    <tt class="computeroutput">iguanasdirect.com</tt>. You would need the following: 
+</p><div class="itemizedlist"><ul type="disc"><li><p>an Oracle tablespace, <tt class="computeroutput">lintcollectors</tt> with a user
+      <tt class="computeroutput">lintcollectors</tt> and password <tt class="computeroutput">secretlint</tt></p></li><li><p>an Oracle tablespace, <tt class="computeroutput">iguanasdirect</tt> with a user
+      <tt class="computeroutput">iguanasdirect</tt> and password <tt class="computeroutput">secretiguanas</tt></p></li></ul></div><p> For each of these tablespaces/users you would load the OpenACS data model as
+    described <a href="#data" target="_top">above</a>. Then in <tt class="computeroutput">c:\aolserver3_0</tt>
+    create files for each service, i.e. <tt class="computeroutput">lintcollectors</tt> and
+    <tt class="computeroutput">iguanasdirect</tt>. These files would point to their respective
+    pageroots, <tt class="computeroutput">c:\web\lintcollectors\www</tt> and
+    <tt class="computeroutput">c:\web\iguanasdirect\www</tt>; their respective auxconfigdirs,
+    <tt class="computeroutput">c:\web\lintcollectors\parameters</tt> and
+    <tt class="computeroutput">c:\web\iguanasdirect\parameters</tt>; etc. In the respective
+    auxconfigdirs would be the files <tt class="computeroutput">lintcollectors.ini</tt> and
+    <tt class="computeroutput">iguanasdirect.ini</tt>. 
+</p><p>Now open a console window and go to <tt class="computeroutput">c:\aol30</tt>. You'll
     start up the two services as follows:</p><pre class="programlisting">
 bin\nsd -I -s lintcollectors -t lintcollectors.tcl
 bin\nsd -I -s iguanasdirect -t iguanasdirect.tcl
 </pre><p> In the services control panel you should see two services:
-    <code class="computeroutput">AOLserver-lintcollectors</code> and
-    <code class="computeroutput">AOLserver-iguanasdirect</code>. 
-    </p><div class="cvstag">($Id$)</div></div></div><div class="navfooter"><hr><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="openacs.html">Prev</a> </td><td width="20%" align="center"><a accesskey="h" href="index.html">Home</a></td><td width="40%" align="right"> <a accesskey="n" href="mac-installation.html">Next</a></td></tr><tr><td width="40%" align="left">Install OpenACS 5.2.3rc1 </td><td width="20%" align="center"><a accesskey="u" href="complete-install.html">Up</a></td><td width="40%" align="right"> OpenACS Installation Guide for Mac OS X</td></tr></table><hr><address><a href="mailto:docs@openacs.org">docs@openacs.org</a></address></div><a name="comments"></a><center><a href="http://openacs.org/doc/current/win2k-installation.html#comments">View comments on this page at openacs.org</a></center></body></html>
+    <tt class="computeroutput">AOLserver-lintcollectors</tt> and
+    <tt class="computeroutput">AOLserver-iguanasdirect</tt>. 
+    </p><div class="cvstag">($Id$)</div></div></div><div class="navfooter"><hr><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="openacs.html">Prev</a> </td><td width="20%" align="center"><a accesskey="h" href="index.html">Home</a></td><td width="40%" align="right"> <a accesskey="n" href="mac-installation.html">Next</a></td></tr><tr><td width="40%" align="left">Install OpenACS 5.4.0 </td><td width="20%" align="center"><a accesskey="u" href="complete-install.html">Up</a></td><td width="40%" align="right"> OpenACS Installation Guide for Mac OS X</td></tr></table><hr><address><a href="mailto:docs@openacs.org">docs@openacs.org</a></address></div><a name="comments"></a><center><a href="http://openacs.org/doc/current/win2k-installation.html#comments">View comments on this page at openacs.org</a></center></body></html>
Index: openacs-4/packages/acs-core-docs/www/xml/variables.ent
===================================================================
RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/xml/variables.ent,v
diff -u -r1.17 -r1.17.2.1
--- openacs-4/packages/acs-core-docs/www/xml/variables.ent	25 Sep 2007 15:22:34 -0000	1.17
+++ openacs-4/packages/acs-core-docs/www/xml/variables.ent	3 Feb 2008 12:07:42 -0000	1.17.2.1
@@ -1,7 +1,7 @@
 <?xml version="1.0" encoding="ISO-8859-1" ?>
-<!ENTITY version "5.3.2">
-<!ENTITY tarballpath "openacs-5.3.2">
-<!ENTITY cvsversiontag "oacs-5-3-2-final">
+<!ENTITY version "5.4.0">
+<!ENTITY tarballpath "openacs-5.4.0">
+<!ENTITY cvsversiontag "oacs-5-4-0-final">
 <!ENTITY majorversion "5">
-<!ENTITY minorversion "3">
-<!ENTITY releasebranch "oacs-5-3">
+<!ENTITY minorversion "4">
+<!ENTITY releasebranch "oacs-5-4">