Index: openacs-4/packages/acs-core-docs/www/apm-requirements.adp
===================================================================
RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/apm-requirements.adp,v
diff -u -r1.4.2.6 -r1.4.2.7
--- openacs-4/packages/acs-core-docs/www/apm-requirements.adp	13 Jul 2023 12:43:18 -0000	1.4.2.6
+++ openacs-4/packages/acs-core-docs/www/apm-requirements.adp	1 Aug 2024 08:03:38 -0000	1.4.2.7
@@ -34,7 +34,7 @@
 <a name="apm-requirements-vision" id="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 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
+underlying subsystems, such as a permission system, content
 management system, etc. For such applications and subsystem
 components, modularity - or the degree to which a component can be
 encapsulated and decoupled from the rest of the system - is of
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.38.2.2 -r1.38.2.3
--- openacs-4/packages/acs-core-docs/www/apm-requirements.html	3 Sep 2021 09:14:48 -0000	1.38.2.2
+++ openacs-4/packages/acs-core-docs/www/apm-requirements.html	1 Aug 2024 08:03:38 -0000	1.38.2.3
@@ -14,8 +14,7 @@
 Debian packaging system, and PERL's CPAN in the development of the ideas
 behind this document.</p></div><div class="sect2"><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
 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
+etc. A website may also have underlying subsystems, such as a permission system, content management system, etc. For such applications and subsystem
 components, modularity - or the degree to which a component can be
 encapsulated and decoupled from the rest of the system - is of great value.
 Thus the OpenACS Package Manager (APM) was created to allow website components,
Index: openacs-4/packages/acs-core-docs/www/backup-recovery.adp
===================================================================
RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/backup-recovery.adp,v
diff -u -r1.4.2.9 -r1.4.2.10
--- openacs-4/packages/acs-core-docs/www/backup-recovery.adp	13 Jul 2023 12:43:18 -0000	1.4.2.9
+++ openacs-4/packages/acs-core-docs/www/backup-recovery.adp	1 Aug 2024 08:03:38 -0000	1.4.2.10
@@ -30,7 +30,7 @@
 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><div class="figure">
-<a name="idp105548901229640" id="idp105548901229640"></a><p class="title"><strong>Figure 8.1. Backup
+<a name="id1406" id="id1406"></a><p class="title"><strong>Figure 8.1. Backup
 and Recovery Strategy</strong></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>
 OpenACS docs are written by the named authors, and may be edited by
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.46.2.7 -r1.46.2.8
--- openacs-4/packages/acs-core-docs/www/backup-recovery.html	13 Jul 2023 12:43:18 -0000	1.46.2.7
+++ openacs-4/packages/acs-core-docs/www/backup-recovery.html	1 Aug 2024 08:03:38 -0000	1.46.2.8
@@ -6,7 +6,7 @@
     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="idp105548901229640"></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="id1406"></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>
           OpenACS docs are written by the named authors, and may be edited
           by OpenACS documentation staff.
Index: openacs-4/packages/acs-core-docs/www/configuring-configuring-packages.adp
===================================================================
RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/configuring-configuring-packages.adp,v
diff -u -r1.4.2.9 -r1.4.2.10
--- openacs-4/packages/acs-core-docs/www/configuring-configuring-packages.adp	13 Jul 2023 12:43:18 -0000	1.4.2.9
+++ openacs-4/packages/acs-core-docs/www/configuring-configuring-packages.adp	1 Aug 2024 08:03:39 -0000	1.4.2.10
@@ -17,7 +17,8 @@
 OpenACS docs are written by the named authors, and may be edited by
 OpenACS documentation staff.</div><div class="sect2">
 <div class="titlepage"><div><div><h3 class="title">
-<a name="idp105548901936968" id="idp105548901936968"></a>Configuring an OpenACS package</h3></div></div></div><p>After you&#39;ve installed and mounted your package, you can
+<a name="id1345" id="id1345"></a>Configuring an
+OpenACS package</h3></div></div></div><p>After you&#39;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-packages.html
===================================================================
RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/configuring-configuring-packages.html,v
diff -u -r1.13.2.7 -r1.13.2.8
--- openacs-4/packages/acs-core-docs/www/configuring-configuring-packages.html	13 Jul 2023 12:43:18 -0000	1.13.2.7
+++ openacs-4/packages/acs-core-docs/www/configuring-configuring-packages.html	1 Aug 2024 08:03:39 -0000	1.13.2.8
@@ -2,7 +2,7 @@
 <html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><title>Configuring an OpenACS package</title><link rel="stylesheet" type="text/css" href="openacs.css"><meta name="generator" content="DocBook XSL Stylesheets Vsnapshot"><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"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><a href="http://openacs.org"><img src="/doc/images/alex.jpg" style="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"><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 class="ulink" 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"><div class="titlepage"><div><div><h3 class="title"><a name="idp105548901936968"></a>Configuring an OpenACS package</h3></div></div></div><p>After you've installed and mounted your package, you can
+        </div><div class="sect2"><div class="titlepage"><div><div><h3 class="title"><a name="id1345"></a>Configuring an OpenACS package</h3></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.adp
===================================================================
RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/configuring-configuring-permissions.adp,v
diff -u -r1.4.2.9 -r1.4.2.10
--- openacs-4/packages/acs-core-docs/www/configuring-configuring-permissions.adp	13 Jul 2023 12:43:18 -0000	1.4.2.9
+++ openacs-4/packages/acs-core-docs/www/configuring-configuring-permissions.adp	1 Aug 2024 08:03:39 -0000	1.4.2.10
@@ -17,8 +17,8 @@
 OpenACS docs are written by the named authors, and may be edited by
 OpenACS documentation staff.</div><div class="sect2">
 <div class="titlepage"><div><div><h3 class="title">
-<a name="idp105548901416392" id="idp105548901416392"></a>Setting Permission on an OpenACS
-package</h3></div></div></div><p>After you&#39;ve installed and mounted your package, you can
+<a name="id1346" id="id1346"></a>Setting
+Permission on an OpenACS package</h3></div></div></div><p>After you&#39;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-configuring-permissions.html
===================================================================
RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/configuring-configuring-permissions.html,v
diff -u -r1.13.2.7 -r1.13.2.8
--- openacs-4/packages/acs-core-docs/www/configuring-configuring-permissions.html	13 Jul 2023 12:43:18 -0000	1.13.2.7
+++ openacs-4/packages/acs-core-docs/www/configuring-configuring-permissions.html	1 Aug 2024 08:03:39 -0000	1.13.2.8
@@ -2,7 +2,7 @@
 <html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><title>Setting Permissions on an OpenACS package</title><link rel="stylesheet" type="text/css" href="openacs.css"><meta name="generator" content="DocBook XSL Stylesheets Vsnapshot"><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?"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><a href="http://openacs.org"><img src="/doc/images/alex.jpg" style="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"><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 class="ulink" 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"><div class="titlepage"><div><div><h3 class="title"><a name="idp105548901416392"></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"><div class="titlepage"><div><div><h3 class="title"><a name="id1346"></a>Setting Permission on an OpenACS package</h3></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.adp
===================================================================
RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/configuring-install-packages.adp,v
diff -u -r1.4.2.10 -r1.4.2.11
--- openacs-4/packages/acs-core-docs/www/configuring-install-packages.adp	13 Jul 2023 12:43:18 -0000	1.4.2.10
+++ openacs-4/packages/acs-core-docs/www/configuring-install-packages.adp	1 Aug 2024 08:03:39 -0000	1.4.2.11
@@ -16,7 +16,8 @@
 OpenACS docs are written by the named authors, and may be edited by
 OpenACS documentation staff.</div><div class="sect2">
 <div class="titlepage"><div><div><h3 class="title">
-<a name="idp105548901925704" id="idp105548901925704"></a>Installing OpenACS packages</h3></div></div></div><p>An OpenACS package extends your website and lets it do things it
+<a name="id1343" id="id1343"></a>Installing
+OpenACS packages</h3></div></div></div><p>An OpenACS package extends your website and lets it do things it
 was not 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&#39;ve installed OpenACS, you can congratulate
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.13.2.8 -r1.13.2.9
--- openacs-4/packages/acs-core-docs/www/configuring-install-packages.html	13 Jul 2023 12:43:18 -0000	1.13.2.8
+++ openacs-4/packages/acs-core-docs/www/configuring-install-packages.html	1 Aug 2024 08:03:39 -0000	1.13.2.9
@@ -2,7 +2,7 @@
 <html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><title>Installing OpenACS packages</title><link rel="stylesheet" type="text/css" href="openacs.css"><meta name="generator" content="DocBook XSL Stylesheets Vsnapshot"><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"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><a href="http://openacs.org"><img src="/doc/images/alex.jpg" style="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"><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 class="ulink" 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"><div class="titlepage"><div><div><h3 class="title"><a name="idp105548901925704"></a>Installing OpenACS packages</h3></div></div></div><p>An OpenACS package extends your website and lets it do
+        </div><div class="sect2"><div class="titlepage"><div><div><h3 class="title"><a name="id1343"></a>Installing OpenACS packages</h3></div></div></div><p>An OpenACS package extends your website and lets it do
       things it was not 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
Index: openacs-4/packages/acs-core-docs/www/configuring-mounting-packages.adp
===================================================================
RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/configuring-mounting-packages.adp,v
diff -u -r1.4.2.9 -r1.4.2.10
--- openacs-4/packages/acs-core-docs/www/configuring-mounting-packages.adp	13 Jul 2023 12:43:18 -0000	1.4.2.9
+++ openacs-4/packages/acs-core-docs/www/configuring-mounting-packages.adp	1 Aug 2024 08:03:39 -0000	1.4.2.10
@@ -16,7 +16,8 @@
 OpenACS docs are written by the named authors, and may be edited by
 OpenACS documentation staff.</div><div class="sect2">
 <div class="titlepage"><div><div><h3 class="title">
-<a name="idp105548901932104" id="idp105548901932104"></a>Mounting OpenACS packages</h3></div></div></div><p>After you&#39;ve installed your packages, you have to
+<a name="id1344" id="id1344"></a>Mounting OpenACS
+packages</h3></div></div></div><p>After you&#39;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
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.13.2.7 -r1.13.2.8
--- openacs-4/packages/acs-core-docs/www/configuring-mounting-packages.html	13 Jul 2023 12:43:18 -0000	1.13.2.7
+++ openacs-4/packages/acs-core-docs/www/configuring-mounting-packages.html	1 Aug 2024 08:03:39 -0000	1.13.2.8
@@ -2,7 +2,7 @@
 <html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><title>Mounting OpenACS packages</title><link rel="stylesheet" type="text/css" href="openacs.css"><meta name="generator" content="DocBook XSL Stylesheets Vsnapshot"><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"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><a href="http://openacs.org"><img src="/doc/images/alex.jpg" style="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"><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 class="ulink" 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"><div class="titlepage"><div><div><h3 class="title"><a name="idp105548901932104"></a>Mounting OpenACS packages</h3></div></div></div><p>After you've installed your packages, you have to 'mount'
+        </div><div class="sect2"><div class="titlepage"><div><div><h3 class="title"><a name="id1344"></a>Mounting OpenACS packages</h3></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/cvs-guidelines.adp
===================================================================
RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/cvs-guidelines.adp,v
diff -u -r1.5.2.12 -r1.5.2.13
--- openacs-4/packages/acs-core-docs/www/cvs-guidelines.adp	13 Jul 2023 12:43:19 -0000	1.5.2.12
+++ openacs-4/packages/acs-core-docs/www/cvs-guidelines.adp	1 Aug 2024 08:03:39 -0000	1.5.2.13
@@ -18,7 +18,8 @@
 <div class="titlepage"><div><div><h3 class="title">
 <a name="using-cvs-with-openacs" id="using-cvs-with-openacs"></a>Using CVS with OpenACS</h3></div></div></div><div class="sect3">
 <div class="titlepage"><div><div><h4 class="title">
-<a name="idp105548898322632" id="idp105548898322632"></a>Getting Started</h4></div></div></div><p>All OpenACS code is available anonymously. To get code
+<a name="id1383" id="id1383"></a>Getting
+Started</h4></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.</p><p>If you are an OpenACS developer, you should check out code so
@@ -80,7 +81,8 @@
 </div>
 </div><div class="sect3">
 <div class="titlepage"><div><div><h4 class="title">
-<a name="idp105548898355528" id="idp105548898355528"></a>Checkout for Package Development</h4></div></div></div><p>If you are actively developing a non-core package, you should
+<a name="id1384" id="id1384"></a>Checkout for
+Package Development</h4></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-9. This ensures that you are working on top of a stable
 OpenACS core, but still allows you to commit feature changes to
@@ -97,7 +99,8 @@
 packages and their current state.</p>
 </div><div class="sect3">
 <div class="titlepage"><div><div><h4 class="title">
-<a name="idp105548898362568" id="idp105548898362568"></a>Checkout for Core Development</h4></div></div></div><p>If you are actively developing packages in the OpenACS Core,
+<a name="id1385" id="id1385"></a>Checkout for
+Core Development</h4></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
@@ -106,7 +109,8 @@
 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">
 <div class="titlepage"><div><div><h4 class="title">
-<a name="idp105548898366792" id="idp105548898366792"></a>Checkout .LRN</h4></div></div></div><p>.LRN consists of a given version OpenACS core, plus a set of
+<a name="id1386" id="id1386"></a>Checkout
+.LRN</h4></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
 distribution 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;
@@ -131,7 +135,7 @@
 <div class="titlepage"><div><div><h3 class="title">
 <a name="openacs-cvs-concepts" id="openacs-cvs-concepts"></a>OpenACS CVS Concepts</h3></div></div></div><div class="sect3">
 <div class="titlepage"><div><div><h4 class="title">
-<a name="idp105548901911368" id="idp105548901911368"></a>Modules</h4></div></div></div><p>All OpenACS code resides within a single CVS module,
+<a name="id1387" id="id1387"></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
@@ -168,7 +172,8 @@
 module of the same name.</p>
 </div><div class="sect3">
 <div class="titlepage"><div><div><h4 class="title">
-<a name="idp105548901914056" id="idp105548901914056"></a> Tags and Branches</h4></div></div></div><p>Tags and Branches look similar in commands, but behave
+<a name="id1388" id="id1388"></a> Tags and
+Branches</h4></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
@@ -414,7 +419,8 @@
 </ol></div>
 </div><div class="sect3">
 <div class="titlepage"><div><div><h4 class="title">
-<a name="idp105548901357000" id="idp105548901357000"></a> Informal Guidelines</h4></div></div></div><p>Informal guidelines which may be obsolete in places and should
+<a name="id1389" id="id1389"></a> Informal
+Guidelines</h4></div></div></div><p>Informal guidelines which may be obsolete in places and should
 be reviewed:</p><div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc;">
 <li class="listitem"><p>Before committing to cvs you must submit a bug report and patch
 to the <a class="ulink" href="http://openacs.org/bugtracker/openacs" target="_top">OpenACS bug
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.14.2.9 -r1.14.2.10
--- openacs-4/packages/acs-core-docs/www/cvs-guidelines.html	13 Jul 2023 12:43:19 -0000	1.14.2.9
+++ openacs-4/packages/acs-core-docs/www/cvs-guidelines.html	1 Aug 2024 08:03:39 -0000	1.14.2.10
@@ -6,7 +6,7 @@
     </p>
           OpenACS docs are written by the named authors, and may be edited
           by OpenACS documentation staff.
-        </div><div class="sect2"><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"><div class="titlepage"><div><div><h4 class="title"><a name="idp105548898322632"></a>Getting Started</h4></div></div></div><p>
+        </div><div class="sect2"><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"><div class="titlepage"><div><div><h4 class="title"><a name="id1383"></a>Getting Started</h4></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.
@@ -52,7 +52,7 @@
 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"><div class="titlepage"><div><div><p class="title"><b></b></p></div></div></div><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"><div class="titlepage"><div><div><h4 class="title"><a name="idp105548898355528"></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 <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"><div class="titlepage"><div><div><h4 class="title"><a name="id1384"></a>Checkout for Package Development</h4></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-9.  This ensures that you are working on top
       of a stable OpenACS core, but still allows you to commit feature
@@ -67,13 +67,13 @@
             Inventory</a> and <a class="ulink" 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"><div class="titlepage"><div><div><h4 class="title"><a name="idp105548898362568"></a>Checkout for Core Development</h4></div></div></div><p>If you are actively developing packages in the OpenACS
+      </p></div><div class="sect3"><div class="titlepage"><div><div><h4 class="title"><a name="id1385"></a>Checkout for Core Development</h4></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"><div class="titlepage"><div><div><h4 class="title"><a name="idp105548898366792"></a>Checkout .LRN</h4></div></div></div><p>
+              <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"><div class="titlepage"><div><div><h4 class="title"><a name="id1386"></a>Checkout .LRN</h4></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
         distribution of .LRN. F .LRN 2.0.0 sits on top of OpenACS 5.0.0.
@@ -88,7 +88,7 @@
 mv dotlrn/install.xml ..</span></span></pre></div><div class="sect3"><div class="titlepage"><div><div><h4 class="title"><a name="working-with-cvs"></a>Working with CVS</h4></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"><div class="titlepage"><div><div><h3 class="title"><a name="openacs-cvs-concepts"></a>OpenACS CVS Concepts</h3></div></div></div><div class="sect3"><div class="titlepage"><div><div><h4 class="title"><a name="idp105548901911368"></a>Modules</h4></div></div></div><p>
+    </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"><div class="titlepage"><div><div><h3 class="title"><a name="openacs-cvs-concepts"></a>OpenACS CVS Concepts</h3></div></div></div><div class="sect3"><div class="titlepage"><div><div><h4 class="title"><a name="id1387"></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
           packages. It does not have any user applications, such as forums,
@@ -116,7 +116,7 @@
           <code class="computeroutput">project-manager-all</code> 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"><div class="titlepage"><div><div><h4 class="title"><a name="idp105548901914056"></a>
+        </p></div><div class="sect3"><div class="titlepage"><div><div><h4 class="title"><a name="id1388"></a>
         Tags and Branches
       </h4></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
@@ -316,7 +316,7 @@
           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"><div class="titlepage"><div><div><h4 class="title"><a name="idp105548901357000"></a>
+        </p></li></ol></div></div><div class="sect3"><div class="titlepage"><div><div><h4 class="title"><a name="id1389"></a>
       Informal Guidelines
     </h4></div></div></div><p>
       Informal guidelines which may be obsolete in places and should be reviewed:
Index: openacs-4/packages/acs-core-docs/www/cvs-tips.adp
===================================================================
RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/cvs-tips.adp,v
diff -u -r1.4.2.9 -r1.4.2.10
--- openacs-4/packages/acs-core-docs/www/cvs-tips.adp	13 Jul 2023 12:43:19 -0000	1.4.2.9
+++ openacs-4/packages/acs-core-docs/www/cvs-tips.adp	1 Aug 2024 08:03:39 -0000	1.4.2.10
@@ -19,9 +19,8 @@
 OpenACS docs are written by the named authors, and may be edited by
 OpenACS documentation staff.</div><p>
 <a name="cvs-service-import" id="cvs-service-import"></a><strong>Add the Service to CVS -
-OPTIONAL. </strong><a class="indexterm" name="idp105548899821128" id="idp105548899821128"></a>These steps take
-an existing OpenACS directory and add it to a <a class="link" href="install-cvs" title="Initialize CVS (OPTIONAL)">CVS
-repository</a>.</p><div class="orderedlist"><ol class="orderedlist" type="1">
+OPTIONAL. </strong><a class="indexterm" name="id13502" id="id13502"></a>These steps take an existing OpenACS directory and
+add it to a <a class="link" href="install-cvs" title="Initialize CVS (OPTIONAL)">CVS repository</a>.</p><div class="orderedlist"><ol class="orderedlist" type="1">
 <li class="listitem">
 <p>Create and set permissions on a subdirectory in the local cvs
 repository.</p><pre class="screen">
Index: openacs-4/packages/acs-core-docs/www/cvs-tips.html
===================================================================
RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/cvs-tips.html,v
diff -u -r1.37.2.7 -r1.37.2.8
--- openacs-4/packages/acs-core-docs/www/cvs-tips.html	13 Jul 2023 12:43:19 -0000	1.37.2.7
+++ openacs-4/packages/acs-core-docs/www/cvs-tips.html	1 Aug 2024 08:03:39 -0000	1.37.2.8
@@ -2,7 +2,7 @@
 <html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><title>Appendix D. Using CVS with an OpenACS Site</title><link rel="stylesheet" type="text/css" href="openacs.css"><meta name="generator" content="DocBook XSL Stylesheets Vsnapshot"><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="i18n-translators.html" title="Translator's Guide"><link rel="next" href="acs-plat-dev.html" title="Part IV. For OpenACS Platform Developers"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><a href="http://openacs.org"><img src="/doc/images/alex.jpg" style="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">Part III. For OpenACS Package Developers</th><td width="20%" align="right"> <a accesskey="n" href="acs-plat-dev.html">Next</a></td></tr></table><hr></div><div class="appendix"><div class="titlepage"><div><div><h2 class="title"><a name="cvs-tips"></a>Appendix D. Using CVS with an OpenACS Site</h2></div></div></div><div class="authorblurb"><p>      By <a class="ulink" 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><a name="cvs-service-import"></a><b>Add the Service to CVS - OPTIONAL. </b><a class="indexterm" name="idp105548899821128"></a>These steps take an existing OpenACS directory and add
+        </div><p><a name="cvs-service-import"></a><b>Add the Service to CVS - OPTIONAL. </b><a class="indexterm" name="id13502"></a>These steps take an existing OpenACS directory and add
           it to a <a class="link" href="install-cvs.html" title="Initialize CVS (OPTIONAL)">CVS
           repository</a>.</p><div class="orderedlist"><ol class="orderedlist" type="1"><li class="listitem"><p>Create and set permissions on a subdirectory in the local cvs repository.</p><pre class="screen">[root root]# <strong class="userinput"><code>mkdir /cvsroot/<span class="replaceable"><span class="replaceable">$OPENACS_SERVICE_NAME</span></span></code></strong>
 [root root]#<strong class="userinput"><code> chown <span class="replaceable"><span class="replaceable">$OPENACS_SERVICE_NAME.$OPENACS_SERVICE_NAME</span></span> /cvsroot/<span class="replaceable"><span class="replaceable">$OPENACS_SERVICE_NAME</span></span></code></strong>
Index: openacs-4/packages/acs-core-docs/www/db-api-detailed.adp
===================================================================
RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/db-api-detailed.adp,v
diff -u -r1.5.2.9 -r1.5.2.10
--- openacs-4/packages/acs-core-docs/www/db-api-detailed.adp	13 Jul 2023 12:43:19 -0000	1.5.2.9
+++ openacs-4/packages/acs-core-docs/www/db-api-detailed.adp	1 Aug 2024 08:03:39 -0000	1.5.2.10
@@ -605,7 +605,7 @@
 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> to skip this row and quit
 looping.</p><p>Notice the nonstandard numbering (everything else in Tcl starts
-at 0); the reason is that the graphics designer, a non programmer,
+at 0); the reason is that the graphics designer, a non-programmer,
 may wish to work with row numbers.</p><p>Example:</p><pre class="programlisting">
 db_multirow -extend { user_url } users users_query {
     select user_id first_names, last_name, email from cc_users
@@ -693,7 +693,7 @@
 script and should never be referenced directly by user code.
 Returns the current rdbms type and version.</p>
 </dd>
-</dl></div><div class="cvstag">($&zwnj;Id: db-api.xml,v 1.12.2.4 2021/05/02 20:18:15
+</dl></div><div class="cvstag">($&zwnj;Id: db-api.xml,v 1.12.2.5 2024/02/05 15:35:07
 gustafn Exp $)</div>
 </div>
 </div>
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.52.2.10 -r1.52.2.11
--- openacs-4/packages/acs-core-docs/www/db-api-detailed.html	13 Jul 2023 12:43:19 -0000	1.52.2.10
+++ openacs-4/packages/acs-core-docs/www/db-api-detailed.html	1 Aug 2024 08:03:39 -0000	1.52.2.11
@@ -582,8 +582,7 @@
     </p><p>
 
     Notice the nonstandard numbering (everything
-    else in Tcl starts at 0); the reason is that the graphics designer, a non
-    programmer, may wish to work with row numbers.
+    else in Tcl starts at 0); the reason is that the graphics designer, a non-programmer, may wish to work with row numbers.
     </p><p>
        Example:
     </p><pre class="programlisting">
Index: openacs-4/packages/acs-core-docs/www/db-api.adp
===================================================================
RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/db-api.adp,v
diff -u -r1.5.2.7 -r1.5.2.8
--- openacs-4/packages/acs-core-docs/www/db-api.adp	13 Jul 2023 12:43:19 -0000	1.5.2.7
+++ openacs-4/packages/acs-core-docs/www/db-api.adp	1 Aug 2024 08:03:39 -0000	1.5.2.8
@@ -80,7 +80,7 @@
 deleted, for example.</p><p>Another very important reason for using bind variables is
 performance. Oracle can cache previously parsed queries. If there
 are values in the where clause, that is how the query is cached. It
-also performs bind variable susbstitution after parsing the SQL
+also performs bind variable substitution after parsing the SQL
 statement. This means that SQL statements that use bind variables
 will always match (assuming all else is the same) while SQL
 statements that do not use bind variables will not match unless the
@@ -262,7 +262,6 @@
 <a name="devguide.dbapi_db_abort_transaction" id="devguide.dbapi_db_abort_transaction"></a>db_abort_transaction</code></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 instead of <code class="computeroutput">db_dml
@@ -306,7 +305,7 @@
 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> to skip this row and quit
 looping.</p><p>Notice the nonstandard numbering (everything else in Tcl starts
-at 0); the reason is that the graphics designer, a non programmer,
+at 0); the reason is that the graphics designer, a non-programmer,
 may wish to work with row numbers.</p><p>Example:</p><pre class="programlisting">
 db_multirow -extend { user_url } users users_query {
     select user_id first_names, last_name, email from cc_users
@@ -552,7 +551,7 @@
           
 </pre>
 </dd>
-</dl></div><div class="cvstag">($&zwnj;Id: db-api.xml,v 1.17.2.4 2023/07/10 08:36:09
+</dl></div><div class="cvstag">($&zwnj;Id: db-api.xml,v 1.17.2.6 2024/02/08 18:45:01
 gustafn Exp $)</div>
 </div><div class="sect2">
 <div class="titlepage"><div><div><h3 class="title">
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.53.2.9 -r1.53.2.10
--- openacs-4/packages/acs-core-docs/www/db-api.html	13 Jul 2023 12:43:19 -0000	1.53.2.9
+++ openacs-4/packages/acs-core-docs/www/db-api.html	1 Aug 2024 08:03:39 -0000	1.53.2.10
@@ -91,7 +91,7 @@
           Another very important reason for using bind variables is
 	  performance. Oracle can cache previously parsed queries. If
 	  there are values in the where clause, that is how the query
-	  is cached. It also performs bind variable susbstitution
+	  is cached. It also performs bind variable substitution
 	  after parsing the SQL statement. This means that SQL
 	  statements that use bind variables will always match
 	  (assuming all else is the same) while SQL statements that do
@@ -283,9 +283,7 @@
 	    <code class="computeroutput">
 	      <a name="devguide.dbapi_db_abort_transaction"></a>db_abort_transaction
 	    </code>
-	</span></dt><dd><pre class="programlisting">
-db_abort_transaction
-	  </pre><p>Aborts all levels of a transaction. That is if this is called within
+	</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 instead of
 	    <code class="computeroutput">db_dml "abort" "abort transaction"</code>. 
 	    
@@ -337,8 +335,7 @@
     to skip this row and quit looping.
     </p><p>
     Notice the nonstandard numbering (everything
-    else in Tcl starts at 0); the reason is that the graphics designer, a non
-    programmer, may wish to work with row numbers.
+    else in Tcl starts at 0); the reason is that the graphics designer, a non-programmer, may wish to work with row numbers.
     </p><p>
        Example:
     </p><pre class="programlisting">
Index: openacs-4/packages/acs-core-docs/www/docbook-primer.adp
===================================================================
RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/docbook-primer.adp,v
diff -u -r1.6.2.11 -r1.6.2.12
--- openacs-4/packages/acs-core-docs/www/docbook-primer.adp	13 Jul 2023 12:43:19 -0000	1.6.2.11
+++ openacs-4/packages/acs-core-docs/www/docbook-primer.adp	1 Aug 2024 08:03:39 -0000	1.6.2.12
@@ -410,9 +410,10 @@
 tools will be marked up to conform to the <a class="ulink" href="http://docbook.org/xml/index.html" target="_top">DocBook XML
 DTD</a>. The remaining discussion is about publishing using
 Docbook.</p><p>
-<a class="indexterm" name="idp105548965961928" id="idp105548965961928"></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 class="itemizedlist" style="list-style-type: disc;">
+<a class="indexterm" name="id12232" id="id12232"></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 class="itemizedlist" style="list-style-type: disc;">
 <li class="listitem"><p>It is open-source.</p></li><li class="listitem"><p>The DocBook community <a class="ulink" href="http://docbook.org/help" target="_top">mailing lists</a>
 </p></li><li class="listitem"><p>A number of free and commercial <a class="ulink" href="https://github.com/docbook/wiki/wiki/DocBookTools" target="_top">tools</a> are available for editing and publishing DocBook
 documents.</p></li><li class="listitem"><p>It enables us to publish in a variety of formats.</p></li><li class="listitem"><p>XML separates content from presentation: It relieves each
@@ -450,7 +451,7 @@
 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="idp105548965943240" id="idp105548965943240"></a>
+you remember to</strong></span>: <a class="indexterm" name="id12272" id="id12272"></a>
 </p><div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc;">
 <li class="listitem"><p>Always close your tags with corresponding end-tags and to
 <span class="strong"><strong>not use other tag
@@ -491,7 +492,7 @@
 <div class="titlepage"><div><div><h3 class="title">
 <a name="dbprimer-structure" id="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 - examples are
-<span class="emphasis"><em>emphasized</em></span>: <a class="indexterm" name="idp105548965926856" id="idp105548965926856"></a>
+<span class="emphasis"><em>emphasized</em></span>: <a class="indexterm" name="id12311" id="id12311"></a>
 </p><pre class="programlisting">
     book                        : <span class="strong"><strong>Docs for one package</strong></span> - <span class="emphasis"><em>templating</em></span>
      |
@@ -516,21 +517,23 @@
 </div><div class="sect2">
 <div class="titlepage"><div><div><h3 class="title">
 <a name="dbprimer-sections" id="dbprimer-sections"></a>Headlines, Sections</h3></div></div></div><p>
-<a class="indexterm" name="idp105548965903432" id="idp105548965903432"></a> Given that your job starts at the
-<code class="computeroutput">sect1</code>-level, all your documents
-should open with a <a class="ulink" href="http://docbook.org/tdg/en/html/sect1.html" target="_top"><code class="computeroutput">&lt;sect1&gt;</code></a>-tag
+<a class="indexterm" name="id12332" id="id12332"></a> Given that
+your job starts at the <code class="computeroutput">sect1</code>-level, all your documents should open
+with a <a class="ulink" 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><p>
-<a class="indexterm" name="idp105548965906504" id="idp105548965906504"></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 class="xref" href="docbook-primer" title="Links">the section called
-&ldquo;Links&rdquo;</a>). The value of
-<code class="computeroutput">id</code> has to be unique throughout
-the book you&#39;re making since the <code class="computeroutput">id</code>'s in your <code class="computeroutput">sect1</code>'s will turn into filenames when
+<a class="indexterm" name="id12340" id="id12340"></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 class="xref" href="docbook-primer" title="Links">the
+section called &ldquo;Links&rdquo;</a>). The
+value of <code class="computeroutput">id</code> has to be unique
+throughout the book you&#39;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.</p><p>
-<a class="indexterm" name="idp105548965910472" id="idp105548965910472"></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>.</p><p>Right after the opening tag you put the title of the document -
+<a class="indexterm" name="id12349" id="id12349"></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>.</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&#39;re reading right now looks like this:</p><pre class="programlisting">
 &lt;sect1 id="docbook-primer" xreflabel="DocBook Primer"&gt;
@@ -540,8 +543,8 @@
 
 &lt;/sect1&gt;
 </pre><p>
-<a class="indexterm" name="idp105548965913928" id="idp105548965913928"></a> Inside this container your document will
-be split up into <a class="ulink" href="http://docbook.org/tdg/en/html/sect2.html" target="_top"><code class="computeroutput">&lt;sect2&gt;</code></a>'s,
+<a class="indexterm" name="id12357" id="id12357"></a> Inside
+this container your document will be split up into <a class="ulink" 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.</p><p>When it comes to naming your <code class="computeroutput">sect2</code>'s and below, prefix them with
@@ -550,9 +553,9 @@
 </div><div class="sect2">
 <div class="titlepage"><div><div><h3 class="title">
 <a name="dbprimer-code" id="dbprimer-code"></a>Code</h3></div></div></div><p>
-<a class="indexterm" name="idp105548966412616" id="idp105548966412616"></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 class="ulink" href="http://docbook.org/tdg/en/html/computeroutput.html" target="_top"><code class="computeroutput">&lt;computeroutput&gt;</code></a> and <a class="ulink" href="http://docbook.org/tdg/en/html/code.html" target="_top"><code class="code">&lt;code&gt;</code></a> tags. These
+<a class="indexterm" name="id12373" id="id12373"></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 class="ulink" href="http://docbook.org/tdg/en/html/computeroutput.html" target="_top"><code class="computeroutput">&lt;computeroutput&gt;</code></a> and <a class="ulink" href="http://docbook.org/tdg/en/html/code.html" target="_top"><code class="code">&lt;code&gt;</code></a> tags. These
 replace the HTML-tag <code class="code">&lt;code&gt;</code> 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 class="ulink" href="http://docbook.org/tdg/en/html/programlisting.html" target="_top"><code class="computeroutput">&lt;programlisting&gt;</code></a> is used. Just
@@ -564,16 +567,17 @@
 </div><div class="sect2">
 <div class="titlepage"><div><div><h3 class="title">
 <a name="dbprimer-links" id="dbprimer-links"></a>Links</h3></div></div></div><p>
-<a class="indexterm" name="idp105548966420552" id="idp105548966420552"></a> Linking falls into two different
-categories: inside the book you&#39;re making and outside:</p><div class="variablelist"><dl class="variablelist">
+<a class="indexterm" name="id12394" id="id12394"></a> Linking
+falls into two different categories: inside the book you&#39;re
+making and outside:</p><div class="variablelist"><dl class="variablelist">
 <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 with a simple tag,
 regardless of where that part is.</p><p>
-<a class="indexterm" name="idp105548966423752" id="idp105548966423752"></a>Check out how I link to a subsection of
-the Developer&#39;s Guide:</p><p>Put this in your XML:</p><pre class="programlisting">
+<a class="indexterm" name="id12404" id="id12404"></a>Check out
+how I link to a subsection of the Developer&#39;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;.
 </pre><p>And the output is:</p><pre class="programlisting">
@@ -596,9 +600,10 @@
 </dd><dt><span class="term"><span class="strong"><strong>2. Linking
 outside the documentation</strong></span></span></dt><dd>
 <p>
-<a class="indexterm" name="idp105548966403784" id="idp105548966403784"></a> If you&#39;re hyper-linking out of the
-documentation, it works almost the same way as HTML - the tag is
-just a little different (<a class="ulink" href="http://docbook.org/tdg/en/html/ulink.html" target="_top"><code class="computeroutput">&lt;ulink&gt;</code></a>):</p><pre class="programlisting">
+<a class="indexterm" name="id12435" id="id12435"></a> If
+you&#39;re hyper-linking out of the documentation, it works almost
+the same way as HTML - the tag is just a little different
+(<a class="ulink" href="http://docbook.org/tdg/en/html/ulink.html" target="_top"><code class="computeroutput">&lt;ulink&gt;</code></a>):</p><pre class="programlisting">
 &lt;ulink url="http://www.oracle.com/"&gt;Oracle Corporation&lt;/ulink&gt;
 </pre><p>....will create a hyper-link to Oracle in the HTML-version of
 the documentation.</p><p>
@@ -615,8 +620,8 @@
 <span class="strong"><strong>Note:</strong></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="idp105548966410696" id="idp105548966410696"></a> To insert a graphic we use the elements
-<a class="ulink" href="http://docbook.org/tdg/en/html/mediaobject.html" target="_top"><code class="computeroutput">&lt;mediaobject&gt;</code></a>,
+<a class="indexterm" name="id12451" id="id12451"></a> To insert
+a graphic we use the elements <a class="ulink" href="http://docbook.org/tdg/en/html/mediaobject.html" target="_top"><code class="computeroutput">&lt;mediaobject&gt;</code></a>,
 <a class="ulink" href="http://docbook.org/tdg/en/html/imageobject.html" target="_top"><code class="computeroutput">&lt;imageobject&gt;</code></a>,
 <a class="ulink" href="http://docbook.org/tdg/en/html/imagedata.html" target="_top"><code class="computeroutput">&lt;imagedata&gt;</code></a>,
 and <a class="ulink" href="http://docbook.org/tdg/en/html/textobject.html" target="_top"><code class="computeroutput">&lt;textobject&gt;</code></a>.
@@ -640,8 +645,9 @@
 </div><div class="sect2">
 <div class="titlepage"><div><div><h3 class="title">
 <a name="dbprimer-lists" id="dbprimer-lists"></a>Lists</h3></div></div></div><p>
-<a class="indexterm" name="idp105548966384200" id="idp105548966384200"></a> Here&#39;s how you make the DocBook
-equivalent of the three usual HTML-lists:</p><div class="variablelist"><dl class="variablelist">
+<a class="indexterm" name="id12467" id="id12467"></a> Here&#39;s
+how you make the DocBook equivalent of the three usual
+HTML-lists:</p><div class="variablelist"><dl class="variablelist">
 <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
@@ -693,8 +699,8 @@
 </div><div class="sect2">
 <div class="titlepage"><div><div><h3 class="title">
 <a name="dbprimer-tables" id="dbprimer-tables"></a>Tables</h3></div></div></div><p>
-<a class="indexterm" name="idp105548966367176" id="idp105548966367176"></a> DocBook supports several types of tables,
-but in most cases, the <a class="ulink" href="http://docbook.org/tdg/en/html/informaltable.html" target="_top"><code class="computeroutput">&lt;informaltable&gt;</code></a> is enough:</p><pre class="programlisting">
+<a class="indexterm" name="id12508" id="id12508"></a> DocBook
+supports several types of tables, but in most cases, the <a class="ulink" href="http://docbook.org/tdg/en/html/informaltable.html" target="_top"><code class="computeroutput">&lt;informaltable&gt;</code></a> is enough:</p><pre class="programlisting">
 &lt;informaltable frame="all"&gt;
   &lt;tgroup cols="3"&gt;
     &lt;tbody&gt;
@@ -739,8 +745,9 @@
 </div><div class="sect2">
 <div class="titlepage"><div><div><h3 class="title">
 <a name="dbprimer-emphasis" id="dbprimer-emphasis"></a>Emphasis</h3></div></div></div><p>
-<a class="indexterm" name="idp105548966378184" id="idp105548966378184"></a> Our documentation uses two flavors of
-emphasis - italics and bold type. DocBook uses one - <a class="ulink" href="http://docbook.org/tdg/en/html/emphasis.html" target="_top"><code class="computeroutput">&lt;emphasis&gt;</code></a>.</p><p>The <code class="computeroutput">&lt;emphasis&gt;</code> tag
+<a class="indexterm" name="id12536" id="id12536"></a> Our
+documentation uses two flavors of emphasis - italics and bold type.
+DocBook uses one - <a class="ulink" href="http://docbook.org/tdg/en/html/emphasis.html" target="_top"><code class="computeroutput">&lt;emphasis&gt;</code></a>.</p><p>The <code class="computeroutput">&lt;emphasis&gt;</code> tag
 defaults to italics when parsed. If you&#39;re looking for
 emphasizing with bold type, use <code class="computeroutput">&lt;emphasis
 role="strong"&gt;</code>.</p>
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.56.2.8 -r1.56.2.9
--- openacs-4/packages/acs-core-docs/www/docbook-primer.html	13 Jul 2023 12:43:19 -0000	1.56.2.8
+++ openacs-4/packages/acs-core-docs/www/docbook-primer.html	1 Aug 2024 08:03:39 -0000	1.56.2.9
@@ -578,7 +578,7 @@
       DTD</a>. The remaining discussion is about publishing using
     Docbook.
 </p><p>
-<a class="indexterm" name="idp105548965961928"></a> 
+<a class="indexterm" name="id12232"></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 class="itemizedlist" style="list-style-type: disc; "><li class="listitem"><p>      
@@ -640,7 +640,7 @@
     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="idp105548965943240"></a>
+      <a class="indexterm" name="id12272"></a>
     </p><div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem"><p>
       Always close your tags with corresponding end-tags and to
       <span class="strong"><strong>not use other tag minimization</strong></span>
@@ -689,7 +689,7 @@
       The documentation for each package will make up a little "book" that is structured like this 
       - examples are <span class="emphasis"><em>emphasized</em></span>:
 
-      <a class="indexterm" name="idp105548965926856"></a>
+      <a class="indexterm" name="id12311"></a>
 
     </p><pre class="programlisting">
     book                        : <span class="strong"><strong>Docs for one package</strong></span> - <span class="emphasis"><em>templating</em></span>
@@ -713,20 +713,20 @@
       <a class="ulink" href="https://github.com/openacs/openacs-core/tree/oacs-5-9/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"><div class="titlepage"><div><div><h3 class="title"><a name="dbprimer-sections"></a>Headlines, Sections</h3></div></div></div><p>
-      <a class="indexterm" name="idp105548965903432"></a>
+      <a class="indexterm" name="id12332"></a>
       Given that your job starts at the <code class="computeroutput">sect1</code>-level, all your documents should open with a
       <a class="ulink" 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><p>
-      <a class="indexterm" name="idp105548965906504"></a>
+      <a class="indexterm" name="id12340"></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 class="xref" href="docbook-primer.html#dbprimer-links" title="Links">the section called “Links”</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.
     </p><p>
-      <a class="indexterm" name="idp105548965910472"></a>
+      <a class="indexterm" name="id12349"></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>.
     </p><p>
@@ -741,7 +741,7 @@
 
 &lt;/sect1&gt;
 </pre><p>
-      <a class="indexterm" name="idp105548965913928"></a>
+      <a class="indexterm" name="id12357"></a>
       Inside this container your document will be split up into 
       <a class="ulink" 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>
@@ -750,7 +750,7 @@
       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"><div class="titlepage"><div><div><h3 class="title"><a name="dbprimer-code"></a>Code</h3></div></div></div><p>
-      <a class="indexterm" name="idp105548966412616"></a>
+      <a class="indexterm" name="id12373"></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 class="ulink" href="http://docbook.org/tdg/en/html/computeroutput.html" target="_top"><code class="computeroutput">&lt;computeroutput&gt;</code></a>
@@ -768,12 +768,12 @@
       tag around text that has been wrapped by combinations of <a class="ulink" href="http://docbook.org/tdg/en/html/computeroutput.html" target="_top"><code class="computeroutput">&lt;computeroutput&gt;</code></a>
       and <a class="ulink" 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"><div class="titlepage"><div><div><h3 class="title"><a name="dbprimer-links"></a>Links</h3></div></div></div><p>
-      <a class="indexterm" name="idp105548966420552"></a>
+      <a class="indexterm" name="id12394"></a>
       Linking falls into two different categories: inside the book you're making and outside:
     </p><div class="variablelist"><dl class="variablelist"><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
         with a simple tag, regardless of where that part is.
-      </p><p><a class="indexterm" name="idp105548966423752"></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="id12404"></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;.
 </pre><p>And the output is:</p><pre class="programlisting">
@@ -797,7 +797,7 @@
         <code class="computeroutput">packages-looks</code>, 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="idp105548966403784"></a>
+        <a class="indexterm" name="id12435"></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
 
@@ -818,7 +818,7 @@
     for you.
       </em></span>
     </p><p>
-      <a class="indexterm" name="idp105548966410696"></a>
+      <a class="indexterm" name="id12451"></a>
       To insert a graphic we use the elements 
       <a class="ulink" href="http://docbook.org/tdg/en/html/mediaobject.html" target="_top"><code class="computeroutput">&lt;mediaobject&gt;</code></a>,
       <a class="ulink" href="http://docbook.org/tdg/en/html/imageobject.html" target="_top"><code class="computeroutput">&lt;imageobject&gt;</code></a>,
@@ -844,7 +844,7 @@
       Put your graphics in a separate directory ("images") and link to them 
       only with relative paths.
     </p></div><div class="sect2"><div class="titlepage"><div><div><h3 class="title"><a name="dbprimer-lists"></a>Lists</h3></div></div></div><p>
-      <a class="indexterm" name="idp105548966384200"></a>
+      <a class="indexterm" name="id12467"></a>
       Here's how you make the DocBook equivalent of the three usual HTML-lists:
     </p><div class="variablelist"><dl class="variablelist"><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
@@ -889,7 +889,7 @@
 
 &lt;/variablelist&gt;
 </pre></dd></dl></div></div><div class="sect2"><div class="titlepage"><div><div><h3 class="title"><a name="dbprimer-tables"></a>Tables</h3></div></div></div><p>
-      <a class="indexterm" name="idp105548966367176"></a>
+      <a class="indexterm" name="id12508"></a>
       DocBook supports several types of tables, but in most cases, the
       <a class="ulink" href="http://docbook.org/tdg/en/html/informaltable.html" target="_top"><code class="computeroutput">&lt;informaltable&gt;</code></a>
       is enough:
@@ -926,7 +926,7 @@
       <a class="ulink" href="http://docbook.org/tdg/en/html/table.html" target="_top"><code class="computeroutput">&lt;table&gt;</code></a>
       for an example.
     </p></div><div class="sect2"><div class="titlepage"><div><div><h3 class="title"><a name="dbprimer-emphasis"></a>Emphasis</h3></div></div></div><p>
-      <a class="indexterm" name="idp105548966378184"></a>
+      <a class="indexterm" name="id12536"></a>
       Our documentation uses two flavors of emphasis - italics and bold type. DocBook uses one - 
       <a class="ulink" href="http://docbook.org/tdg/en/html/emphasis.html" target="_top"><code class="computeroutput">&lt;emphasis&gt;</code></a>.
     </p><p>
Index: openacs-4/packages/acs-core-docs/www/ext-auth-requirements.adp
===================================================================
RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/ext-auth-requirements.adp,v
diff -u -r1.6.2.10 -r1.6.2.11
--- openacs-4/packages/acs-core-docs/www/ext-auth-requirements.adp	13 Jul 2023 12:43:19 -0000	1.6.2.10
+++ openacs-4/packages/acs-core-docs/www/ext-auth-requirements.adp	1 Aug 2024 08:03:39 -0000	1.6.2.11
@@ -12,7 +12,7 @@
 <a name="ext-auth-requirements" id="ext-auth-requirements"></a>External
 Authentication Requirements</h2></div></div></div><div class="sect2">
 <div class="titlepage"><div><div><h3 class="title">
-<a name="idp105548832526408" id="idp105548832526408"></a>Vision</h3></div></div></div><p>People have plenty of usernames and passwords already, we
+<a name="id1391" id="id1391"></a>Vision</h3></div></div></div><p>People have plenty of usernames and passwords already, we
 don&#39;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
@@ -74,7 +74,7 @@
 <div class="titlepage"><div><div><h3 class="title">
 <a name="Requirements" id="Requirements"></a>Requirements</h3></div></div></div><div class="sect3">
 <div class="titlepage"><div><div><h4 class="title">
-<a name="idp105548832540616" id="idp105548832540616"></a>New API</h4></div></div></div><div class="segmentedlist"><table border="1" cellpadding="3" cellspacing="0" width="90%">
+<a name="id1392" id="id1392"></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>
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.45.2.7 -r1.45.2.8
--- openacs-4/packages/acs-core-docs/www/ext-auth-requirements.html	13 Jul 2023 12:43:19 -0000	1.45.2.7
+++ openacs-4/packages/acs-core-docs/www/ext-auth-requirements.html	1 Aug 2024 08:03:39 -0000	1.45.2.8
@@ -1,5 +1,5 @@
 <!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=UTF-8"><title>External Authentication Requirements</title><link rel="stylesheet" type="text/css" href="openacs.css"><meta name="generator" content="DocBook XSL Stylesheets Vsnapshot"><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"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><a href="http://openacs.org"><img src="/doc/images/alex.jpg" style="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"><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"><div class="titlepage"><div><div><h3 class="title"><a name="idp105548832526408"></a>Vision</h3></div></div></div><p>People have plenty of usernames and passwords already, we
+<html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><title>External Authentication Requirements</title><link rel="stylesheet" type="text/css" href="openacs.css"><meta name="generator" content="DocBook XSL Stylesheets Vsnapshot"><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"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><a href="http://openacs.org"><img src="/doc/images/alex.jpg" style="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"><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"><div class="titlepage"><div><div><h3 class="title"><a name="id1391"></a>Vision</h3></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
@@ -45,7 +45,7 @@
         only one implementation of the authentication API, namly the one
         included in OpenACS Core.</p></li><li class="listitem"><p>Authentication Driver API: The service contract which
         authentication drivers implement.</p></li></ul></div></div><div class="sect2"><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"><div class="titlepage"><div><div><h3 class="title"><a name="Requirements"></a>Requirements</h3></div></div></div><div class="sect3"><div class="titlepage"><div><div><h4 class="title"><a name="idp105548832540616"></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"><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, an authority, and a
+</p><p>Account Management (NO PICTURE YET)</p><p>Batch Synchronization (NO PICTURE YET)</p></div><div class="sect2"><div class="titlepage"><div><div><h3 class="title"><a name="Requirements"></a>Requirements</h3></div></div></div><div class="sect3"><div class="titlepage"><div><div><h4 class="title"><a name="id1392"></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"><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, an 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
Index: openacs-4/packages/acs-core-docs/www/form-builder.adp
===================================================================
RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/form-builder.adp,v
diff -u -r1.4.2.9 -r1.4.2.10
--- openacs-4/packages/acs-core-docs/www/form-builder.adp	13 Jul 2023 12:43:20 -0000	1.4.2.9
+++ openacs-4/packages/acs-core-docs/www/form-builder.adp	1 Aug 2024 08:03:39 -0000	1.4.2.10
@@ -25,7 +25,8 @@
 <a name="multi-part-elements" id="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">
 <div class="titlepage"><div><div><h4 class="title">
-<a name="idp105548968291528" id="idp105548968291528"></a>SELECT elements</h4></div></div></div><div class="orderedlist"><ol class="orderedlist" type="1"><li class="listitem">
+<a name="id1381" id="id1381"></a>SELECT
+elements</h4></div></div></div><div class="orderedlist"><ol class="orderedlist" type="1"><li class="listitem">
 <p>
 <strong>Creating the form element. </strong>Populate
 a list of lists with values for the option list.</p><pre class="programlisting">
@@ -106,7 +107,8 @@
 Errors</h3></div></div></div><p>Here are some common errors and what to do when you encounter
 them:</p><div class="sect3">
 <div class="titlepage"><div><div><h4 class="title">
-<a name="idp105548968275784" id="idp105548968275784"></a>Error when selecting values</h4></div></div></div><p>This generally happens when there is an error in your query.</p>
+<a name="id1382" id="id1382"></a>Error when
+selecting values</h4></div></div></div><p>This generally happens when there is an error in your query.</p>
 </div>
 </div>
 </div>
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.33.2.7 -r1.33.2.8
--- openacs-4/packages/acs-core-docs/www/form-builder.html	13 Jul 2023 12:43:20 -0000	1.33.2.7
+++ openacs-4/packages/acs-core-docs/www/form-builder.html	1 Aug 2024 08:03:39 -0000	1.33.2.8
@@ -6,7 +6,7 @@
 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 class="ulink" href="http://openacs.org/api-doc/proc-view?proc=ad_form" target="_top">api
- documentation</a> is helpful.</p></div><div class="sect2"><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"><div class="titlepage"><div><div><h4 class="title"><a name="idp105548968291528"></a>SELECT elements</h4></div></div></div><div class="orderedlist"><ol class="orderedlist" type="1"><li class="listitem"><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"><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"><div class="titlepage"><div><div><h4 class="title"><a name="id1381"></a>SELECT elements</h4></div></div></div><div class="orderedlist"><ol class="orderedlist" type="1"><li class="listitem"><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 "
     select foo,
            foo_id
       from foos
@@ -51,5 +51,5 @@
     ns_set print $mypage
 }
     </pre></div><div class="sect2"><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 class="ulink" href="http://openacs.org/forums/message-view?message_id=106331" target="_top">Current widget</a></p></div><div class="sect2"><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"><div class="titlepage"><div><div><h4 class="title"><a name="idp105548968275784"></a>Error when selecting values</h4></div></div></div><p>This generally happens when there is an error in your
+    encounter them:</p><div class="sect3"><div class="titlepage"><div><div><h4 class="title"><a name="id1382"></a>Error when selecting values</h4></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></body></html>
Index: openacs-4/packages/acs-core-docs/www/high-avail.adp
===================================================================
RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/high-avail.adp,v
diff -u -r1.4.2.9 -r1.4.2.10
--- openacs-4/packages/acs-core-docs/www/high-avail.adp	13 Jul 2023 12:43:20 -0000	1.4.2.9
+++ openacs-4/packages/acs-core-docs/www/high-avail.adp	1 Aug 2024 08:03:39 -0000	1.4.2.10
@@ -13,7 +13,7 @@
 Configurations</h2></div></div></div><p>See also <a class="xref" href="remote-postgres" title="Running a PostgreSQL database on another server">the section
 called &ldquo;Running a PostgreSQL database on another
 server&rdquo;</a>.</p><div class="figure">
-<a name="idp105548899005640" id="idp105548899005640"></a><p class="title"><strong>Figure 6.1. Multiple-server
+<a name="id1398" id="id1398"></a><p class="title"><strong>Figure 6.1. Multiple-server
 configuration</strong></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>
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.27.2.7 -r1.27.2.8
--- openacs-4/packages/acs-core-docs/www/high-avail.html	13 Jul 2023 12:43:20 -0000	1.27.2.7
+++ openacs-4/packages/acs-core-docs/www/high-avail.html	1 Aug 2024 08:03:39 -0000	1.27.2.8
@@ -1,2 +1,2 @@
 <!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=UTF-8"><title>High Availability/High Performance Configurations</title><link rel="stylesheet" type="text/css" href="openacs.css"><meta name="generator" content="DocBook XSL Stylesheets Vsnapshot"><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"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><a href="http://openacs.org"><img src="/doc/images/alex.jpg" style="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"><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 class="xref" href="remote-postgres.html" title="Running a PostgreSQL database on another server">the section called “Running a PostgreSQL database on another server”</a>.</p><div class="figure"><a name="idp105548899005640"></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></body></html>
+<html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><title>High Availability/High Performance Configurations</title><link rel="stylesheet" type="text/css" href="openacs.css"><meta name="generator" content="DocBook XSL Stylesheets Vsnapshot"><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"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><a href="http://openacs.org"><img src="/doc/images/alex.jpg" style="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"><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 class="xref" href="remote-postgres.html" title="Running a PostgreSQL database on another server">the section called “Running a PostgreSQL database on another server”</a>.</p><div class="figure"><a name="id1398"></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></body></html>
Index: openacs-4/packages/acs-core-docs/www/how-do-I.adp
===================================================================
RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/how-do-I.adp,v
diff -u -r1.5.2.9 -r1.5.2.10
--- openacs-4/packages/acs-core-docs/www/how-do-I.adp	13 Jul 2023 12:43:20 -0000	1.5.2.9
+++ openacs-4/packages/acs-core-docs/www/how-do-I.adp	1 Aug 2024 08:03:39 -0000	1.5.2.10
@@ -12,21 +12,22 @@
 <div class="titlepage"><div><div><h2 class="title" style="clear: both">
 <a name="how-do-I" id="how-do-I"></a>How Do I?</h2></div></div></div><div class="sect2">
 <div class="titlepage"><div><div><h3 class="title">
-<a name="idp105548901419720" id="idp105548901419720"></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 class="orderedlist" type="1">
+<a name="id1347" id="id1347"></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 class="orderedlist" type="1">
 <li class="listitem"><p>Log in to the web site as an administrator.</p></li><li class="listitem"><p>Click on Admin &gt; Install Software &gt; Install from OpenACS
 Repository / Install new application</p></li><li class="listitem"><p>Choose Edit This Page and install</p></li><li class="listitem"><p>Follow the instructions within <a class="ulink" 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">
 <div class="titlepage"><div><div><h3 class="title">
-<a name="idp105548901425096" id="idp105548901425096"></a>How do I let anybody who registers post to
-a weblog?</h3></div></div></div><p>Go to <code class="computeroutput"><a class="ulink" href="/admin/permissions" target="_top">/admin/permissions</a></code>
+<a name="id1348" id="id1348"></a>How do I let
+anybody who registers post to a weblog?</h3></div></div></div><p>Go to <code class="computeroutput"><a class="ulink" href="/admin/permissions" target="_top">/admin/permissions</a></code>
 and grant Create to Registered Users</p>
 </div><div class="sect2">
 <div class="titlepage"><div><div><h3 class="title">
-<a name="idp105548901427016" id="idp105548901427016"></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
+<a name="id1349" id="id1349"></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 class="orderedlist" type="1">
 <li class="listitem"><p>On the front page, click the <code class="computeroutput"><a class="ulink" href="/admin" target="_top">Admin</a></code> button.</p></li><li class="listitem"><p>On the administration page, click <code class="computeroutput">Parameters</code> link.</p></li><li class="listitem"><p>Change the parameter <code class="computeroutput">IndexRedirectUrl</code> to be the URI of the
 desired application. For a default weblogger installation, this
@@ -35,8 +36,8 @@
 </ol></div>
 </div><div class="sect2">
 <div class="titlepage"><div><div><h3 class="title">
-<a name="idp105548901433672" id="idp105548901433672"></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 class="ulink" href="/doc/acs-subsite" target="_top">More information)</a>. The home
+<a name="id1350" id="id1350"></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 class="ulink" 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
@@ -50,7 +51,8 @@
 </ol></div>
 </div><div class="sect2">
 <div class="titlepage"><div><div><h3 class="title">
-<a name="idp105548901441992" id="idp105548901441992"></a>How do I change the site-wide style?</h3></div></div></div><p>Almost all pages on an OpenACS site use <a class="ulink" href="/doc/acs-templating" target="_top">ACS Templating</a>, and so
+<a name="id1351" id="id1351"></a>How do I change
+the site-wide style?</h3></div></div></div><p>Almost all pages on an OpenACS site use <a class="ulink" href="/doc/acs-templating" target="_top">ACS Templating</a>, and so
 their appearance is driven by a layer of different files. Let&#39;s
 examine how this works:</p><div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc;">
 <li class="listitem">
@@ -74,13 +76,13 @@
 navigation "meta" elements such as Translator widgets and
 Admin widgets.</p></li>
 </ul></div><div class="figure">
-<a name="idp105548901454408" id="idp105548901454408"></a><p class="title"><strong>Figure 4.1. Site
+<a name="id1393" id="id1393"></a><p class="title"><strong>Figure 4.1. Site
 Templates</strong></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">
 <div class="titlepage"><div><div><h3 class="title">
-<a name="idp105548901456712" id="idp105548901456712"></a>How do I diagnose a permissions
-problem?</h3></div></div></div><div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc;">
+<a name="id1352" id="id1352"></a>How do I
+diagnose a permissions problem?</h3></div></div></div><div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc;">
 <li class="listitem">
 <p>
 <strong>Steps to Reproduce. </strong>The events
@@ -124,12 +126,12 @@
 <li class="listitem"><p>To grant permissions on a package, start at the <a class="ulink" href="/admin/site-map" target="_top">site map</a>. Find the event
 package and click "Set permissions".</p></li><li class="listitem"><p>Click "Grant Permission"</p></li><li class="listitem">
 <p>Grant the write permission to Registered Users.</p><div class="figure">
-<a name="idp105548901473992" id="idp105548901473992"></a><p class="title"><strong>Figure 4.2. Granting
+<a name="id1394" id="id1394"></a><p class="title"><strong>Figure 4.2. Granting
 Permissions</strong></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 class="ulink" href="/admin/applications" target="_top">/admin/applications</a>.</p><div class="figure">
-<a name="idp105548901477320" id="idp105548901477320"></a><p class="title"><strong>Figure 4.3. Granting Permissions in
+<a name="id1395" id="id1395"></a><p class="title"><strong>Figure 4.3. Granting Permissions in
 5.0</strong></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>
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.31.2.7 -r1.31.2.8
--- openacs-4/packages/acs-core-docs/www/how-do-I.html	13 Jul 2023 12:43:20 -0000	1.31.2.7
+++ openacs-4/packages/acs-core-docs/www/how-do-I.html	1 Aug 2024 08:03:39 -0000	1.31.2.8
@@ -1,7 +1,7 @@
 <!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=UTF-8"><title>How Do I?</title><link rel="stylesheet" type="text/css" href="openacs.css"><meta name="generator" content="DocBook XSL Stylesheets Vsnapshot"><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"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><a href="http://openacs.org"><img src="/doc/images/alex.jpg" style="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"><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"><div class="titlepage"><div><div><h3 class="title"><a name="idp105548901419720"></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 class="orderedlist" type="1"><li class="listitem"><p>Log in to the web site as an administrator.</p></li><li class="listitem"><p>Click on Admin &gt; Install Software &gt; Install from OpenACS Repository / Install new application</p></li><li class="listitem"><p>Choose Edit This Page and install</p></li><li class="listitem"><p>Follow the instructions within <a class="ulink" 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"><div class="titlepage"><div><div><h3 class="title"><a name="idp105548901425096"></a>How do I let anybody who registers post to a weblog?</h3></div></div></div><p>Go to <code class="computeroutput"><a class="ulink" href="/admin/permissions" target="_top">/admin/permissions</a></code> and grant Create to Registered Users</p></div><div class="sect2"><div class="titlepage"><div><div><h3 class="title"><a name="idp105548901427016"></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 class="orderedlist" type="1"><li class="listitem"><p>On the front page, click the <code class="computeroutput"><a class="ulink" href="/admin" target="_top">Admin</a></code> button.</p></li><li class="listitem"><p>On the administration page, click <code class="computeroutput">Parameters</code> link.</p></li><li class="listitem"><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"><div class="titlepage"><div><div><h3 class="title"><a name="idp105548901433672"></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 class="ulink" 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 class="orderedlist" type="1"><li class="listitem"><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 class="listitem"><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"><div class="titlepage"><div><div><h3 class="title"><a name="idp105548901441992"></a>How do I change the site-wide style?</h3></div></div></div><p>Almost all pages on an OpenACS site use <a class="ulink" 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 class="itemizedlist" style="list-style-type: disc; "><li class="listitem"><p>
+<html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><title>How Do I?</title><link rel="stylesheet" type="text/css" href="openacs.css"><meta name="generator" content="DocBook XSL Stylesheets Vsnapshot"><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"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><a href="http://openacs.org"><img src="/doc/images/alex.jpg" style="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"><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"><div class="titlepage"><div><div><h3 class="title"><a name="id1347"></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 class="orderedlist" type="1"><li class="listitem"><p>Log in to the web site as an administrator.</p></li><li class="listitem"><p>Click on Admin &gt; Install Software &gt; Install from OpenACS Repository / Install new application</p></li><li class="listitem"><p>Choose Edit This Page and install</p></li><li class="listitem"><p>Follow the instructions within <a class="ulink" 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"><div class="titlepage"><div><div><h3 class="title"><a name="id1348"></a>How do I let anybody who registers post to a weblog?</h3></div></div></div><p>Go to <code class="computeroutput"><a class="ulink" href="/admin/permissions" target="_top">/admin/permissions</a></code> and grant Create to Registered Users</p></div><div class="sect2"><div class="titlepage"><div><div><h3 class="title"><a name="id1349"></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 class="orderedlist" type="1"><li class="listitem"><p>On the front page, click the <code class="computeroutput"><a class="ulink" href="/admin" target="_top">Admin</a></code> button.</p></li><li class="listitem"><p>On the administration page, click <code class="computeroutput">Parameters</code> link.</p></li><li class="listitem"><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"><div class="titlepage"><div><div><h3 class="title"><a name="id1350"></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 class="ulink" 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 class="orderedlist" type="1"><li class="listitem"><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 class="listitem"><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"><div class="titlepage"><div><div><h3 class="title"><a name="id1351"></a>How do I change the site-wide style?</h3></div></div></div><p>Almost all pages on an OpenACS site use <a class="ulink" 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 class="itemizedlist" style="list-style-type: disc; "><li class="listitem"><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 processor 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 class="listitem"><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 class="listitem"><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 class="listitem"><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="idp105548901454408"></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"><div class="titlepage"><div><div><h3 class="title"><a name="idp105548901456712"></a>How do I diagnose a permissions problem?</h3></div></div></div><div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem"><p><b>Steps to Reproduce. </b>The events package does not allow users to register for new events.</p><div class="orderedlist"><ol class="orderedlist" type="1"><li class="listitem"><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 class="listitem"><p>Select an available event</p></li><li class="listitem"><p>A link such as <code class="computeroutput">Registration: Deadline is 03/15/2004 10:00am. 
+          </p></li><li class="listitem"><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 class="listitem"><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 class="listitem"><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="id1393"></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"><div class="titlepage"><div><div><h3 class="title"><a name="id1352"></a>How do I diagnose a permissions problem?</h3></div></div></div><div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem"><p><b>Steps to Reproduce. </b>The events package does not allow users to register for new events.</p><div class="orderedlist"><ol class="orderedlist" type="1"><li class="listitem"><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 class="listitem"><p>Select an available event</p></li><li class="listitem"><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 class="listitem"><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 class="listitem"><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 class="ulink" 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 privilege on the event in order to register.  Let's assume that the privileges inherit, so that if a user has the write privilege on the whole package, they will have the write privilege on the event.</p></li><li class="listitem"><p><b>Setting Permissions. </b>A permission has three parts: the privilege, the object of the privilege, and the subject being granted the privilege.  In this case the privilege is "write," the object is the Events package, and the subject is all Registered Users.</p><div class="orderedlist"><ol class="orderedlist" type="1"><li class="listitem"><p>To grant permissions on a package, start at the <a class="ulink" href="/admin/site-map" target="_top">site map</a>.  Find the event package and click "Set permissions".  </p></li><li class="listitem"><p>Click "Grant Permission"</p></li><li class="listitem"><p>Grant the write permission to Registered Users.</p><div class="figure"><a name="idp105548901473992"></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 class="ulink" href="/admin/applications" target="_top">/admin/applications</a>.</p><div class="figure"><a name="idp105548901477320"></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></body></html>
+          </p></li><li class="listitem"><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 class="listitem"><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 class="ulink" 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 privilege on the event in order to register.  Let's assume that the privileges inherit, so that if a user has the write privilege on the whole package, they will have the write privilege on the event.</p></li><li class="listitem"><p><b>Setting Permissions. </b>A permission has three parts: the privilege, the object of the privilege, and the subject being granted the privilege.  In this case the privilege is "write," the object is the Events package, and the subject is all Registered Users.</p><div class="orderedlist"><ol class="orderedlist" type="1"><li class="listitem"><p>To grant permissions on a package, start at the <a class="ulink" href="/admin/site-map" target="_top">site map</a>.  Find the event package and click "Set permissions".  </p></li><li class="listitem"><p>Click "Grant Permission"</p></li><li class="listitem"><p>Grant the write permission to Registered Users.</p><div class="figure"><a name="id1394"></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 class="ulink" href="/admin/applications" target="_top">/admin/applications</a>.</p><div class="figure"><a name="id1395"></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></body></html>
Index: openacs-4/packages/acs-core-docs/www/i18n-convert.adp
===================================================================
RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/i18n-convert.adp,v
diff -u -r1.4.2.9 -r1.4.2.10
--- openacs-4/packages/acs-core-docs/www/i18n-convert.adp	13 Jul 2023 12:43:20 -0000	1.4.2.9
+++ openacs-4/packages/acs-core-docs/www/i18n-convert.adp	1 Aug 2024 08:03:39 -0000	1.4.2.10
@@ -154,7 +154,8 @@
 </li>
 </ol></div><div class="sect2">
 <div class="titlepage"><div><div><h3 class="title">
-<a name="idp105548900997576" id="idp105548900997576"></a>Avoiding common i18n mistakes</h3></div></div></div><div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc;">
+<a name="id1390" id="id1390"></a>Avoiding common
+i18n mistakes</h3></div></div></div><div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc;">
 <li class="listitem">
 <p>
 <strong>Replace complicated keys with longer, simpler
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.29.2.7 -r1.29.2.8
--- openacs-4/packages/acs-core-docs/www/i18n-convert.html	13 Jul 2023 12:43:20 -0000	1.29.2.7
+++ openacs-4/packages/acs-core-docs/www/i18n-convert.html	1 Aug 2024 08:03:39 -0000	1.29.2.8
@@ -72,7 +72,7 @@
         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"><div class="titlepage"><div><div><h3 class="title"><a name="idp105548900997576"></a>Avoiding common i18n mistakes</h3></div></div></div><div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem"><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,
+      </p></li></ol></div><div class="sect2"><div class="titlepage"><div><div><h3 class="title"><a name="id1390"></a>Avoiding common i18n mistakes</h3></div></div></div><div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem"><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, 
 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
Index: openacs-4/packages/acs-core-docs/www/i18n-introduction.adp
===================================================================
RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/i18n-introduction.adp,v
diff -u -r1.4.2.6 -r1.4.2.7
--- openacs-4/packages/acs-core-docs/www/i18n-introduction.adp	13 Jul 2023 12:43:20 -0000	1.4.2.6
+++ openacs-4/packages/acs-core-docs/www/i18n-introduction.adp	1 Aug 2024 08:03:39 -0000	1.4.2.7
@@ -48,7 +48,7 @@
 interface.</p>
 </div><div class="sect2">
 <div class="titlepage"><div><div><h3 class="title">
-<a name="i18n-locale-templates" id="i18n-locale-templates"></a>Separate Templates for each Locale</h3></div></div></div><p>If the request processor finds a filenamed <code class="computeroutput">filename.locale.adp</code>, where locale matches
+<a name="i18n-locale-templates" id="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&#39;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
@@ -158,7 +158,7 @@
 %var_name%. Remember to initialize a Tcl variable with the same
 name on some line above the text.</p></li><li class="listitem"><p>If the text is in a Tcl file you must replace variable lookups
 (occurrences of $var_name or ${var_name}) with %var_name%</p></li><li class="listitem"><p>You are now ready to follow the normal procedure and mark up the
-text using a tempoarary message tag (&lt;#_
+text using a temporary 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
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.20.2.3 -r1.20.2.4
--- openacs-4/packages/acs-core-docs/www/i18n-introduction.html	13 Jul 2023 12:43:20 -0000	1.20.2.3
+++ openacs-4/packages/acs-core-docs/www/i18n-introduction.html	1 Aug 2024 08:03:39 -0000	1.20.2.4
@@ -33,7 +33,7 @@
       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"><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"><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 filenamed <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"><div class="titlepage"><div><div><h3 class="title"><a name="i18n-message-catalog"></a>Message Catalogs</h3></div></div></div><div class="sect3"><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"><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"><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"><div class="titlepage"><div><div><h3 class="title"><a name="i18n-message-catalog"></a>Message Catalogs</h3></div></div></div><div class="sect3"><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>
         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
@@ -129,7 +129,7 @@
             the procedure call with a variable lookup on the syntax %var_name%. Remember
             to initialize a Tcl variable with the same name on some line above the text.</p></li><li class="listitem"><p>If the text is in a Tcl file you must replace variable lookups 
             (occurrences of $var_name or ${var_name}) with %var_name%</p></li><li class="listitem"><p>You are now ready to follow the normal procedure and mark up the text using a 
-            tempoarary message tag (&lt;#_ text_with_percentage_vars#&gt;) and run the action 
+            temporary 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">
Index: openacs-4/packages/acs-core-docs/www/index.adp
===================================================================
RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/index.adp,v
diff -u -r1.29.2.9 -r1.29.2.10
--- openacs-4/packages/acs-core-docs/www/index.adp	13 Jul 2023 12:43:20 -0000	1.29.2.9
+++ openacs-4/packages/acs-core-docs/www/index.adp	1 Aug 2024 08:03:39 -0000	1.29.2.10
@@ -9,7 +9,8 @@
 		    <div class="book">
 <div class="titlepage">
 <div><div><h1 class="title">
-<a name="idp105548832314952" id="idp105548832314952"></a>OpenACS Core Documentation</h1></div></div><hr>
+<a name="id1337" id="id1337"></a>OpenACS Core
+Documentation</h1></div></div><hr>
 </div><div class="toc">
 <p><strong>Table of Contents</strong></p><dl class="toc">
 <dt><span class="part"><a href="for-everyone">I. OpenACS For
@@ -205,77 +206,74 @@
 </dl>
 </div><div class="list-of-figures">
 <p><strong>List of Figures</strong></p><dl>
-<dt>4.1. <a href="how-do-I">Site
-Templates</a>
+<dt>4.1. <a href="how-do-I">Site Templates</a>
 </dt><dt>4.2. <a href="how-do-I">Granting
 Permissions</a>
-</dt><dt>4.3. <a href="how-do-I">Granting
-Permissions in 5.0</a>
+</dt><dt>4.3. <a href="how-do-I">Granting Permissions in
+5.0</a>
 </dt><dt>5.1. <a href="upgrade-overview">Upgrading with the
 APM</a>
-</dt><dt>5.2. <a href="upgrade-openacs-files">Upgrading a local
-CVS repository</a>
+</dt><dt>5.2. <a href="upgrade-openacs-files">Upgrading a
+local CVS repository</a>
 </dt><dt>6.1. <a href="high-avail">Multiple-server
 configuration</a>
-</dt><dt>6.2. <a href="maintenance-deploy">Simple A/B Deployment
-- Step 1</a>
-</dt><dt>6.3. <a href="maintenance-deploy">Simple A/B Deployment
-- Step 2</a>
-</dt><dt>6.4. <a href="maintenance-deploy">Simple A/B Deployment
-- Step 3</a>
-</dt><dt>6.5. <a href="maintenance-deploy">Complex A/B Deployment
-- Step 1</a>
-</dt><dt>6.6. <a href="maintenance-deploy">Complex A/B Deployment
-- Step 2</a>
-</dt><dt>6.7. <a href="maintenance-deploy">Complex A/B Deployment
-- Step 3</a>
-</dt><dt>6.8. <a href="maint-performance">Query
-Analysis example</a>
-</dt><dt>8.1. <a href="backup-recovery">Backup
-and Recovery Strategy</a>
-</dt><dt>9.1. <a href="tutorial-newpackage">Assumptions in this
-section</a>
+</dt><dt>6.2. <a href="maintenance-deploy">Simple A/B
+Deployment - Step 1</a>
+</dt><dt>6.3. <a href="maintenance-deploy">Simple A/B
+Deployment - Step 2</a>
+</dt><dt>6.4. <a href="maintenance-deploy">Simple A/B
+Deployment - Step 3</a>
+</dt><dt>6.5. <a href="maintenance-deploy">Complex A/B
+Deployment - Step 1</a>
+</dt><dt>6.6. <a href="maintenance-deploy">Complex A/B
+Deployment - Step 2</a>
+</dt><dt>6.7. <a href="maintenance-deploy">Complex A/B
+Deployment - Step 3</a>
+</dt><dt>6.8. <a href="maint-performance">Query Analysis
+example</a>
+</dt><dt>8.1. <a href="backup-recovery">Backup and Recovery
+Strategy</a>
+</dt><dt>9.1. <a href="tutorial-newpackage">Assumptions in
+this section</a>
 </dt><dt>9.2. <a href="tutorial-database">Tutorial Data
 Model</a>
-</dt><dt>9.3. <a href="tutorial-database">The
-Database Creation Script</a>
+</dt><dt>9.3. <a href="tutorial-database">The Database
+Creation Script</a>
 </dt><dt>9.4. <a href="tutorial-database">Database Deletion
 Script</a>
-</dt><dt>9.5. <a href="tutorial-pages">Page
-Map</a>
-</dt><dt>10.1. <a href="tutorial-cvs">Upgrading
-a local CVS repository</a>
-</dt><dt>11.1. <a href="packages">Server file
-layout diagram</a>
-</dt><dt>11.2. <a href="packages">Package file
-layout diagram</a>
+</dt><dt>9.5. <a href="tutorial-pages">Page Map</a>
+</dt><dt>10.1. <a href="tutorial-cvs">Upgrading a local CVS
+repository</a>
+</dt><dt>11.1. <a href="packages">Server file layout
+diagram</a>
+</dt><dt>11.2. <a href="packages">Package file layout
+diagram</a>
 </dt>
 </dl>
 </div><div class="list-of-tables">
 <p><strong>List of Tables</strong></p><dl>
-<dt>2.1. <a href="install-steps">Default
-directories for a standard install</a>
+<dt>2.1. <a href="install-steps">Default directories
+for a standard install</a>
 </dt><dt>2.2. <a href="individual-programs">Version
 Compatibility Matrix</a>
 </dt><dt>5.1. <a href="upgrade-overview">Assumptions in this
 section</a>
 </dt><dt>6.1. <a href="install-openacs-keepalive">How it
 Works</a>
-</dt><dt>10.1. <a href="tutorial-etp-templates">table showing ETP
-layout</a>
-</dt><dt>11.1. <a href="packages">Package
-files</a>
-</dt><dt>11.2. <a href="permissions-tediously-explained">Context
-Hierarchy Example</a>
-</dt><dt>11.3. <a href="permissions-tediously-explained">acs_objects
-example data</a>
+</dt><dt>10.1. <a href="tutorial-etp-templates">table
+showing ETP layout</a>
+</dt><dt>11.1. <a href="packages">Package files</a>
+</dt><dt>11.2. <a href="permissions-tediously-explained">Context Hierarchy
+Example</a>
+</dt><dt>11.3. <a href="permissions-tediously-explained">acs_objects example
+data</a>
 </dt><dt>14.1. <a href="i18n-overview">Internationalization and
 Localization Overview</a>
 </dt>
 </dl>
 </div><div class="list-of-examples">
-<p><strong>List of Examples</strong></p><dl><dt>12.1. <a href="variables">Getting
-datetime from the database ANSI-style</a>
+<p><strong>List of Examples</strong></p><dl><dt>12.1. <a href="variables">Getting datetime from the
+database ANSI-style</a>
 </dt></dl>
 </div>
 </div>
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.56.2.7 -r1.56.2.8
--- openacs-4/packages/acs-core-docs/www/index.html	13 Jul 2023 12:43:20 -0000	1.56.2.7
+++ openacs-4/packages/acs-core-docs/www/index.html	1 Aug 2024 08:03:40 -0000	1.56.2.8
@@ -1,4 +1,4 @@
 <!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=UTF-8"><title>OpenACS Core Documentation</title><link rel="stylesheet" type="text/css" href="openacs.css"><meta name="generator" content="DocBook XSL Stylesheets Vsnapshot"><link rel="home" href="index.html" title="OpenACS Core Documentation"><link rel="next" href="for-everyone.html" title="Part I. OpenACS For Everyone"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><a href="http://openacs.org"><img src="/doc/images/alex.jpg" style="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"><div class="titlepage"><div><div><h1 class="title"><a name="idp105548832314952"></a>OpenACS Core Documentation</h1></div></div><hr></div><div class="toc"><p><b>Table of Contents</b></p><dl class="toc"><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.9.0</a></span></dt><dt><span class="sect1"><a href="win2k-installation.html">OpenACS Installation Guide for Windows</a></span></dt><dt><span class="sect1"><a href="mac-installation.html">OpenACS Installation Guide for macOS</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-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">
+<html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><title>OpenACS Core Documentation</title><link rel="stylesheet" type="text/css" href="openacs.css"><meta name="generator" content="DocBook XSL Stylesheets Vsnapshot"><link rel="home" href="index.html" title="OpenACS Core Documentation"><link rel="next" href="for-everyone.html" title="Part I. OpenACS For Everyone"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><a href="http://openacs.org"><img src="/doc/images/alex.jpg" style="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"><div class="titlepage"><div><div><h1 class="title"><a name="id1337"></a>OpenACS Core Documentation</h1></div></div><hr></div><div class="toc"><p><b>Table of Contents</b></p><dl class="toc"><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.9.0</a></span></dt><dt><span class="sect1"><a href="win2k-installation.html">OpenACS Installation Guide for Windows</a></span></dt><dt><span class="sect1"><a href="mac-installation.html">OpenACS Installation Guide for macOS</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-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">
     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#idp105548901454408">Site Templates</a></dt><dt>4.2. <a href="how-do-I.html#idp105548901473992">Granting Permissions</a></dt><dt>4.3. <a href="how-do-I.html#idp105548901477320">Granting Permissions in 5.0</a></dt><dt>5.1. <a href="upgrade-overview.html#idp105548898306120">Upgrading with the APM</a></dt><dt>5.2. <a href="upgrade-openacs-files.html#idp105548898671048">Upgrading a local CVS repository</a></dt><dt>6.1. <a href="high-avail.html#idp105548899005640">Multiple-server configuration</a></dt><dt>6.2. <a href="maintenance-deploy.html#idp105548898989256">Simple A/B Deployment - Step 1</a></dt><dt>6.3. <a href="maintenance-deploy.html#idp105548898958792">Simple A/B Deployment - Step 2</a></dt><dt>6.4. <a href="maintenance-deploy.html#idp105548898961096">Simple A/B Deployment - Step 3</a></dt><dt>6.5. <a href="maintenance-deploy.html#idp105548898964168">Complex A/B Deployment - Step 1</a></dt><dt>6.6. <a href="maintenance-deploy.html#idp105548898966472">Complex A/B Deployment - Step 2</a></dt><dt>6.7. <a href="maintenance-deploy.html#idp105548898968776">Complex A/B Deployment - Step 3</a></dt><dt>6.8. <a href="maint-performance.html#idp105548898895560">Query Analysis example</a></dt><dt>8.1. <a href="backup-recovery.html#idp105548901229640">Backup and Recovery Strategy</a></dt><dt>9.1. <a href="tutorial-newpackage.html#idp105548968676808">Assumptions in this section</a></dt><dt>9.2. <a href="tutorial-database.html#idp105548968758856">Tutorial Data Model</a></dt><dt>9.3. <a href="tutorial-database.html#idp105548968763976">The Database Creation Script</a></dt><dt>9.4. <a href="tutorial-database.html#idp105548968767432">Database Deletion Script</a></dt><dt>9.5. <a href="tutorial-pages.html#idp105548968633288">Page Map</a></dt><dt>10.1. <a href="tutorial-cvs.html#idp105548968828360">Upgrading a local CVS repository</a></dt><dt>11.1. <a href="packages.html#idp105548969018568">Server file layout diagram</a></dt><dt>11.2. <a href="packages.html#idp105548969023688">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#idp105548900772040">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#idp105548898309320">Assumptions in this section</a></dt><dt>6.1. <a href="install-openacs-keepalive.html#idp105548899054536">How it Works</a></dt><dt>10.1. <a href="tutorial-etp-templates.html#idp105548968790088">table showing ETP layout</a></dt><dt>11.1. <a href="packages.html#idp105548969028424">Package files</a></dt><dt>11.2. <a href="permissions-tediously-explained.html#idp105548965398856">Context Hierarchy Example</a></dt><dt>11.3. <a href="permissions-tediously-explained.html#idp105548965382600">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#idp105548968362312">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></body></html>
+  </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#id1393">Site Templates</a></dt><dt>4.2. <a href="how-do-I.html#id1394">Granting Permissions</a></dt><dt>4.3. <a href="how-do-I.html#id1395">Granting Permissions in 5.0</a></dt><dt>5.1. <a href="upgrade-overview.html#id1396">Upgrading with the APM</a></dt><dt>5.2. <a href="upgrade-openacs-files.html#id1397">Upgrading a local CVS repository</a></dt><dt>6.1. <a href="high-avail.html#id1398">Multiple-server configuration</a></dt><dt>6.2. <a href="maintenance-deploy.html#id1399">Simple A/B Deployment - Step 1</a></dt><dt>6.3. <a href="maintenance-deploy.html#id1400">Simple A/B Deployment - Step 2</a></dt><dt>6.4. <a href="maintenance-deploy.html#id1401">Simple A/B Deployment - Step 3</a></dt><dt>6.5. <a href="maintenance-deploy.html#id1402">Complex A/B Deployment - Step 1</a></dt><dt>6.6. <a href="maintenance-deploy.html#id1403">Complex A/B Deployment - Step 2</a></dt><dt>6.7. <a href="maintenance-deploy.html#id1404">Complex A/B Deployment - Step 3</a></dt><dt>6.8. <a href="maint-performance.html#id1405">Query Analysis example</a></dt><dt>8.1. <a href="backup-recovery.html#id1406">Backup and Recovery Strategy</a></dt><dt>9.1. <a href="tutorial-newpackage.html#id1407">Assumptions in this section</a></dt><dt>9.2. <a href="tutorial-database.html#id1408">Tutorial Data Model</a></dt><dt>9.3. <a href="tutorial-database.html#id1409">The Database Creation Script</a></dt><dt>9.4. <a href="tutorial-database.html#id1410">Database Deletion Script</a></dt><dt>9.5. <a href="tutorial-pages.html#id1411">Page Map</a></dt><dt>10.1. <a href="tutorial-cvs.html#id1412">Upgrading a local CVS repository</a></dt><dt>11.1. <a href="packages.html#id1413">Server file layout diagram</a></dt><dt>11.2. <a href="packages.html#id1414">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#id1415">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#id1416">Assumptions in this section</a></dt><dt>6.1. <a href="install-openacs-keepalive.html#id1417">How it Works</a></dt><dt>10.1. <a href="tutorial-etp-templates.html#id1418">table showing ETP layout</a></dt><dt>11.1. <a href="packages.html#id1419">Package files</a></dt><dt>11.2. <a href="permissions-tediously-explained.html#id1420">Context Hierarchy Example</a></dt><dt>11.3. <a href="permissions-tediously-explained.html#id1421">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#id1422">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></body></html>
Index: openacs-4/packages/acs-core-docs/www/install-cvs.adp
===================================================================
RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/install-cvs.adp,v
diff -u -r1.4.2.9 -r1.4.2.10
--- openacs-4/packages/acs-core-docs/www/install-cvs.adp	13 Jul 2023 12:43:20 -0000	1.4.2.9
+++ openacs-4/packages/acs-core-docs/www/install-cvs.adp	1 Aug 2024 08:03:40 -0000	1.4.2.10
@@ -10,7 +10,7 @@
 			rightLink="psgml-for-emacs" rightLabel="Next">
 		    <div class="sect1">
 <div class="titlepage"><div><div><h2 class="title" style="clear: both">
-<a name="install-cvs" id="install-cvs"></a>Initialize CVS (OPTIONAL)</h2></div></div></div><a class="indexterm" name="idp105548967266248" id="idp105548967266248"></a><p>CVS is a source control system. Create and initialize a
+<a name="install-cvs" id="install-cvs"></a>Initialize CVS (OPTIONAL)</h2></div></div></div><a class="indexterm" name="id7115" id="id7115"></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>
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.43.2.7 -r1.43.2.8
--- openacs-4/packages/acs-core-docs/www/install-cvs.html	13 Jul 2023 12:43:20 -0000	1.43.2.7
+++ openacs-4/packages/acs-core-docs/www/install-cvs.html	1 Aug 2024 08:03:40 -0000	1.43.2.8
@@ -1,5 +1,5 @@
 <!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=UTF-8"><title>Initialize CVS (OPTIONAL)</title><link rel="stylesheet" type="text/css" href="openacs.css"><meta name="generator" content="DocBook XSL Stylesheets Vsnapshot"><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)"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><a href="http://openacs.org"><img src="/doc/images/alex.jpg" style="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"><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="idp105548967266248"></a><p>CVS is a source control system.  Create and initialize a
+<html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><title>Initialize CVS (OPTIONAL)</title><link rel="stylesheet" type="text/css" href="openacs.css"><meta name="generator" content="DocBook XSL Stylesheets Vsnapshot"><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)"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><a href="http://openacs.org"><img src="/doc/images/alex.jpg" style="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"><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="id7115"></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>
 [root tmp]#
Index: openacs-4/packages/acs-core-docs/www/install-daemontools.adp
===================================================================
RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/install-daemontools.adp,v
diff -u -r1.4.2.9 -r1.4.2.10
--- openacs-4/packages/acs-core-docs/www/install-daemontools.adp	13 Jul 2023 12:43:20 -0000	1.4.2.9
+++ openacs-4/packages/acs-core-docs/www/install-daemontools.adp	1 Aug 2024 08:03:40 -0000	1.4.2.10
@@ -16,7 +16,7 @@
 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 class="orderedlist" type="1">
 <li class="listitem">
-<p>Install Daemontools</p><a class="indexterm" name="idp105548967278280" id="idp105548967278280"></a><p>
+<p>Install Daemontools</p><a class="indexterm" name="id7143" id="id7143"></a><p>
 <a class="link" href="individual-programs">download
 daemontools</a> and install it.</p><div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc;">
 <li class="listitem">
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.44.2.7 -r1.44.2.8
--- openacs-4/packages/acs-core-docs/www/install-daemontools.html	13 Jul 2023 12:43:20 -0000	1.44.2.7
+++ openacs-4/packages/acs-core-docs/www/install-daemontools.html	1 Aug 2024 08:03:40 -0000	1.44.2.8
@@ -4,7 +4,7 @@
       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 class="orderedlist" type="1"><li class="listitem"><p>Install Daemontools</p><a class="indexterm" name="idp105548967278280"></a><p><a class="link" href="individual-programs.html#daemontools-download">download daemontools</a> and install it.</p><div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem"><p>Red Hat 8</p><pre class="screen">[root root]# <strong class="userinput"><code>mkdir -p /package</code></strong>
+      services.</p><div class="orderedlist"><ol class="orderedlist" type="1"><li class="listitem"><p>Install Daemontools</p><a class="indexterm" name="id7143"></a><p><a class="link" href="individual-programs.html#daemontools-download">download daemontools</a> and install it.</p><div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem"><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>
Index: openacs-4/packages/acs-core-docs/www/install-full-text-search-tsearch2.adp
===================================================================
RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/install-full-text-search-tsearch2.adp,v
diff -u -r1.5.2.9 -r1.5.2.10
--- openacs-4/packages/acs-core-docs/www/install-full-text-search-tsearch2.adp	13 Jul 2023 12:43:20 -0000	1.5.2.9
+++ openacs-4/packages/acs-core-docs/www/install-full-text-search-tsearch2.adp	1 Aug 2024 08:03:40 -0000	1.5.2.10
@@ -18,7 +18,7 @@
 OpenACS docs are written by the named authors, and may be edited by
 OpenACS documentation staff.</div><div class="sect2">
 <div class="titlepage"><div><div><h3 class="title">
-<a name="install-tsearch2" id="install-tsearch2"></a>Install Tsearch2 module</h3></div></div></div><a class="indexterm" name="idp105548967354568" id="idp105548967354568"></a><p>In earlier versions of PostgreSQL (7.4), tsearch2 was a contrib
+<a name="install-tsearch2" id="install-tsearch2"></a>Install Tsearch2 module</h3></div></div></div><a class="indexterm" name="id7309" id="id7309"></a><p>In earlier versions of PostgreSQL (7.4), tsearch2 was a contrib
 module. With PostgreSQL 9.*, it was included in the standard
 PostgreSQL package with minor naming changes (e.g. the function
 "rank" became "ts_rank"). PostgreSQL 9 included
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.15.2.7 -r1.15.2.8
--- openacs-4/packages/acs-core-docs/www/install-full-text-search-tsearch2.html	13 Jul 2023 12:43:20 -0000	1.15.2.7
+++ openacs-4/packages/acs-core-docs/www/install-full-text-search-tsearch2.html	1 Aug 2024 08:03:40 -0000	1.15.2.8
@@ -6,7 +6,7 @@
       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"><div class="titlepage"><div><div><h3 class="title"><a name="install-tsearch2"></a>Install Tsearch2 module</h3></div></div></div><a class="indexterm" name="idp105548967354568"></a><p>In earlier versions of PostgreSQL (7.4), tsearch2 was a contrib
+        </div><div class="sect2"><div class="titlepage"><div><div><h3 class="title"><a name="install-tsearch2"></a>Install Tsearch2 module</h3></div></div></div><a class="indexterm" name="id7309"></a><p>In earlier versions of PostgreSQL (7.4), tsearch2 was a contrib
       module. With PostgreSQL 9.*, it was included in the standard
       PostgreSQL package with minor naming changes (e.g. the function
       "rank" became "ts_rank"). PostgreSQL 9 included a backward
Index: openacs-4/packages/acs-core-docs/www/install-next-backups.adp
===================================================================
RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/install-next-backups.adp,v
diff -u -r1.4.2.6 -r1.4.2.7
--- openacs-4/packages/acs-core-docs/www/install-next-backups.adp	18 Oct 2023 11:28:23 -0000	1.4.2.6
+++ openacs-4/packages/acs-core-docs/www/install-next-backups.adp	1 Aug 2024 08:03:40 -0000	1.4.2.7
@@ -34,5 +34,6 @@
 			leftLink="backup-recovery" leftLabel="Prev" leftTitle="
 Chapter 8. Backup and Recovery"
 			rightLink="snapshot-backup" rightLabel="Next" rightTitle="Manual backup and recovery"
-			homeLink="index" homeLabel="Home"
-			upLink="backup-recovery" upLabel="Up">
+			homeLink="index" homeLabel="Home" 
+			upLink="backup-recovery" upLabel="Up"> 
+		    
\ No newline at end of file
Index: openacs-4/packages/acs-core-docs/www/install-openacs-keepalive.adp
===================================================================
RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/install-openacs-keepalive.adp,v
diff -u -r1.4.2.9 -r1.4.2.10
--- openacs-4/packages/acs-core-docs/www/install-openacs-keepalive.adp	13 Jul 2023 12:43:20 -0000	1.4.2.9
+++ openacs-4/packages/acs-core-docs/www/install-openacs-keepalive.adp	1 Aug 2024 08:03:40 -0000	1.4.2.10
@@ -112,7 +112,7 @@
 commands.</p><p>More information can be found on the <a class="ulink" href="http://panoptic.com/wiki/aolserver/How_to_start_stop_AOLserver_using_Daemontools" target="_top">AOLserver Daemontools</a> page.</p>
 </li>
 </ol></div><div class="table">
-<a name="idp105548899054536" id="idp105548899054536"></a><p class="title"><strong>Table 6.1. How it
+<a name="id1417" id="id1417"></a><p class="title"><strong>Table 6.1. How it
 Works</strong></p><div class="table-contents"><table class="table" summary="How it Works" cellspacing="0" border="1">
 <colgroup>
 <col><col><col><col><col><col>
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.27.2.7 -r1.27.2.8
--- openacs-4/packages/acs-core-docs/www/install-openacs-keepalive.html	13 Jul 2023 12:43:20 -0000	1.27.2.7
+++ openacs-4/packages/acs-core-docs/www/install-openacs-keepalive.html	1 Aug 2024 08:03:40 -0000	1.27.2.8
@@ -64,6 +64,6 @@
 
         More information can be found on the <a class="ulink" href="http://panoptic.com/wiki/aolserver/How_to_start_stop_AOLserver_using_Daemontools" target="_top">AOLserver
 	Daemontools</a> page.
-</p></li></ol></div><div class="table"><a name="idp105548899054536"></a><p class="title"><b>Table 6.1. How it Works</b></p><div class="table-contents"><table class="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
+</p></li></ol></div><div class="table"><a name="id1417"></a><p class="title"><b>Table 6.1. How it Works</b></p><div class="table-contents"><table class="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></body></html>
Index: openacs-4/packages/acs-core-docs/www/install-qmail.adp
===================================================================
RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/install-qmail.adp,v
diff -u -r1.5.2.10 -r1.5.2.11
--- openacs-4/packages/acs-core-docs/www/install-qmail.adp	13 Jul 2023 12:43:20 -0000	1.5.2.10
+++ openacs-4/packages/acs-core-docs/www/install-qmail.adp	1 Aug 2024 08:03:40 -0000	1.5.2.11
@@ -20,7 +20,7 @@
 are available from <a class="ulink" href="https://en.wikipedia.org/wiki/Qmail" target="_top">QMail wiki
 page</a>
 </p></li><li class="listitem">
-<p>Replace sendmail with qmail&#39;s wrapper.</p><a class="indexterm" name="idp105548967311816" id="idp105548967311816"></a><pre class="screen">
+<p>Replace sendmail with qmail&#39;s wrapper.</p><a class="indexterm" name="id7217" id="id7217"></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>
 [root qmail-1.03]#
@@ -30,8 +30,8 @@
 files in <code class="computeroutput">/var/qmail/control</code>
 specifying the computer&#39;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 name. If
-not, you&#39;ll want to read <code class="computeroutput">/var/qmail/doc/INSTALL.ctl</code> to find out how
+qmail correctly if you have correctly set a valid hostname. If not,
+you&#39;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>
@@ -59,7 +59,7 @@
 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="idp105548967322184" id="idp105548967322184"></a><p>Configure qmail to use the Maildir delivery format (instead of
+</pre><a class="indexterm" name="id7240" id="id7240"></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>
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.45.2.7 -r1.45.2.8
--- openacs-4/packages/acs-core-docs/www/install-qmail.html	13 Jul 2023 12:43:20 -0000	1.45.2.7
+++ openacs-4/packages/acs-core-docs/www/install-qmail.html	1 Aug 2024 08:03:40 -0000	1.45.2.8
@@ -4,11 +4,11 @@
       send and receive mail, and you don't want to use an alternate
       MTA.</p><div class="orderedlist"><ol class="orderedlist" type="1"><li class="listitem"><p><b>Install qmail. </b>QMail is available as standard Debian/Ubuntu package,
       rpms for Fedora/Redhat/CenTOS are available from <a class="ulink" href="https://en.wikipedia.org/wiki/Qmail" target="_top">QMail wiki
-	     page</a></p></li><li class="listitem"><p>Replace sendmail with qmail's wrapper.</p><a class="indexterm" name="idp105548967311816"></a><pre class="screen">[root qmail-1.03]# <strong class="userinput"><code>rm -f /usr/bin/sendmail /usr/sbin/sendmail</code></strong>
+	     page</a></p></li><li class="listitem"><p>Replace sendmail with qmail's wrapper.</p><a class="indexterm" name="id7217"></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>
 [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 name.  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 <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 hostname.  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>
 Your fully qualified hostname is yourserver.test.
 Putting yourserver.test into control/me...
 Putting yourserver.test into control/defaultdomain...
@@ -26,7 +26,7 @@
 <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="idp105548967322184"></a><p>Configure qmail to use the Maildir delivery format
+chown -R alias.nofiles /var/qmail/alias/Maildir</span></span></pre><a class="indexterm" name="id7240"></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.9.0/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>
Index: openacs-4/packages/acs-core-docs/www/install-redhat.adp
===================================================================
RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/install-redhat.adp,v
diff -u -r1.5.2.11 -r1.5.2.12
--- openacs-4/packages/acs-core-docs/www/install-redhat.adp	13 Jul 2023 12:43:20 -0000	1.5.2.11
+++ openacs-4/packages/acs-core-docs/www/install-redhat.adp	1 Aug 2024 08:03:40 -0000	1.5.2.12
@@ -38,10 +38,10 @@
 <a name="install-first-step" id="install-first-step"></a>Unplug
 the network cable from your computer. We don&#39;t want to connect
 to the network until we&#39;re sure the computer is secure.
-<a class="indexterm" name="idp105548898825160" id="idp105548898825160"></a> (Wherever you see the word secure, you
-should always read it as, "secure enough for our purposes,
-given the amount of work we&#39;re willing to exert and the
-estimated risk and consequences.")</p></li><li class="listitem"><p>Insert Red Hat 8.0 or 9.0 Disk 1 into the CD-ROM and reboot the
+<a class="indexterm" name="id6765" id="id6765"></a> (Wherever you
+see the word secure, you should always read it as, "secure
+enough for our purposes, given the amount of work we&#39;re willing
+to exert and the estimated risk and consequences.")</p></li><li class="listitem"><p>Insert Red Hat 8.0 or 9.0 Disk 1 into the CD-ROM and reboot the
 computer</p></li><li class="listitem"><p>At the <code class="computeroutput"><span class="guilabel"><span class="guilabel">boot:</span></span></code>
 prompt, press Enter for a graphical install. The text install is
 fairly different, so if you need to do that instead proceed with
@@ -76,11 +76,10 @@
 screen</p></li>
 </ol></div>
 </li><li class="listitem">
-<p>Configure Networking. <a class="indexterm" name="idp105548899306056" id="idp105548899306056"></a> Again, if you
-know what you&#39;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 class="orderedlist" type="a">
+<p>Configure Networking. <a class="indexterm" name="id6833" id="id6833"></a> Again, if you know what you&#39;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 class="orderedlist" type="a">
 <li class="listitem"><p>DHCP is a system by which a computer that joins a network (such
 as on boot) can request a temporary IP address and other network
 information. Assuming the machine has a dedicated IP address (if it
@@ -105,8 +104,9 @@
 development server we&#39;ll be setting up.</p></li>
 </ol></div>
 </li><li class="listitem"><p>
-<a class="indexterm" name="idp105548899287624" id="idp105548899287624"></a>Select any additional languages you want
-the computer to support and then click <code class="computeroutput"><span class="guibutton"><span class="guibutton">
+<a class="indexterm" name="id6872" id="id6872"></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 class="listitem"><p>Choose your timezone 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 class="listitem"><p>Type in a root password, twice.</p></li><li class="listitem">
@@ -121,12 +121,11 @@
 web server, because that would conflict with the database and web
 server we&#39;ll install later.</p><table border="0" summary="Simple list" class="simplelist">
 <tr><td>check <code class="computeroutput"><span class="guilabel"><span class="guilabel">Editors</span></span></code>
-(this installs emacs<a class="indexterm" name="idp105548899293896" id="idp105548899293896"></a>),</td></tr><tr><td>click <code class="computeroutput"><span class="guilabel"><span class="guilabel">Details</span></span></code> next
+(this installs emacs<a class="indexterm" name="id6891" id="id6891"></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="idp105548899299656" id="idp105548899299656"></a>this installs
-docbook),</td></tr><tr><td>uncheck <code class="computeroutput"><span class="guilabel"><span class="guilabel">Server Configuration
+Publishing</span></span></code> (<a class="indexterm" name="id6907" id="id6907"></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
@@ -150,7 +149,7 @@
 will appear.</p><table border="0" summary="Simple list" class="simplelist">
 <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="idp105548899282632" id="idp105548899282632"></a>photo-album packages,</td></tr><tr><td>uncheck<code class="computeroutput"><span class="guilabel"><span class="guilabel">isdn4k-utils</span></span></code>
+(required for the <a class="indexterm" name="id6950" id="id6950"></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
@@ -197,12 +196,12 @@
 <p>Lock down SSH</p><div class="orderedlist"><ol class="orderedlist" type="a">
 <li class="listitem">
 <p>
-<a class="indexterm" name="idp105548899247944" id="idp105548899247944"></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>
+<a class="indexterm" name="id7035" id="id7035"></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 class="listitem"><p>Search for the word "root" by typing <strong class="userinput"><code>C-s</code></strong> (that&#39;s emacs-speak for
 control-s) and then <strong class="userinput"><code>root</code></strong>.</p></li><li class="listitem">
 <p>Make the following changes:</p><table border="0" summary="Simple list" class="simplelist">
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.44.2.8 -r1.44.2.9
--- openacs-4/packages/acs-core-docs/www/install-redhat.html	13 Jul 2023 12:43:21 -0000	1.44.2.8
+++ openacs-4/packages/acs-core-docs/www/install-redhat.html	1 Aug 2024 08:03:40 -0000	1.44.2.9
@@ -27,7 +27,7 @@
 	</p><div class="orderedlist"><ol class="orderedlist" type="1"><li class="listitem"><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="idp105548898825160"></a>
+           <a class="indexterm" name="id6765"></a>
   (Wherever you see
           the word secure, you should always read it as, "secure
           enough for our purposes, given the amount of work we're
@@ -55,7 +55,7 @@
 <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 class="listitem"><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 class="listitem"><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 class="listitem"><p>Configure Networking.  <a class="indexterm" name="idp105548899306056"></a>
+	  IF YOU ARE WIPING YOUR HARD DRIVE.</p></li><li class="listitem"><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 class="listitem"><p>Configure Networking.  <a class="indexterm" name="id6833"></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 class="orderedlist" type="a"><li class="listitem"><p>DHCP is a system by which a computer that
@@ -75,7 +75,7 @@
 <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 class="listitem"><p><a class="indexterm" name="idp105548899287624"></a>Select any additional languages you want the
+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 class="listitem"><p><a class="indexterm" name="id6872"></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 class="listitem"><p>Choose your timezone 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 class="listitem"><p>Type in a root
 password, twice.</p></li><li class="listitem"><p>On the Package selection page, we're going to
@@ -87,13 +87,13 @@
 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 border="0" summary="Simple list" class="simplelist"><tr><td>check <code class="computeroutput"><span class="guilabel"><span class="guilabel">Editors</span></span></code> (this installs emacs<a class="indexterm" name="idp105548899293896"></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="idp105548899299656"></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 class="listitem"><p>We need to fine-tune the exact list of packages.
+</p><table border="0" summary="Simple list" class="simplelist"><tr><td>check <code class="computeroutput"><span class="guilabel"><span class="guilabel">Editors</span></span></code> (this installs emacs<a class="indexterm" name="id6891"></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="id6907"></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 class="listitem"><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 border="0" summary="Simple list" class="simplelist"><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="idp105548899282632"></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 class="listitem"><p>Red Hat isn't completely happy with the combination
+list of packages will appear.</p><table border="0" summary="Simple list" class="simplelist"><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="id6950"></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 class="listitem"><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
@@ -119,7 +119,7 @@
         upgrading all of that.  Since you are upgrading the kernel,
         reboot after this step.
 </p></li><li class="listitem"><p>Lock down SSH</p><div class="orderedlist"><ol class="orderedlist" type="a"><li class="listitem"><p>
-              <a class="indexterm" name="idp105548899247944"></a>
+              <a class="indexterm" name="id7035"></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
Index: openacs-4/packages/acs-core-docs/www/install-steps.adp
===================================================================
RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/install-steps.adp,v
diff -u -r1.4.2.9 -r1.4.2.10
--- openacs-4/packages/acs-core-docs/www/install-steps.adp	13 Jul 2023 12:43:21 -0000	1.4.2.9
+++ openacs-4/packages/acs-core-docs/www/install-steps.adp	1 Aug 2024 08:03:40 -0000	1.4.2.10
@@ -106,8 +106,9 @@
 </ul></div>
 </div><div class="sect2">
 <div class="titlepage"><div><div><h3 class="title">
-<a name="idp105548900771400" id="idp105548900771400"></a>Paths and Users</h3></div></div></div><div class="table">
-<a name="idp105548900772040" id="idp105548900772040"></a><p class="title"><strong>Table 2.1. Default
+<a name="id1342" id="id1342"></a>Paths and
+Users</h3></div></div></div><div class="table">
+<a name="id1415" id="id1415"></a><p class="title"><strong>Table 2.1. Default
 directories for a standard install</strong></p><div class="table-contents"><table class="table" summary="Default directories for a standard install" cellspacing="0" width="100%" border="1">
 <colgroup>
 <col><col>
@@ -118,7 +119,7 @@
 <td>name of administrative access account</td><td>remadmin</td>
 </tr><tr>
 <td>OpenACS service</td><td>
-<a class="indexterm" name="idp105548900776648" id="idp105548900776648"></a><span class="replaceable"><span class="replaceable">$OPENACS_SERVICE_NAME</span></span> (set to service0
+<a class="indexterm" name="id3274" id="id3274"></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>
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.38.2.7 -r1.38.2.8
--- openacs-4/packages/acs-core-docs/www/install-steps.html	13 Jul 2023 12:43:21 -0000	1.38.2.7
+++ openacs-4/packages/acs-core-docs/www/install-steps.html	1 Aug 2024 08:03:40 -0000	1.38.2.8
@@ -44,7 +44,7 @@
 <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"><div class="titlepage"><div><div><h3 class="title"><a name="idp105548900771400"></a>Paths and Users</h3></div></div></div><div class="table"><a name="idp105548900772040"></a><p class="title"><b>Table 2.1. Default directories for a standard install</b></p><div class="table-contents"><table class="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="idp105548900776648"></a>
+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"><div class="titlepage"><div><div><h3 class="title"><a name="id1342"></a>Paths and Users</h3></div></div></div><div class="table"><a name="id1415"></a><p class="title"><b>Table 2.1. Default directories for a standard install</b></p><div class="table-contents"><table class="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="id3274"></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.9.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></div><br class="table-break"><p>
Index: openacs-4/packages/acs-core-docs/www/ix01.adp
===================================================================
RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/ix01.adp,v
diff -u -r1.4.2.9 -r1.4.2.10
--- openacs-4/packages/acs-core-docs/www/ix01.adp	13 Jul 2023 12:43:21 -0000	1.4.2.9
+++ openacs-4/packages/acs-core-docs/www/ix01.adp	1 Aug 2024 08:03:40 -0000	1.4.2.10
@@ -8,23 +8,21 @@
 			rightLink="" rightLabel="">
 		    <div class="index">
 <div class="titlepage"><div><div><h1 class="title">
-<a name="idp105548832240328" id="idp105548832240328"></a>Index</h1></div></div></div><div xmlns:xlink="http://www.w3.org/1999/xlink" class="index">
+<a name="id19699" id="id19699"></a>Index</h1></div></div></div><div xmlns:xlink="http://www.w3.org/1999/xlink" class="index">
 <div class="indexdiv">
-<h3>Symbols</h3><dl><dt id="ientry-idp105548900776648">$OPENACS_SERVICE_NAME, <a class="indexterm" href="install-steps">Paths and
-Users</a>
+<h3>Symbols</h3><dl><dt id="ientry-id3274">$OPENACS_SERVICE_NAME, <a class="indexterm" href="install-steps">Paths and Users</a>
 </dt></dl>
 </div><div class="indexdiv">
 <h3>A</h3><dl>
-<dt id="ientry-idp105548897859784">AOLserver</dt><dd><dl><dt>configuration, <a class="indexterm" href="openacs">Installation Option 2: Install
+<dt id="ientry-id4967">AOLserver</dt><dd><dl><dt>configuration, <a class="indexterm" href="openacs">Installation Option 2: Install
 from tarball</a>
-</dt></dl></dd><dt id="ientry-idp105548968557768">Automated tests, <a class="indexterm" href="tutorial-debug">Write
-automated tests</a>
+</dt></dl></dd><dt id="ientry-id8098">Automated tests, <a class="indexterm" href="tutorial-debug">Write automated tests</a>
 </dt>
 </dl>
 </div><div class="indexdiv">
 <h3>C</h3><dl>
-<dt id="ientry-idp105548966412616">computeroutput</dt><dd><dl><dt>code, <a class="indexterm" href="docbook-primer">Code</a>
-</dt></dl></dd><dt id="ientry-idp105548967266248">cvs</dt><dd><dl>
+<dt id="ientry-id12373">computeroutput</dt><dd><dl><dt>code, <a class="indexterm" href="docbook-primer">Code</a>
+</dt></dl></dd><dt id="ientry-id7115">cvs</dt><dd><dl>
 <dt>initializing, <a class="indexterm" href="install-cvs">Initialize CVS (OPTIONAL)</a>
 </dt><dt>setup, <a class="indexterm" href="cvs-tips">Using CVS with
 an OpenACS Site</a>
@@ -33,98 +31,97 @@
 </dl>
 </div><div class="indexdiv">
 <h3>D</h3><dl>
-<dt id="ientry-idp105548967278280">daemontools</dt><dd><dl><dt>installation, <a class="indexterm" href="install-daemontools">Install Daemontools (OPTIONAL)</a>
-</dt></dl></dd><dt id="ientry-idp105548899299656">docbook</dt><dd><dl><dt>installation, <a class="indexterm" href="install-redhat">Install Red Hat 8/9</a>
-</dt></dl></dd><dt id="ientry-idp105548967270856">DocBook</dt><dd><dl>
+<dt id="ientry-id7143">daemontools</dt><dd><dl><dt>installation, <a class="indexterm" href="install-daemontools">Install Daemontools (OPTIONAL)</a>
+</dt></dl></dd><dt id="ientry-id6907">docbook</dt><dd><dl><dt>installation, <a class="indexterm" href="install-redhat">Install Red Hat 8/9</a>
+</dt></dl></dd><dt id="ientry-id7126">DocBook</dt><dd><dl>
 <dt>DTD, <a class="indexterm" href="docbook-primer">OpenACS Documentation Strategy:
 Why DocBook?</a>
 </dt><dt>emacs configuration for, <a class="indexterm" href="psgml-for-emacs">Add PSGML commands to emacs init file
 (OPTIONAL)</a>
 </dt>
-</dl></dd><dt id="ientry-idp105548965926856">Document structure, <a class="indexterm" href="docbook-primer">Document
+</dl></dd><dt id="ientry-id12311">Document structure, <a class="indexterm" href="docbook-primer">Document
 Structure</a>
 </dt>
 </dl>
 </div><div class="indexdiv">
 <h3>E</h3><dl>
-<dt id="ientry-idp105548899293896">emacs</dt><dd><dl><dt>installation, <a class="indexterm" href="install-redhat">Install Red Hat 8/9</a>
-</dt></dl></dd><dt id="ientry-idp105548966378184">emphasis</dt><dd><dl><dt>bold, italics, <a class="indexterm" href="docbook-primer">Emphasis</a>
+<dt id="ientry-id6891">emacs</dt><dd><dl><dt>installation, <a class="indexterm" href="install-redhat">Install Red Hat 8/9</a>
+</dt></dl></dd><dt id="ientry-id12536">emphasis</dt><dd><dl><dt>bold, italics, <a class="indexterm" href="docbook-primer">Emphasis</a>
 </dt></dl></dd>
 </dl>
 </div><div class="indexdiv">
 <h3>F</h3><dl>
-<dt id="ientry-idp105548967354568">full text search</dt><dd><dl><dt>installation, <a class="indexterm" href="install-full-text-search-tsearch2">Install
+<dt id="ientry-id7309">full text search</dt><dd><dl><dt>installation, <a class="indexterm" href="install-full-text-search-tsearch2">Install
 Tsearch2 module</a>
 </dt></dl></dd>
 </dl>
 </div><div class="indexdiv">
 <h3>G</h3><dl>
-<dt id="ientry-idp105548966410696">Graphics</dt><dd><dl><dt>Images, <a class="indexterm" href="docbook-primer">Graphics</a>
+<dt id="ientry-id12451">Graphics</dt><dd><dl><dt>Images, <a class="indexterm" href="docbook-primer">Graphics</a>
 </dt></dl></dd>
 </dl>
 </div><div class="indexdiv">
 <h3>I</h3><dl>
-<dt id="ientry-idp105548966367176">informaltable</dt><dd><dl><dt>table, <a class="indexterm" href="docbook-primer">Tables</a>
+<dt id="ientry-id12508">informaltable</dt><dd><dl><dt>table, <a class="indexterm" href="docbook-primer">Tables</a>
 </dt></dl></dd>
 </dl>
 </div><div class="indexdiv">
 <h3>L</h3><dl>
-<dt id="ientry-idp105548899287624">language</dt><dd><dl><dt>installation, <a class="indexterm" href="install-redhat">Install Red Hat 8/9</a>
-</dt></dl></dd><dt id="ientry-idp105548966420552">Linking, <a class="indexterm" href="docbook-primer">Links</a>
-</dt><dt id="ientry-idp105548966384200">lists, <a class="indexterm" href="docbook-primer">Lists</a>
+<dt id="ientry-id6872">language</dt><dd><dl><dt>installation, <a class="indexterm" href="install-redhat">Install Red Hat 8/9</a>
+</dt></dl></dd><dt id="ientry-id12394">Linking, <a class="indexterm" href="docbook-primer">Links</a>
+</dt><dt id="ientry-id12467">lists, <a class="indexterm" href="docbook-primer">Lists</a>
 </dt>
 </dl>
 </div><div class="indexdiv">
-<h3>O</h3><dl><dt id="ientry-idp105548969022792">OpenACS Package, <a class="indexterm" href="packages">What a Package
-Looks Like</a>
+<h3>O</h3><dl><dt id="ientry-id8771">OpenACS Package, <a class="indexterm" href="packages">What a Package Looks Like</a>
 </dt></dl>
 </div><div class="indexdiv">
 <h3>P</h3><dl>
-<dt id="ientry-idp105548899282632">photo-album</dt><dd><dl><dt>installation (see ImageMagick)</dt></dl></dd><dt id="ientry-idp105548897848392">Postgres</dt><dd><dl><dt>Vacuuming, <a class="indexterm" href="openacs">Installation Option 2: Install
+<dt id="ientry-id6950">photo-album</dt><dd><dl><dt>installation (see ImageMagick)</dt></dl></dd><dt id="ientry-id4941">Postgres</dt><dd><dl><dt>Vacuuming, <a class="indexterm" href="openacs">Installation Option 2: Install
 from tarball</a>
 </dt></dl></dd>
 </dl>
 </div><div class="indexdiv">
 <h3>Q</h3><dl>
-<dt id="ientry-idp105548967322184">qmail</dt><dd><dl><dt>Maildir, <a class="indexterm" href="install-qmail">Install
+<dt id="ientry-id7240">qmail</dt><dd><dl><dt>Maildir, <a class="indexterm" href="install-qmail">Install
 qmail (OPTIONAL)</a>
 </dt></dl></dd>
 </dl>
 </div><div class="indexdiv">
 <h3>S</h3><dl>
-<dt id="ientry-idp105548965906504">sect1, <a class="indexterm" href="docbook-primer">Headlines,
+<dt id="ientry-id12340">sect1, <a class="indexterm" href="docbook-primer">Headlines,
 Sections</a>
-</dt><dt id="ientry-idp105548965913928">sect2, <a class="indexterm" href="docbook-primer">Headlines,
+</dt><dt id="ientry-id12357">sect2, <a class="indexterm" href="docbook-primer">Headlines,
 Sections</a>
-</dt><dt id="ientry-idp105548965903432">Sections</dt><dd><dl><dt>Headlines, <a class="indexterm" href="docbook-primer">Headlines,
+</dt><dt id="ientry-id12332">Sections</dt><dd><dl><dt>Headlines, <a class="indexterm" href="docbook-primer">Headlines,
 Sections</a>
-</dt></dl></dd><dt id="ientry-idp105548898825160">security</dt><dd><dl>
+</dt></dl></dd><dt id="ientry-id6765">security</dt><dd><dl>
 <dt>definition, <a class="indexterm" href="install-redhat">Install Red Hat 8/9</a>
 </dt><dt>firewall, <a class="indexterm" href="install-redhat">Install Red Hat 8/9</a>
 </dt>
-</dl></dd><dt id="ientry-idp105548967311816">sendmail</dt><dd><dl><dt>removing, <a class="indexterm" href="install-qmail">Install qmail (OPTIONAL)</a>
-</dt></dl></dd><dt id="ientry-idp105548899247944">ssh, <a class="indexterm" href="install-redhat">Install Red Hat 8/9</a>
+</dl></dd><dt id="ientry-id7217">sendmail</dt><dd><dl><dt>removing, <a class="indexterm" href="install-qmail">Install qmail (OPTIONAL)</a>
+</dt></dl></dd><dt id="ientry-id7035">ssh, <a class="indexterm" href="install-redhat">Install Red Hat 8/9</a>
 </dt>
 </dl>
 </div><div class="indexdiv">
-<h3>T</h3><dl><dt id="ientry-idp105548965046472">The publish point for new
-packages should be fixed., <a class="indexterm" href="tutorial-distribute">Prepare the package for
+<h3>T</h3><dl><dt id="ientry-id8475">The publish point for new packages should be
+fixed., <a class="indexterm" href="tutorial-distribute">Prepare the package for
 distribution.</a>
 </dt></dl>
 </div><div class="indexdiv">
 <h3>U</h3><dl>
-<dt id="ientry-idp105548966403784">ulink, <a class="indexterm" href="docbook-primer">Links</a>
-</dt><dt id="ientry-idp105548898317000">upgrade</dt><dd><dl>
+<dt id="ientry-id12435">ulink, <a class="indexterm" href="docbook-primer">Links</a>
+</dt><dt id="ientry-id5407">upgrade</dt><dd><dl>
 <dt>OpenACS 4.5 to 4.6.x</dt><dd><dl><dt>Linux/Unix, <a class="indexterm" href="upgrade-4.5-to-4.6">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 id="ientry-idp105548965943240">XML guidelines, <a class="indexterm" href="docbook-primer">OpenACS
-Documentation Strategy: Why DocBook?</a>
-</dt><dt id="ientry-idp105548966423752">xref</dt><dd><dl><dt>linkend, <a class="indexterm" href="docbook-primer">Links</a>
-</dt></dl></dd><dt id="ientry-idp105548965910472">xreflabel, <a class="indexterm" href="docbook-primer">Headlines,
+<dt id="ientry-id12272">XML guidelines, <a class="indexterm" href="docbook-primer">OpenACS Documentation Strategy:
+Why DocBook?</a>
+</dt><dt id="ientry-id12404">xref</dt><dd><dl><dt>linkend, <a class="indexterm" href="docbook-primer">Links</a>
+</dt></dl></dd><dt id="ientry-id12349">xreflabel, <a class="indexterm" href="docbook-primer">Headlines,
 Sections</a>
 </dt>
 </dl>
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.32.2.7 -r1.32.2.8
--- openacs-4/packages/acs-core-docs/www/ix01.html	13 Jul 2023 12:43:21 -0000	1.32.2.7
+++ openacs-4/packages/acs-core-docs/www/ix01.html	1 Aug 2024 08:03:40 -0000	1.32.2.8
@@ -1,3 +1,3 @@
 <!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=UTF-8"><title>Index</title><link rel="stylesheet" type="text/css" href="openacs.css"><meta name="generator" content="DocBook XSL Stylesheets Vsnapshot"><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"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><a href="http://openacs.org"><img src="/doc/images/alex.jpg" style="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><h1 class="title"><a name="idp105548832240328"></a>Index</h1></div></div></div><div xmlns:xlink="http://www.w3.org/1999/xlink" class="index"><div class="indexdiv"><h3>Symbols</h3><dl><dt id="ientry-idp105548900776648">$OPENACS_SERVICE_NAME, <a class="indexterm" href="install-steps.html#idp105548900771400">Paths and Users</a></dt></dl></div><div class="indexdiv"><h3>A</h3><dl><dt id="ientry-idp105548897859784">AOLserver</dt><dd><dl><dt>configuration, <a class="indexterm" href="openacs.html#install-from-tarball">Installation Option 2: Install from tarball</a></dt></dl></dd><dt id="ientry-idp105548968557768">Automated tests, <a class="indexterm" href="tutorial-debug.html#idp105548968588488">Write automated tests</a></dt></dl></div><div class="indexdiv"><h3>C</h3><dl><dt id="ientry-idp105548966412616">computeroutput</dt><dd><dl><dt>code, <a class="indexterm" href="docbook-primer.html#dbprimer-code">Code</a></dt></dl></dd><dt id="ientry-idp105548967266248">cvs</dt><dd><dl><dt>initializing, <a class="indexterm" href="install-cvs.html">Initialize CVS (OPTIONAL)</a></dt><dt>setup, <a class="indexterm" href="cvs-tips.html">Using CVS with an OpenACS Site</a></dt></dl></dd></dl></div><div class="indexdiv"><h3>D</h3><dl><dt id="ientry-idp105548967278280">daemontools</dt><dd><dl><dt>installation, <a class="indexterm" href="install-daemontools.html">Install Daemontools (OPTIONAL)</a></dt></dl></dd><dt id="ientry-idp105548899299656">docbook</dt><dd><dl><dt>installation, <a class="indexterm" href="install-redhat.html">Install Red Hat 8/9</a></dt></dl></dd><dt id="ientry-idp105548967270856">DocBook</dt><dd><dl><dt>DTD, <a class="indexterm" href="docbook-primer.html#dbprimer-why">OpenACS Documentation Strategy: Why DocBook?</a></dt><dt>emacs configuration for, <a class="indexterm" href="psgml-for-emacs.html">Add PSGML commands to emacs init file (OPTIONAL)</a></dt></dl></dd><dt id="ientry-idp105548965926856">Document structure, <a class="indexterm" href="docbook-primer.html#dbprimer-structure">Document Structure</a></dt></dl></div><div class="indexdiv"><h3>E</h3><dl><dt id="ientry-idp105548899293896">emacs</dt><dd><dl><dt>installation, <a class="indexterm" href="install-redhat.html">Install Red Hat 8/9</a></dt></dl></dd><dt id="ientry-idp105548966378184">emphasis</dt><dd><dl><dt>bold, italics, <a class="indexterm" href="docbook-primer.html#dbprimer-emphasis">Emphasis</a></dt></dl></dd></dl></div><div class="indexdiv"><h3>F</h3><dl><dt id="ientry-idp105548967354568">full text search</dt><dd><dl><dt>installation, <a class="indexterm" href="install-full-text-search-tsearch2.html#install-tsearch2">Install Tsearch2 module</a></dt></dl></dd></dl></div><div class="indexdiv"><h3>G</h3><dl><dt id="ientry-idp105548966410696">Graphics</dt><dd><dl><dt>Images, <a class="indexterm" href="docbook-primer.html#dbprimer-graphics">Graphics</a></dt></dl></dd></dl></div><div class="indexdiv"><h3>I</h3><dl><dt id="ientry-idp105548966367176">informaltable</dt><dd><dl><dt>table, <a class="indexterm" href="docbook-primer.html#dbprimer-tables">Tables</a></dt></dl></dd></dl></div><div class="indexdiv"><h3>L</h3><dl><dt id="ientry-idp105548899287624">language</dt><dd><dl><dt>installation, <a class="indexterm" href="install-redhat.html">Install Red Hat 8/9</a></dt></dl></dd><dt id="ientry-idp105548966420552">Linking, <a class="indexterm" href="docbook-primer.html#dbprimer-links">Links</a></dt><dt id="ientry-idp105548966384200">lists, <a class="indexterm" href="docbook-primer.html#dbprimer-lists">Lists</a></dt></dl></div><div class="indexdiv"><h3>O</h3><dl><dt id="ientry-idp105548969022792">OpenACS Package, <a class="indexterm" href="packages.html#packages-looks">What a Package Looks Like</a></dt></dl></div><div class="indexdiv"><h3>P</h3><dl><dt id="ientry-idp105548899282632">photo-album</dt><dd><dl><dt>installation (see ImageMagick)</dt></dl></dd><dt id="ientry-idp105548897848392">Postgres</dt><dd><dl><dt>Vacuuming, <a class="indexterm" 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 id="ientry-idp105548967322184">qmail</dt><dd><dl><dt>Maildir, <a class="indexterm" href="install-qmail.html">Install qmail (OPTIONAL)</a></dt></dl></dd></dl></div><div class="indexdiv"><h3>S</h3><dl><dt id="ientry-idp105548965906504">sect1, <a class="indexterm" href="docbook-primer.html#dbprimer-sections">Headlines, Sections</a></dt><dt id="ientry-idp105548965913928">sect2, <a class="indexterm" href="docbook-primer.html#dbprimer-sections">Headlines, Sections</a></dt><dt id="ientry-idp105548965903432">Sections</dt><dd><dl><dt>Headlines, <a class="indexterm" href="docbook-primer.html#dbprimer-sections">Headlines, Sections</a></dt></dl></dd><dt id="ientry-idp105548898825160">security</dt><dd><dl><dt>definition, <a class="indexterm" href="install-redhat.html">Install Red Hat 8/9</a></dt><dt>firewall, <a class="indexterm" href="install-redhat.html">Install Red Hat 8/9</a></dt></dl></dd><dt id="ientry-idp105548967311816">sendmail</dt><dd><dl><dt>removing, <a class="indexterm" href="install-qmail.html">Install qmail (OPTIONAL)</a></dt></dl></dd><dt id="ientry-idp105548899247944">ssh, <a class="indexterm" href="install-redhat.html">Install Red Hat 8/9</a></dt></dl></div><div class="indexdiv"><h3>T</h3><dl><dt id="ientry-idp105548965046472">The publish point for new packages should be
-        fixed., <a class="indexterm" href="tutorial-distribute.html">Prepare the package for distribution.</a></dt></dl></div><div class="indexdiv"><h3>U</h3><dl><dt id="ientry-idp105548966403784">ulink, <a class="indexterm" href="docbook-primer.html#dbprimer-links">Links</a></dt><dt id="ientry-idp105548898317000">upgrade</dt><dd><dl><dt>OpenACS 4.5 to 4.6.x</dt><dd><dl><dt>Linux/Unix, <a class="indexterm" 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 id="ientry-idp105548965943240">XML guidelines, <a class="indexterm" href="docbook-primer.html#dbprimer-why">OpenACS Documentation Strategy: Why DocBook?</a></dt><dt id="ientry-idp105548966423752">xref</dt><dd><dl><dt>linkend, <a class="indexterm" href="docbook-primer.html#dbprimer-links">Links</a></dt></dl></dd><dt id="ientry-idp105548965910472">xreflabel, <a class="indexterm" 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></body></html>
+<html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><title>Index</title><link rel="stylesheet" type="text/css" href="openacs.css"><meta name="generator" content="DocBook XSL Stylesheets Vsnapshot"><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"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><a href="http://openacs.org"><img src="/doc/images/alex.jpg" style="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><h1 class="title"><a name="id19699"></a>Index</h1></div></div></div><div xmlns:xlink="http://www.w3.org/1999/xlink" class="index"><div class="indexdiv"><h3>Symbols</h3><dl><dt id="ientry-id3274">$OPENACS_SERVICE_NAME, <a class="indexterm" href="install-steps.html#id1342">Paths and Users</a></dt></dl></div><div class="indexdiv"><h3>A</h3><dl><dt id="ientry-id4967">AOLserver</dt><dd><dl><dt>configuration, <a class="indexterm" href="openacs.html#install-from-tarball">Installation Option 2: Install from tarball</a></dt></dl></dd><dt id="ientry-id8098">Automated tests, <a class="indexterm" href="tutorial-debug.html#id1374">Write automated tests</a></dt></dl></div><div class="indexdiv"><h3>C</h3><dl><dt id="ientry-id12373">computeroutput</dt><dd><dl><dt>code, <a class="indexterm" href="docbook-primer.html#dbprimer-code">Code</a></dt></dl></dd><dt id="ientry-id7115">cvs</dt><dd><dl><dt>initializing, <a class="indexterm" href="install-cvs.html">Initialize CVS (OPTIONAL)</a></dt><dt>setup, <a class="indexterm" href="cvs-tips.html">Using CVS with an OpenACS Site</a></dt></dl></dd></dl></div><div class="indexdiv"><h3>D</h3><dl><dt id="ientry-id7143">daemontools</dt><dd><dl><dt>installation, <a class="indexterm" href="install-daemontools.html">Install Daemontools (OPTIONAL)</a></dt></dl></dd><dt id="ientry-id6907">docbook</dt><dd><dl><dt>installation, <a class="indexterm" href="install-redhat.html">Install Red Hat 8/9</a></dt></dl></dd><dt id="ientry-id7126">DocBook</dt><dd><dl><dt>DTD, <a class="indexterm" href="docbook-primer.html#dbprimer-why">OpenACS Documentation Strategy: Why DocBook?</a></dt><dt>emacs configuration for, <a class="indexterm" href="psgml-for-emacs.html">Add PSGML commands to emacs init file (OPTIONAL)</a></dt></dl></dd><dt id="ientry-id12311">Document structure, <a class="indexterm" href="docbook-primer.html#dbprimer-structure">Document Structure</a></dt></dl></div><div class="indexdiv"><h3>E</h3><dl><dt id="ientry-id6891">emacs</dt><dd><dl><dt>installation, <a class="indexterm" href="install-redhat.html">Install Red Hat 8/9</a></dt></dl></dd><dt id="ientry-id12536">emphasis</dt><dd><dl><dt>bold, italics, <a class="indexterm" href="docbook-primer.html#dbprimer-emphasis">Emphasis</a></dt></dl></dd></dl></div><div class="indexdiv"><h3>F</h3><dl><dt id="ientry-id7309">full text search</dt><dd><dl><dt>installation, <a class="indexterm" href="install-full-text-search-tsearch2.html#install-tsearch2">Install Tsearch2 module</a></dt></dl></dd></dl></div><div class="indexdiv"><h3>G</h3><dl><dt id="ientry-id12451">Graphics</dt><dd><dl><dt>Images, <a class="indexterm" href="docbook-primer.html#dbprimer-graphics">Graphics</a></dt></dl></dd></dl></div><div class="indexdiv"><h3>I</h3><dl><dt id="ientry-id12508">informaltable</dt><dd><dl><dt>table, <a class="indexterm" href="docbook-primer.html#dbprimer-tables">Tables</a></dt></dl></dd></dl></div><div class="indexdiv"><h3>L</h3><dl><dt id="ientry-id6872">language</dt><dd><dl><dt>installation, <a class="indexterm" href="install-redhat.html">Install Red Hat 8/9</a></dt></dl></dd><dt id="ientry-id12394">Linking, <a class="indexterm" href="docbook-primer.html#dbprimer-links">Links</a></dt><dt id="ientry-id12467">lists, <a class="indexterm" href="docbook-primer.html#dbprimer-lists">Lists</a></dt></dl></div><div class="indexdiv"><h3>O</h3><dl><dt id="ientry-id8771">OpenACS Package, <a class="indexterm" href="packages.html#packages-looks">What a Package Looks Like</a></dt></dl></div><div class="indexdiv"><h3>P</h3><dl><dt id="ientry-id6950">photo-album</dt><dd><dl><dt>installation (see ImageMagick)</dt></dl></dd><dt id="ientry-id4941">Postgres</dt><dd><dl><dt>Vacuuming, <a class="indexterm" 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 id="ientry-id7240">qmail</dt><dd><dl><dt>Maildir, <a class="indexterm" href="install-qmail.html">Install qmail (OPTIONAL)</a></dt></dl></dd></dl></div><div class="indexdiv"><h3>S</h3><dl><dt id="ientry-id12340">sect1, <a class="indexterm" href="docbook-primer.html#dbprimer-sections">Headlines, Sections</a></dt><dt id="ientry-id12357">sect2, <a class="indexterm" href="docbook-primer.html#dbprimer-sections">Headlines, Sections</a></dt><dt id="ientry-id12332">Sections</dt><dd><dl><dt>Headlines, <a class="indexterm" href="docbook-primer.html#dbprimer-sections">Headlines, Sections</a></dt></dl></dd><dt id="ientry-id6765">security</dt><dd><dl><dt>definition, <a class="indexterm" href="install-redhat.html">Install Red Hat 8/9</a></dt><dt>firewall, <a class="indexterm" href="install-redhat.html">Install Red Hat 8/9</a></dt></dl></dd><dt id="ientry-id7217">sendmail</dt><dd><dl><dt>removing, <a class="indexterm" href="install-qmail.html">Install qmail (OPTIONAL)</a></dt></dl></dd><dt id="ientry-id7035">ssh, <a class="indexterm" href="install-redhat.html">Install Red Hat 8/9</a></dt></dl></div><div class="indexdiv"><h3>T</h3><dl><dt id="ientry-id8475">The publish point for new packages should be
+        fixed., <a class="indexterm" href="tutorial-distribute.html">Prepare the package for distribution.</a></dt></dl></div><div class="indexdiv"><h3>U</h3><dl><dt id="ientry-id12435">ulink, <a class="indexterm" href="docbook-primer.html#dbprimer-links">Links</a></dt><dt id="ientry-id5407">upgrade</dt><dd><dl><dt>OpenACS 4.5 to 4.6.x</dt><dd><dl><dt>Linux/Unix, <a class="indexterm" 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 id="ientry-id12272">XML guidelines, <a class="indexterm" href="docbook-primer.html#dbprimer-why">OpenACS Documentation Strategy: Why DocBook?</a></dt><dt id="ientry-id12404">xref</dt><dd><dl><dt>linkend, <a class="indexterm" href="docbook-primer.html#dbprimer-links">Links</a></dt></dl></dd><dt id="ientry-id12349">xreflabel, <a class="indexterm" 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></body></html>
Index: openacs-4/packages/acs-core-docs/www/maint-performance.adp
===================================================================
RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/maint-performance.adp,v
diff -u -r1.4.2.10 -r1.4.2.11
--- openacs-4/packages/acs-core-docs/www/maint-performance.adp	13 Jul 2023 12:43:21 -0000	1.4.2.10
+++ openacs-4/packages/acs-core-docs/www/maint-performance.adp	1 Aug 2024 08:03:40 -0000	1.4.2.11
@@ -32,7 +32,7 @@
 <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="idp105548898895560" id="idp105548898895560"></a><p class="title"><strong>Figure 6.8. Query
+<a name="id1405" id="id1405"></a><p class="title"><strong>Figure 6.8. Query
 Analysis example</strong></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>
@@ -123,8 +123,8 @@
 query, install "autotrace". I usually follow the
 instructions here <a class="ulink" href="http://asktom.oracle.com/~tkyte/article1/autotrace.html" target="_top">http://asktom.oracle.com/~tkyte/article1/autotrace.html</a>.</p><div class="sect3">
 <div class="titlepage"><div><div><h4 class="title">
-<a name="idp105548898880584" id="idp105548898880584"></a>Make sure that the Oracle CBO works with
-adequate statistics</h4></div></div></div><p>The Oracle Cost Based optimizer is a piece of software that
+<a name="id1360" id="id1360"></a>Make sure that
+the Oracle CBO works with adequate statistics</h4></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 estimates the costs of running a SQL
 query in a particular way (by default up to 80.000 permutations are
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.32.2.7 -r1.32.2.8
--- openacs-4/packages/acs-core-docs/www/maint-performance.html	13 Jul 2023 12:43:21 -0000	1.32.2.7
+++ openacs-4/packages/acs-core-docs/www/maint-performance.html	1 Aug 2024 08:03:40 -0000	1.32.2.8
@@ -2,7 +2,7 @@
 <html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><title>Diagnosing Performance Problems</title><link rel="stylesheet" type="text/css" href="openacs.css"><meta name="generator" content="DocBook XSL Stylesheets Vsnapshot"><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"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><a href="http://openacs.org"><img src="/doc/images/alex.jpg" style="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"><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 class="itemizedlist" style="list-style-type: disc; "><li class="listitem"><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 class="listitem"><p>Is the filesystem out of space?  Is the machine swapping to disk constantly?</p></li><li class="listitem"><p>Isolating and solving database problems.</p><div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: circle; "><li class="listitem"><p>Without daily internal maintenance, most databases slowly degrade in performance.  For PostgreSQL, see <a class="xref" href="install-next-nightly-vacuum.html" title="Vacuum Postgres nightly">the section called “Vacuum Postgres nightly”</a>.  For Oracle, use <code class="computeroutput">exec dbms_stats.gather_schema_stats('SCHEMA_NAME')</code> (<a class="ulink" href="http://www.piskorski.com/docs/oracle.html" target="_top">Andrew Piskorski's Oracle notes</a>).</p></li><li class="listitem"><p>You can track the exact amount of time each database query on a page takes:</p><div class="orderedlist"><ol class="orderedlist" type="1"><li class="listitem"><p>Go to <a class="ulink" href="/acs-admin/install" target="_top">Main Site : Site-Wide Administration : Install Software</a></p></li><li class="listitem"><p>Click on "Install New Application" in "Install from OpenACS Repository"</p></li><li class="listitem"><p>Choose "ACS Developer Support"&gt;</p></li><li class="listitem"><p>After install is complete, restart the server.</p></li><li class="listitem"><p>Browse to Developer Support, which is automatically mounted at <code class="computeroutput"><a class="ulink" href="/ds" target="_top">/ds</a></code>.
-              </p></li><li class="listitem"><p>Turn on Database statistics</p></li><li class="listitem"><p>Browse directly to a slow page and click "Request Information" at the bottom of the page.</p></li><li class="listitem"><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="idp105548898895560"></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 class="listitem"><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
+              </p></li><li class="listitem"><p>Turn on Database statistics</p></li><li class="listitem"><p>Browse directly to a slow page and click "Request Information" at the bottom of the page.</p></li><li class="listitem"><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="id1405"></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 class="listitem"><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
 
 Oracle Server Manager Release 3.1.7.0.0 - Production
 
@@ -59,7 +59,7 @@
     </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 class="ulink" href="http://asktom.oracle.com/~tkyte/article1/autotrace.html" target="_top">http://asktom.oracle.com/~tkyte/article1/autotrace.html</a>.
-    </p><div class="sect3"><div class="titlepage"><div><div><h4 class="title"><a name="idp105548898880584"></a>Make sure that the Oracle CBO works with adequate statistics</h4></div></div></div><p>
+    </p><div class="sect3"><div class="titlepage"><div><div><h4 class="title"><a name="id1360"></a>Make sure that the Oracle CBO works with adequate statistics</h4></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
     estimates the costs of running a SQL query in a particular way (by default
Index: openacs-4/packages/acs-core-docs/www/maintenance-deploy.adp
===================================================================
RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/maintenance-deploy.adp,v
diff -u -r1.5.2.10 -r1.5.2.11
--- openacs-4/packages/acs-core-docs/www/maintenance-deploy.adp	13 Jul 2023 12:43:21 -0000	1.5.2.10
+++ openacs-4/packages/acs-core-docs/www/maintenance-deploy.adp	1 Aug 2024 08:03:40 -0000	1.5.2.11
@@ -24,7 +24,8 @@
 working configuration safely and quickly.</p></li>
 </ul></div><div class="sect2">
 <div class="titlepage"><div><div><h3 class="title">
-<a name="idp105548898980168" id="idp105548898980168"></a>Method 1: Deployment with CVS</h3></div></div></div><p>With this method, we control the files on a site via CVS. This
+<a name="id1356" id="id1356"></a>Method 1:
+Deployment with CVS</h3></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 live. The
@@ -103,7 +104,8 @@
 tags to follow ...</p>
 </div><div class="sect2">
 <div class="titlepage"><div><div><h3 class="title">
-<a name="idp105548898987208" id="idp105548898987208"></a>Method 2: A/B Deployment</h3></div></div></div><p>The approach taken in this section is to always create a new
+<a name="id1359" id="id1359"></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
@@ -119,28 +121,28 @@
 risk losing data in the shuffle. It also requires extra steps if
 the database will be affected.</p><div class="sect3">
 <div class="titlepage"><div><div><h4 class="title">
-<a name="idp105548898988616" id="idp105548898988616"></a>Simple A/B Deployment: Database is not
-changed</h4></div></div></div><div class="figure">
-<a name="idp105548898989256" id="idp105548898989256"></a><p class="title"><strong>Figure 6.2. Simple
+<a name="id1357" id="id1357"></a>Simple A/B
+Deployment: Database is not changed</h4></div></div></div><div class="figure">
+<a name="id1399" id="id1399"></a><p class="title"><strong>Figure 6.2. Simple
 A/B Deployment - Step 1</strong></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="idp105548898958792" id="idp105548898958792"></a><p class="title"><strong>Figure 6.3. Simple
+<a name="id1400" id="id1400"></a><p class="title"><strong>Figure 6.3. Simple
 A/B Deployment - Step 2</strong></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="idp105548898961096" id="idp105548898961096"></a><p class="title"><strong>Figure 6.4. Simple
+<a name="id1401" id="id1401"></a><p class="title"><strong>Figure 6.4. Simple
 A/B Deployment - Step 3</strong></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">
 <div class="titlepage"><div><div><h4 class="title">
-<a name="idp105548898963528" id="idp105548898963528"></a>Complex A/B Deployment: Database is
-changed</h4></div></div></div><div class="figure">
-<a name="idp105548898964168" id="idp105548898964168"></a><p class="title"><strong>Figure 6.5. Complex A/B Deployment
+<a name="id1358" id="id1358"></a>Complex A/B
+Deployment: Database is changed</h4></div></div></div><div class="figure">
+<a name="id1402" id="id1402"></a><p class="title"><strong>Figure 6.5. Complex A/B Deployment
 - Step 1</strong></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="idp105548898966472" id="idp105548898966472"></a><p class="title"><strong>Figure 6.6. Complex A/B Deployment
+<a name="id1403" id="id1403"></a><p class="title"><strong>Figure 6.6. Complex A/B Deployment
 - Step 2</strong></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="idp105548898968776" id="idp105548898968776"></a><p class="title"><strong>Figure 6.7. Complex A/B Deployment
+<a name="id1404" id="id1404"></a><p class="title"><strong>Figure 6.7. Complex A/B Deployment
 - Step 3</strong></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>
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.28.2.7 -r1.28.2.8
--- openacs-4/packages/acs-core-docs/www/maintenance-deploy.html	13 Jul 2023 12:43:21 -0000	1.28.2.7
+++ openacs-4/packages/acs-core-docs/www/maintenance-deploy.html	1 Aug 2024 08:03:40 -0000	1.28.2.8
@@ -2,7 +2,7 @@
 <html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><title>Staged Deployment for Production Networks</title><link rel="stylesheet" type="text/css" href="openacs.css"><meta name="generator" content="DocBook XSL Stylesheets Vsnapshot"><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"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><a href="http://openacs.org"><img src="/doc/images/alex.jpg" style="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"><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 class="ulink" 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 class="itemizedlist" style="list-style-type: disc; "><li class="listitem"><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 class="listitem"><p>Rollback: If anything goes wrong, you can return to the previous working configuration safely and quickly.</p></li></ul></div><div class="sect2"><div class="titlepage"><div><div><h3 class="title"><a name="idp105548898980168"></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 class="itemizedlist" style="list-style-type: disc; "><li class="listitem"><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 class="listitem"><p>Rollback: If anything goes wrong, you can return to the previous working configuration safely and quickly.</p></li></ul></div><div class="sect2"><div class="titlepage"><div><div><h3 class="title"><a name="id1356"></a>Method 1: Deployment with CVS</h3></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
@@ -67,4 +67,4 @@
 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"><div class="titlepage"><div><div><h3 class="title"><a name="idp105548898987208"></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 filesystem 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"><div class="titlepage"><div><div><h4 class="title"><a name="idp105548898988616"></a>Simple A/B Deployment: Database is not changed</h4></div></div></div><div class="figure"><a name="idp105548898989256"></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="idp105548898958792"></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="idp105548898961096"></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"><div class="titlepage"><div><div><h4 class="title"><a name="idp105548898963528"></a>Complex A/B Deployment: Database is changed</h4></div></div></div><div class="figure"><a name="idp105548898964168"></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="idp105548898966472"></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="idp105548898968776"></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></body></html>
+      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"><div class="titlepage"><div><div><h3 class="title"><a name="id1359"></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 filesystem 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"><div class="titlepage"><div><div><h4 class="title"><a name="id1357"></a>Simple A/B Deployment: Database is not changed</h4></div></div></div><div class="figure"><a name="id1399"></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="id1400"></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="id1401"></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"><div class="titlepage"><div><div><h4 class="title"><a name="id1358"></a>Complex A/B Deployment: Database is changed</h4></div></div></div><div class="figure"><a name="id1402"></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="id1403"></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="id1404"></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></body></html>
Index: openacs-4/packages/acs-core-docs/www/object-system-design.adp
===================================================================
RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/object-system-design.adp,v
diff -u -r1.4.2.7 -r1.4.2.8
--- openacs-4/packages/acs-core-docs/www/object-system-design.adp	13 Jul 2023 12:43:21 -0000	1.4.2.7
+++ openacs-4/packages/acs-core-docs/www/object-system-design.adp	1 Aug 2024 08:03:40 -0000	1.4.2.8
@@ -73,8 +73,8 @@
 </li>
 </ul></div><p>The next section will explore these facilities in the context of
 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 class="link" href="groups-design" title="Groups Design">the new groups system</a>, <a class="link" href="subsites-design" title="Subsites Design Document">subsites</a> and <a class="link" href="permissions-design" title="Permissions Design">the
-permissions system</a>
+documents for <a class="link" href="groups-design" title="Groups Design">the new groups system</a>, <a class="link" href="subsites-design" title="Subsites Design Document">subsites</a> and <a class="link" href="permissions-design" title="Permissions Design">the permission
+system</a>
 </p>
 </div><div class="sect2">
 <div class="titlepage"><div><div><h3 class="title">
@@ -140,8 +140,8 @@
 </div><div class="sect3">
 <div class="titlepage"><div><div><h4 class="title">
 <a name="objects-design-obj-context" id="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 application had to manage access control to its data
+Control</h4></div></div></div><p>Until the implementation of the general permission 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 class="informaltable" cellspacing="0" border="1">
@@ -179,7 +179,7 @@
 there is no information about user X&#39;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 two separate
-documents: one for the <a class="link" href="permissions-design" title="Permissions Design">permissions
+documents: one for the <a class="link" href="permissions-design" title="Permissions Design">permission
 system</a> and another for the <a class="link" href="groups-design" title="Groups Design">party groups</a> system.
 The context system is also used to implement <a class="link" href="subsites-design" title="Subsites Design Document">subsites</a>.</p>
 </div><div class="sect3">
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.37.2.3 -r1.37.2.4
--- openacs-4/packages/acs-core-docs/www/object-system-design.html	3 Sep 2021 09:15:18 -0000	1.37.2.3
+++ openacs-4/packages/acs-core-docs/www/object-system-design.html	1 Aug 2024 08:03:40 -0000	1.37.2.4
@@ -33,7 +33,7 @@
 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
-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 class="link" href="groups-design.html" title="Groups Design">the new groups system</a>, <a class="link" href="subsites-design.html" title="Subsites Design Document">subsites</a> and <a class="link" href="permissions-design.html" title="Permissions Design">the permissions system</a></p></div><div class="sect2"><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"><strong>Related Links</strong></span></p><p>This design document should be read along with the design documents for <a class="link" href="groups-design.html" title="Groups Design">the new groups system</a>, <a class="link" href="subsites-design.html" title="Subsites Design Document">subsites</a> and <a class="link" href="permissions-design.html" title="Permissions Design">the permission system</a></p></div><div class="sect2"><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
 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"><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
 object in OpenACS 4 has a unique ID which is mapped to a row in a central table
@@ -77,7 +77,7 @@
 in the new system. Each row in <code class="computeroutput">acs_objects</code> 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"><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"><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 permission 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 class="informaltable" 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,
@@ -101,7 +101,7 @@
 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 two separate documents: one for the
-<a class="link" href="permissions-design.html" title="Permissions Design">permissions system</a> and another for the
+<a class="link" href="permissions-design.html" title="Permissions Design">permission system</a> and another for the
 <a class="link" href="groups-design.html" title="Groups Design">party groups</a> system. The context system
 is also used to implement <a class="link" href="subsites-design.html" title="Subsites Design Document">subsites</a>.</p></div><div class="sect3"><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
 need to use application specific mechanisms to keep track of user defined
Index: openacs-4/packages/acs-core-docs/www/object-system-requirements.adp
===================================================================
RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/object-system-requirements.adp,v
diff -u -r1.4.2.5 -r1.4.2.6
--- openacs-4/packages/acs-core-docs/www/object-system-requirements.adp	13 Jul 2023 12:43:21 -0000	1.4.2.5
+++ openacs-4/packages/acs-core-docs/www/object-system-requirements.adp	1 Aug 2024 08:03:40 -0000	1.4.2.6
@@ -74,7 +74,7 @@
 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 developer. Until the implementation of the general
-permissions system, every OpenACS application had to manage access
+permission 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 class="informaltable" cellspacing="0" border="1">
@@ -325,10 +325,10 @@
 awkward to use and limited in flexibility.</p><p>The OpenACS 4 Object Model provides a generalized notion of
 scope that allows developers to represent a hierarchy of object
 <span class="emphasis"><em>contexts</em></span>. These contexts are
-used as the basis for the permissions system. In general, if an
+used as the basis for the permission system. In general, if an
 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 class="link" href="subsites-requirements" title="Subsites Requirements">subsites system</a>, and is a basic part of
-the <a class="link" href="permissions-requirements" title="Permissions Requirements">permissions system</a>, described in
+the <a class="link" href="permissions-requirements" title="Permissions Requirements">permission 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
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.37.2.2 -r1.37.2.3
--- openacs-4/packages/acs-core-docs/www/object-system-requirements.html	3 Sep 2021 09:15:18 -0000	1.37.2.2
+++ openacs-4/packages/acs-core-docs/www/object-system-requirements.html	1 Aug 2024 08:03:40 -0000	1.37.2.3
@@ -46,7 +46,7 @@
 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
-developer. Until the implementation of the general permissions system, every
+developer. Until the implementation of the general permission 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
@@ -200,10 +200,10 @@
 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
 developers to represent a hierarchy of object <span class="emphasis"><em>contexts</em></span>. These
-contexts are used as the basis for the permissions system. In general, if an
+contexts are used as the basis for the permission system. In general, if an
 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 class="link" href="subsites-requirements.html" title="Subsites Requirements">subsites system</a>, and is
-a basic part of the <a class="link" href="permissions-requirements.html" title="Permissions Requirements">permissions system</a>,
+a basic part of the <a class="link" href="permissions-requirements.html" title="Permissions Requirements">permission 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
 contexts (i.e. contexts have parents) and contexts can contain other contexts
Index: openacs-4/packages/acs-core-docs/www/objects.adp
===================================================================
RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/objects.adp,v
diff -u -r1.4.2.9 -r1.4.2.10
--- openacs-4/packages/acs-core-docs/www/objects.adp	13 Jul 2023 12:43:21 -0000	1.4.2.9
+++ openacs-4/packages/acs-core-docs/www/objects.adp	1 Aug 2024 08:03:40 -0000	1.4.2.10
@@ -86,8 +86,8 @@
 for the PG version) file created when we <a class="link" href="packages" title="OpenACS Packages">created the package</a>.
 Then, do the following:</p><div class="sect3">
 <div class="titlepage"><div><div><h4 class="title">
-<a name="idp105548968938184" id="idp105548968938184"></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
+<a name="id1377" id="id1377"></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><pre class="programlisting">
 begin  
   acs_object_type.create_type ( 
@@ -142,8 +142,8 @@
 attributes, so there is no need for us to define them.</p>
 </div><div class="sect3">
 <div class="titlepage"><div><div><h4 class="title">
-<a name="idp105548968948808" id="idp105548968948808"></a>Define a table in which to store your
-objects</h4></div></div></div><p>The next thing we do is make a small modification to the data
+<a name="id1378" id="id1378"></a>Define a table
+in which to store your objects</h4></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 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 definition looks
 like this:</p><pre class="programlisting">
@@ -166,8 +166,8 @@
 <code class="computeroutput">acs_objects</code>.</p>
 </div><div class="sect3">
 <div class="titlepage"><div><div><h4 class="title">
-<a name="idp105548968530504" id="idp105548968530504"></a>Define a package for type specific
-procedures</h4></div></div></div><p>The next step is to define a PL/SQL package for your new type,
+<a name="id1379" id="id1379"></a>Define a package
+for type specific procedures</h4></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:</p><pre class="programlisting">
 create or replace package note 
@@ -213,8 +213,8 @@
 only" by default. We&#39;ll talk about this more later.</p>
 </div><div class="sect3">
 <div class="titlepage"><div><div><h4 class="title">
-<a name="idp105548968535496" id="idp105548968535496"></a>Define a package body for type specific
-procedures</h4></div></div></div><p>The PL/SQL package body contains the implementations of the
+<a name="id1380" id="id1380"></a>Define a package
+body for type specific procedures</h4></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
@@ -318,7 +318,7 @@
 <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 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
+permission 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&#39;ll see later, the Notes example will point each note
 object&#39;s <code class="computeroutput">context_id</code> to the
 package instance in which the note was created. The idea will be
@@ -365,8 +365,8 @@
 <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.</p></li>
-</ul></div><div class="cvstag">($&zwnj;Id: objects.xml,v 1.10 2017/08/07 23:47:54
-gustafn Exp $)</div>
+</ul></div><div class="cvstag">($&zwnj;Id: objects.xml,v 1.10.2.1 2024/02/05
+15:35:06 gustafn Exp $)</div>
 </div>
 </div>
 <include src="/packages/acs-core-docs/lib/navfooter"
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.55.2.7 -r1.55.2.8
--- openacs-4/packages/acs-core-docs/www/objects.html	13 Jul 2023 12:43:21 -0000	1.55.2.7
+++ openacs-4/packages/acs-core-docs/www/objects.html	1 Aug 2024 08:03:40 -0000	1.55.2.8
@@ -79,7 +79,7 @@
 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
 when we <a class="link" href="packages.html" title="OpenACS Packages">created the package</a>.  Then, do the following:
-</p><div class="sect3"><div class="titlepage"><div><div><h4 class="title"><a name="idp105548968938184"></a>Describe the new type to the type system</h4></div></div></div><p>
+</p><div class="sect3"><div class="titlepage"><div><div><h4 class="title"><a name="id1377"></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><pre class="programlisting">
 begin  
@@ -139,7 +139,7 @@
 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
 no need for us to define them.
-</p></div><div class="sect3"><div class="titlepage"><div><div><h4 class="title"><a name="idp105548968948808"></a>Define a table in which to store your objects</h4></div></div></div><p>
+</p></div><div class="sect3"><div class="titlepage"><div><div><h4 class="title"><a name="id1378"></a>Define a table in which to store your objects</h4></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
 represents something that is not only an object of type
@@ -164,7 +164,7 @@
 use the <code class="computeroutput">acs_objects</code> 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"><div class="titlepage"><div><div><h4 class="title"><a name="idp105548968530504"></a>Define a package for type specific procedures</h4></div></div></div><p>
+</p></div><div class="sect3"><div class="titlepage"><div><div><h4 class="title"><a name="id1379"></a>Define a package for type specific procedures</h4></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:
@@ -212,7 +212,7 @@
 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
 later.
-</p></div><div class="sect3"><div class="titlepage"><div><div><h4 class="title"><a name="idp105548968535496"></a>Define a package body for type specific procedures</h4></div></div></div><p>
+</p></div><div class="sect3"><div class="titlepage"><div><div><h4 class="title"><a name="id1380"></a>Define a package body for type specific procedures</h4></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
@@ -329,7 +329,7 @@
 </p></li><li class="listitem"><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
-a very specific purpose by the permissions system, and using this
+a very specific purpose by the permission 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>
Index: openacs-4/packages/acs-core-docs/www/openacs-overview.adp
===================================================================
RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/openacs-overview.adp,v
diff -u -r1.4.2.6 -r1.4.2.7
--- openacs-4/packages/acs-core-docs/www/openacs-overview.adp	19 Oct 2023 09:44:24 -0000	1.4.2.6
+++ openacs-4/packages/acs-core-docs/www/openacs-overview.adp	1 Aug 2024 08:03:40 -0000	1.4.2.7
@@ -1,105 +1,54 @@
-<master>
-  <property name="context">{/doc/acs-core-docs/ {ACS Core Documentation}} {Overview}</property>
-  <property name="doc(title)">Overview</property>
 
-  <include src="/packages/acs-core-docs/lib/navheader"
-	   leftLink="general-documents"
-           leftLabel="Prev"
-	   title="Chapter 1. High level information: What is OpenACS?"
-	   rightLink="release-notes"
-           rightLabel="Next">
-
-  <div class="sect1">
-
-    <div class="titlepage"><div>
-        <div>
-          <h2 class="title" style="clear: both">
-            <a name="openacs-overview" id="openacs-overview"></a>Overview
-          </h2>
-        </div>
-      </div>
-    </div>
-
-    <p>
-      OpenACS (Open Architecture Community System) is an advanced
-      toolkit for building scalable, community-oriented web
-      applications.  If you&#39;re thinking of building an
-      enterprise-level web application, OpenACS is a solid, scalable
-      framework for building dynamic content driven sites.
-    </p>
-
-    <p>
-      OpenACS is a collection of pre-built applications and services
-      that you can use to build your web site/application. Through a
-      modular architecture, OpenACS has packages for user/groups
-      management, content management, e-commerce, news, FAQs,
-      calendar, forums, bug tracking, full-text searching,
-      and <a class="ulink" href="http://openacs.org/repository/">much
-      more</a>.
-    </p>
-
-    <p>
-      OpenACS relies on <a class="ulink"
-      href="https://wiki.tcl-lang.org/page/NaviServer"
-      target="_top">NaviServer</a>, a free, multithreaded, scalable,
-      Tcl-enabled, web/application server.  Currently OpenACS
-      supports <a class="ulink" href="https://www.postgresql.org/"
-      target="_top">PostgreSQL</a>, an open source RDBMS,
-      and <a class="ulink" href="https://www.oracle.com/">Oracle</a>
-      and is easily extensible to other databases which support a
-      comparable feature set.
-    </p>
-
-    <p>
-      The OpenACS toolkit is derived from the <a class="ulink"
-      href="https://wikipedia.org/wiki/ArsDigita_Community_System">ArsDigita
-      Community System (ACS)</a>. <a class="ulink"
-      href="https://wikipedia.org/wiki/ArsDigita">ArsDigita</a> kindly
-      made their work available under the <a class="ulink"
-      href="http://www.gnu.org/licenses/gpl.txt">GPL</a>, making all
-      of this possible.
-    </p>
-
-    <p>
-      The OpenACS project was born when Don Baccus, Ben Adida, and
-      others decided to port ACS from Oracle to PostgreSQL, thus
-      making it a fully open-source solution. With OpenACS 4, Oracle
-      and PostgreSQL support were combined in one code base and with
-      OpenACS 5, support for internationalization and localization has
-      been added.
-    </p>
-
-    <p>
-      A vibrant and productive community has sprung up around the
-      OpenACS software and there are many volunteer contributors as
-      well as a commercial companies able to provide support, hosting,
-      and custom development. Many of the production users are
-      actively funding and contributing work back to the
-      project. Formal, consensus driven governance has been
-      established (with semi-annual elections) which ensures the
-      project serves the needs of it&#39;s constituents.
-    </p>
-
-    <p>
-      The OpenACS community would like to hear your comments and can
-      help you in your endeavors with the system. Visit
-      our <a class="ulink" href="http://openacs.org/">web site</a> and
-      feel free to <a class="ulink"
-      href="http://openacs.org/forums/">ask questions or provide
-      feedback</a>.
-    </p>
-
-  </div>
-
-  <include src="/packages/acs-core-docs/lib/navfooter"
-	   leftLink="general-documents"
-           leftLabel="Prev"
-           leftTitle="Chapter 1. High level information: What is OpenACS?"
-	   rightLink="release-notes"
-           rightLabel="Next"
-           rightTitle="OpenACS Release Notes"
-	   homeLink="index"
-           homeLabel="Home"
-	   upLink="general-documents"
-           upLabel="Up">
-
+<property name="context">{/doc/acs-core-docs/ {ACS Core Documentation}} {Overview}</property>
+<property name="doc(title)">Overview</property>
+<master>
+<include src="/packages/acs-core-docs/lib/navheader"
+			leftLink="general-documents" leftLabel="Prev"
+			title="
+Chapter 1. High level information: What is
+OpenACS?"
+			rightLink="release-notes" rightLabel="Next">
+		    <div class="sect1">
+<div class="titlepage"><div><div><h2 class="title" style="clear: both">
+<a name="openacs-overview" id="openacs-overview"></a>Overview</h2></div></div></div><p>OpenACS (Open Architecture Community System) is an advanced
+toolkit for building scalable, community-oriented web applications.
+If you&#39;re thinking of building an enterprise-level web
+application, OpenACS is a solid, scalable framework for building
+dynamic content driven sites.</p><p>OpenACS is a collection of pre-built applications and services
+that you can use to build your web site/application. Through a
+modular architecture, OpenACS has packages for user/groups
+management, content management, e-commerce, news, FAQs, calendar,
+forums, bug tracking, full-text searching, and <a class="ulink" href="http://openacs.org/packages/" target="_top">much
+more</a>.</p><p>OpenACS relies on <a class="ulink" href="http://www.aolserver.com/" target="_top">AOLserver</a>, the free,
+multithreaded, scalable, Tcl-enabled, web/application server used
+by America Online for most of its web sites, and a true
+ACID-compliant Relational Database Management System (RDBMS).
+Currently OpenACS supports PostgreSQL, an open source RDBMS, and
+Oracle and is easily extensible to other databases which support a
+comparable feature set.</p><p>The OpenACS toolkit is derived from the ArsDigita Community
+System (ACS). ArsDigita (now part of Red Hat, Inc.) kindly made
+their work available under the <a class="ulink" href="http://www.gnu.org/licenses/gpl.txt" target="_top">GPL</a>, making
+all of this possible.</p><p>The OpenACS project was born when Don Baccus, Ben Adida, and
+others decided to port ACS from Oracle to PostgreSQL, thus making
+it a fully open-source solution. With OpenACS 4, Oracle and
+PostgreSQL support were combined in one code base and with OpenACS
+5, support for internationalization and localization has been
+added.</p><p>A vibrant and productive community has sprung up around the
+OpenACS software and there are many volunteer contributors as well
+as a commercial companies able to provide support, hosting, and
+custom development. Many of the production users are actively
+funding and contributing work back to the project. Formal,
+consensus driven governance has been established (with semi-annual
+elections) which ensures the project serves the needs of it&#39;s
+constituents.</p><p>The OpenACS community would like to hear your comments and can
+help you in your endeavors with the system. Visit our <a class="ulink" href="http://openacs.org/" target="_top">web site</a> and
+feel free to <a class="ulink" href="http://openacs.org/forums/" target="_top">ask questions or provide feedback</a>.</p>
+</div>
+<include src="/packages/acs-core-docs/lib/navfooter"
+			leftLink="general-documents" leftLabel="Prev" leftTitle="
+Chapter 1. High level information: What is
+OpenACS?"
+			rightLink="release-notes" rightLabel="Next" rightTitle="OpenACS Release Notes"
+			homeLink="index" homeLabel="Home" 
+			upLink="general-documents" upLabel="Up"> 
+		    
\ No newline at end of file
Index: openacs-4/packages/acs-core-docs/www/openacs.adp
===================================================================
RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/openacs.adp,v
diff -u -r1.4.2.10 -r1.4.2.11
--- openacs-4/packages/acs-core-docs/www/openacs.adp	13 Jul 2023 12:43:21 -0000	1.4.2.10
+++ openacs-4/packages/acs-core-docs/www/openacs.adp	1 Aug 2024 08:03:40 -0000	1.4.2.11
@@ -336,7 +336,7 @@
 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="idp105548897848392" id="idp105548897848392"></a><pre class="screen">
+ANALYZE</code> every day.</p><a class="indexterm" name="id4941" id="id4941"></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
@@ -370,7 +370,7 @@
 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="idp105548897859784" id="idp105548897859784"></a><pre class="screen">
+Open it in an editor to adjust the parameters.</p><a class="indexterm" name="id4967" id="id4967"></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>
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.54.2.7 -r1.54.2.8
--- openacs-4/packages/acs-core-docs/www/openacs.html	13 Jul 2023 12:43:21 -0000	1.54.2.7
+++ openacs-4/packages/acs-core-docs/www/openacs.html	1 Aug 2024 08:03:40 -0000	1.54.2.8
@@ -237,7 +237,7 @@
 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 class="listitem"><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="idp105548897848392"></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 class="listitem"><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="id4941"></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>
 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,
@@ -250,7 +250,7 @@
 	  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="idp105548897859784"></a><pre class="screen">[root root]# <strong class="userinput"><code>su - <span class="replaceable"><span class="replaceable">$OPENACS_SERVICE_NAME</span></span></code></strong>
+	   Open it in an editor to adjust the parameters.</p><a class="indexterm" name="id4967"></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>
 </pre><p>
Index: openacs-4/packages/acs-core-docs/www/packages.adp
===================================================================
RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/packages.adp,v
diff -u -r1.7.2.10 -r1.7.2.11
--- openacs-4/packages/acs-core-docs/www/packages.adp	13 Jul 2023 12:43:21 -0000	1.7.2.10
+++ openacs-4/packages/acs-core-docs/www/packages.adp	1 Aug 2024 08:03:40 -0000	1.7.2.11
@@ -25,7 +25,7 @@
 <div class="titlepage"><div><div><h3 class="title">
 <a name="server-file-layout" id="server-file-layout"></a>Server file layout</h3></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="idp105548969018568" id="idp105548969018568"></a><p class="title"><strong>Figure 11.1. Server file layout
+<a name="id1413" id="id1413"></a><p class="title"><strong>Figure 11.1. Server file layout
 diagram</strong></p><div class="figure-contents"><pre class="programlisting">
 ROOT/
     bin/
@@ -65,7 +65,7 @@
 <a class="indexterm" name="baby" id="baby"></a> To illustrate
 the general structure of a package, let&#39;s see what the package
 for the "notes" application should look like.</p><div class="figure">
-<a name="idp105548969023688" id="idp105548969023688"></a><p class="title"><strong>Figure 11.2. Package file layout
+<a name="id1414" id="id1414"></a><p class="title"><strong>Figure 11.2. Package file layout
 diagram</strong></p><div class="figure-contents"><pre class="programlisting">
 ROOT/
   +-- packages/    APM Root
@@ -136,7 +136,7 @@
 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="idp105548969028424" id="idp105548969028424"></a><p class="title"><strong>Table 11.1. Package
+<a name="id1419" id="id1419"></a><p class="title"><strong>Table 11.1. Package
 files</strong></p><div class="table-contents"><table class="table" summary="Package files" cellspacing="0" border="1">
 <colgroup>
 <col><col><col>
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.57.2.8 -r1.57.2.9
--- openacs-4/packages/acs-core-docs/www/packages.html	13 Jul 2023 12:43:21 -0000	1.57.2.8
+++ openacs-4/packages/acs-core-docs/www/packages.html	1 Aug 2024 08:03:40 -0000	1.57.2.9
@@ -13,7 +13,7 @@
     </p></div><div class="sect2"><div class="titlepage"><div><div><h3 class="title"><a name="server-file-layout"></a>Server file layout</h3></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="idp105548969018568"></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="id1413"></a><p class="title"><b>Figure 11.1. Server file layout diagram</b></p><div class="figure-contents"><pre class="programlisting">
 ROOT/
     bin/
         Various executables and scripts for server maintenance.
@@ -51,7 +51,7 @@
       <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="idp105548969023688"></a><p class="title"><b>Figure 11.2. Package file layout diagram</b></p><div class="figure-contents"><pre class="programlisting">
+    </p><div class="figure"><a name="id1414"></a><p class="title"><b>Figure 11.2. Package file layout diagram</b></p><div class="figure-contents"><pre class="programlisting">
 ROOT/
   +-- packages/    APM Root
         |
@@ -124,7 +124,7 @@
       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="idp105548969028424"></a><p class="title"><b>Table 11.1. Package files</b></p><div class="table-contents"><table class="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="id1419"></a><p class="title"><b>Table 11.1. Package files</b></p><div class="table-contents"><table class="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>
Index: openacs-4/packages/acs-core-docs/www/parties.adp
===================================================================
RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/parties.adp,v
diff -u -r1.4.2.7 -r1.4.2.8
--- openacs-4/packages/acs-core-docs/www/parties.adp	13 Jul 2023 12:43:22 -0000	1.4.2.7
+++ openacs-4/packages/acs-core-docs/www/parties.adp	1 Aug 2024 08:03:40 -0000	1.4.2.8
@@ -122,7 +122,7 @@
 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:
 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
+modeled 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 common in administrative
 practices, and do not follow basic set theory rules. If A is a
@@ -322,8 +322,8 @@
 a membership relation is an ordinary acs object with <a class="ulink" href="object-identity" target="_top">object
 identity</a>, it is as easy to extend the membership relation to
 store extra information as it is to extend the users table or the
-groups table.</p><div class="cvstag">($&zwnj;Id: parties.xml,v 1.10.2.2 2023/03/28
-11:20:36 antoniop Exp $)</div>
+groups table.</p><div class="cvstag">($&zwnj;Id: parties.xml,v 1.10.2.3 2024/02/05
+15:35:07 gustafn Exp $)</div>
 </div>
 </div>
 <include src="/packages/acs-core-docs/lib/navfooter"
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.54.2.8 -r1.54.2.9
--- openacs-4/packages/acs-core-docs/www/parties.html	13 Jul 2023 12:43:22 -0000	1.54.2.8
+++ openacs-4/packages/acs-core-docs/www/parties.html	1 Aug 2024 08:03:40 -0000	1.54.2.9
@@ -128,7 +128,7 @@
 </p><p><span class="strong"><strong>Group Relations</strong></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
+world can be modeled 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
 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
Index: openacs-4/packages/acs-core-docs/www/permissions-design.adp
===================================================================
RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/permissions-design.adp,v
diff -u -r1.4.2.6 -r1.4.2.7
--- openacs-4/packages/acs-core-docs/www/permissions-design.adp	13 Jul 2023 12:43:22 -0000	1.4.2.6
+++ openacs-4/packages/acs-core-docs/www/permissions-design.adp	1 Aug 2024 08:03:41 -0000	1.4.2.7
@@ -57,7 +57,7 @@
 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
+OpenACS 4 to provide a unified, consistent permission system that
 both programmers and administrators can readily use.</p>
 </div><div class="sect2">
 <div class="titlepage"><div><div><h3 class="title">
@@ -130,7 +130,7 @@
 </div><div class="sect2">
 <div class="titlepage"><div><div><h3 class="title">
 <a name="permissions-design-transactions" id="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 class="itemizedlist" style="list-style-type: disc;">
+permission system fall:</p><div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc;">
 <li class="listitem"><p>Modification of methods and privileges</p></li><li class="listitem"><p>Modification of permissions</p></li><li class="listitem"><p>Queries on permissions</p></li>
 </ul></div><p>
 <span class="strong"><strong>"Modification of methods and
@@ -173,7 +173,7 @@
 This is done by querying against <code class="computeroutput">acs_permissions</code>.</p>
 </div><div class="sect2">
 <div class="titlepage"><div><div><h3 class="title">
-<a name="permissions-design-api" id="permissions-design-api"></a>API</h3></div></div></div><p>The API to the permissions system consists of a few well-known
+<a name="permissions-design-api" id="permissions-design-api"></a>API</h3></div></div></div><p>The API to the permission 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
@@ -217,7 +217,7 @@
 </pre><p>These procedures are defined in <code class="computeroutput">acs-permissions-procs.tcl</code>.</p>
 </div><div class="sect2">
 <div class="titlepage"><div><div><h3 class="title">
-<a name="permissions-design-ui" id="permissions-design-ui"></a>User Interface</h3></div></div></div><p>All users of the permissions system are the same at the
+<a name="permissions-design-ui" id="permissions-design-ui"></a>User Interface</h3></div></div></div><p>All users of the permission system are the same at the
 user-interface level. If you have the <code class="computeroutput">administer_privileges</code> 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
@@ -235,7 +235,7 @@
 permissions UI, outlined below.</p>
 </div><div class="sect2">
 <div class="titlepage"><div><div><h3 class="title">
-<a name="permissions-design-configure" id="permissions-design-configure"></a>Configuration/Parameters</h3></div></div></div><p>There are no configuration options for the permissions
+<a name="permissions-design-configure" id="permissions-design-configure"></a>Configuration/Parameters</h3></div></div></div><p>There are no configuration options for the permission
 system.</p>
 </div><div class="sect2">
 <div class="titlepage"><div><div><h3 class="title">
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.36.2.2 -r1.36.2.3
--- openacs-4/packages/acs-core-docs/www/permissions-design.html	3 Sep 2021 09:15:22 -0000	1.36.2.2
+++ openacs-4/packages/acs-core-docs/www/permissions-design.html	1 Aug 2024 08:03:41 -0000	1.36.2.3
@@ -32,7 +32,7 @@
 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
+consistent permission system that both programmers and administrators can
 readily use.</p></div><div class="sect2"><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"><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
 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
@@ -94,7 +94,7 @@
 <code class="computeroutput">acs_privilege_hierarchy</code>)</p></li><li class="listitem"><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"><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 class="itemizedlist" style="list-style-type: disc; "><li class="listitem"><p>Modification of methods and privileges</p></li><li class="listitem"><p>Modification of permissions</p></li><li class="listitem"><p>Queries on permissions</p></li></ul></div><p><span class="strong"><strong>"Modification of methods and privileges."</strong></span> This
+permission system fall:</p><div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem"><p>Modification of methods and privileges</p></li><li class="listitem"><p>Modification of permissions</p></li><li class="listitem"><p>Queries on permissions</p></li></ul></div><p><span class="strong"><strong>"Modification of methods and privileges."</strong></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
@@ -125,7 +125,7 @@
 against <code class="computeroutput">acs_object_party_method_map</code>, 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"><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,
+by querying against <code class="computeroutput">acs_permissions</code>.</p></div><div class="sect2"><div class="titlepage"><div><div><h3 class="title"><a name="permissions-design-api"></a>API</h3></div></div></div><p>The API to the permission 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
 system. At installation time, a package will add to these three tables to
@@ -159,7 +159,7 @@
 permission::permission_p -object_id $object_id -party_id $user_id -privilege $method
 </pre><p>If the <code class="computeroutput">user_id</code> 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">
 permission::require_permission -object_id $object_id -privilege $method
-</pre><p>These procedures are defined in <code class="computeroutput">acs-permissions-procs.tcl</code>.</p></div><div class="sect2"><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
+</pre><p>These procedures are defined in <code class="computeroutput">acs-permissions-procs.tcl</code>.</p></div><div class="sect2"><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 permission system are the same at the user-interface
 level. If you have the <code class="computeroutput">administer_privileges</code> 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,
@@ -171,7 +171,7 @@
 one object" 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"><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"><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"><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 permission system.</p></div><div class="sect2"><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
 be in the UI:</p><div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem"><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 class="listitem"><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
Index: openacs-4/packages/acs-core-docs/www/permissions-requirements.adp
===================================================================
RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/permissions-requirements.adp,v
diff -u -r1.4.2.5 -r1.4.2.6
--- openacs-4/packages/acs-core-docs/www/permissions-requirements.adp	13 Jul 2023 12:43:22 -0000	1.4.2.5
+++ openacs-4/packages/acs-core-docs/www/permissions-requirements.adp	1 Aug 2024 08:03:41 -0000	1.4.2.6
@@ -44,7 +44,7 @@
 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
+OpenACS 4 to provide a unified, consistent permission system that
 both programmers and administrators can readily use.</p>
 </div><div class="sect2">
 <div class="titlepage"><div><div><h3 class="title">
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.36.2.1 -r1.36.2.2
--- openacs-4/packages/acs-core-docs/www/permissions-requirements.html	2 Mar 2019 19:30:05 -0000	1.36.2.1
+++ openacs-4/packages/acs-core-docs/www/permissions-requirements.html	1 Aug 2024 08:03:41 -0000	1.36.2.2
@@ -24,7 +24,7 @@
 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
+consistent permission system that both programmers and administrators can
 readily use.</p></div><div class="sect2"><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
 developers to readily handle access control in their applications. The second
 piece of the system is a UI meant primarily for (subsite) administrators to
Index: openacs-4/packages/acs-core-docs/www/permissions-tediously-explained.adp
===================================================================
RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/permissions-tediously-explained.adp,v
diff -u -r1.4.2.9 -r1.4.2.10
--- openacs-4/packages/acs-core-docs/www/permissions-tediously-explained.adp	13 Jul 2023 12:43:22 -0000	1.4.2.9
+++ openacs-4/packages/acs-core-docs/www/permissions-tediously-explained.adp	1 Aug 2024 08:03:41 -0000	1.4.2.10
@@ -14,13 +14,13 @@
 Roberto Mello</p><p>The code has been modified since this document was written so it
 is now out of date. See <a class="ulink" href="http://openacs.org/forums/message-view?message_id=121807" target="_top">this forum thread</a>.</p><div class="sect2">
 <div class="titlepage"><div><div><h3 class="title">
-<a name="permissions-tedious-overview" id="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>The general permissions system has a flexible (and relatively
+<a name="permissions-tedious-overview" id="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>The general permission 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 weird ways.
 This writeup is the result of my running into such a piece of code
 and trying to understand exactly what went wrong. It is geared
-towards developers who understand the general permissions system to
+towards developers who understand the general permission system to
 the extent that is described in the <a class="ulink" href="permissions" target="_top">Groups, Context, Permissions
 documentation</a>, but who have not had the opportunity to take a
 long, careful look at the system internals.</p><p>In OpenACS, most of the interesting tables are expected to
@@ -55,7 +55,7 @@
 OpenACS object system needs to have an entry in the <code class="computeroutput">acs_objects</code>. 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 powerful capability is the general permissions system.</p><p>At the heart of the permission system are two tables:
+of this powerful capability is the general permission 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>.</p><a name="acs_privileges" id="acs_privileges"></a><pre class="programlisting">
   create table <span class="bold"><strong>acs_privileges</strong></span> (
       privilege           varchar2(100) not null
@@ -115,7 +115,7 @@
 </tbody>
 </table></div><p>Although quite feasible, this approach fails to take advantage
 of the fact that objects in the system are commonly organized
-hierarchally, and permissions usually follow the hierarchical
+hierarchically, and permissions usually follow the hierarchical
 structure, so that if user <span class="emphasis"><em>X</em></span>
 has the <span class="emphasis"><em>read</em></span> privilege on
 object <span class="emphasis"><em>A</em></span>, she typically also
@@ -130,7 +130,7 @@
 <a name="permissions-tedious-context-hierarchy" id="permissions-tedious-context-hierarchy"></a>Context
 Hierarchy</h3></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="idp105548965398856" id="idp105548965398856"></a><p class="title"><strong>Table 11.2. Context Hierarchy
+<a name="id1420" id="id1420"></a><p class="title"><strong>Table 11.2. Context Hierarchy
 Example</strong></p><div class="table-contents"><table class="table" summary="Context Hierarchy Example" cellspacing="0" border="1">
 <colgroup>
 <col align="center" class="c1"><col align="center" class="c2"><col align="center" class="c3">
@@ -156,7 +156,7 @@
 </table></div>
 </div><br class="table-break"><p>This can be represented in the <a class="xref" href="permissions-tediously-explained">acs_objects</a>
 table by the following entries:</p><div class="table">
-<a name="idp105548965382600" id="idp105548965382600"></a><p class="title"><strong>Table 11.3. acs_objects example
+<a name="id1421" id="id1421"></a><p class="title"><strong>Table 11.3. acs_objects example
 data</strong></p><div class="table-contents"><table class="table" summary="acs_objects example data" cellspacing="0" border="1">
 <colgroup>
 <col align="center" class="c1"><col align="center" class="c2">
@@ -393,7 +393,7 @@
 context hierarchy.</p>
 </div><div class="sect2">
 <div class="titlepage"><div><div><h3 class="title">
-<a name="permissions-tedious-party-hierarchy" id="permissions-tedious-party-hierarchy"></a>Party Hierarchy</h3></div></div></div><p>Now for the third hierarchy playing a promiment role in the
+<a name="permissions-tedious-party-hierarchy" id="permissions-tedious-party-hierarchy"></a>Party Hierarchy</h3></div></div></div><p>Now for the third hierarchy playing a prominent role in the
 permission system. The party data model is set up as follows.</p><div class="informaltable"><table class="informaltable" cellspacing="0" border="1">
 <colgroup>
 <col align="center" class="c1"><col align="center" class="c2">
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.49.2.7 -r1.49.2.8
--- openacs-4/packages/acs-core-docs/www/permissions-tediously-explained.html	13 Jul 2023 12:43:22 -0000	1.49.2.7
+++ openacs-4/packages/acs-core-docs/www/permissions-tediously-explained.html	1 Aug 2024 08:03:41 -0000	1.49.2.8
@@ -6,13 +6,12 @@
    (<code class="computeroutput">privilege</code>) on which object
    (<code class="computeroutput">object_id</code>).
    </strong></span></p><p>
-      The general permissions system has a flexible (and relatively complex) data model in OpenACS.
+      The general permission 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
       weird ways. This writeup is the result of my running into such a piece
       of code and trying to understand exactly what went wrong.
-      It is geared towards developers who understand the general permissions
-      system to the extent that is described in the 
+      It is geared towards developers who understand the general permission system to the extent that is described in the 
       <a class="ulink" href="permissions.html" target="_top">
       Groups, Context, Permissions documentation</a>,
       but who have not had the opportunity to take a long, careful look at the
@@ -51,7 +50,7 @@
       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
-      powerful capability is the general permissions system. 
+      powerful capability is the general permission 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>. 
@@ -92,7 +91,7 @@
       entries of the form: 
     </p><div class="informaltable"><table class="informaltable" cellspacing="0" border="1"><colgroup><col align="center" class="c1"><col align="center" class="c2"><col align="center" class="c3"></colgroup><thead><tr><th align="center">object_id</th><th align="center">grantee_id</th><th align="center">privilege</th></tr></thead><tbody><tr><td align="center">object_id_1</td><td align="center">user_id_1</td><td align="center">'read'</td></tr><tr><td align="center">object_id_1</td><td align="center">user_id_2</td><td align="center">'read'</td></tr><tr><td colspan="3" align="center">...</td></tr><tr><td align="center">object_id_1</td><td align="center">user_id_n</td><td align="center">'read'</td></tr><tr><td align="center">object_id_2</td><td align="center">user_id_1</td><td align="center">'read'</td></tr><tr><td align="center">object_id_2</td><td align="center">user_id_2</td><td align="center">'read'</td></tr><tr><td colspan="3" align="center">...</td></tr><tr><td align="center">object_id_2</td><td align="center">user_id_n</td><td align="center">'read'</td></tr><tr><td colspan="3" align="center">...</td></tr><tr><td colspan="3" align="center">...</td></tr><tr><td align="center">object_id_m</td><td align="center">user_id_1</td><td align="center">'read'</td></tr><tr><td align="center">object_id_m</td><td align="center">user_id_2</td><td align="center">'read'</td></tr><tr><td colspan="3" align="center">...</td></tr><tr><td align="center">object_id_m</td><td align="center">user_id_n</td><td align="center">'read'</td></tr></tbody></table></div><p>
       Although quite feasible, this approach fails to take advantage of the fact
-      that objects in the system are commonly organized hierarchally,
+      that objects in the system are commonly organized hierarchically,
       and permissions usually follow the hierarchical structure, so that if user
       <span class="emphasis"><em>X</em></span> has the <span class="emphasis"><em>read</em></span> privilege on object <span class="emphasis"><em>A</em></span>, she typically
       also has the <span class="emphasis"><em>read</em></span> privilege on all objects attached under <span class="emphasis"><em>A</em></span>.
@@ -105,7 +104,7 @@
     </p></div><div class="sect2"><div class="titlepage"><div><div><h3 class="title"><a name="permissions-tedious-context-hierarchy"></a>Context Hierarchy</h3></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="idp105548965398856"></a><p class="title"><b>Table 11.2. Context Hierarchy Example</b></p><div class="table-contents"><table class="table" summary="Context Hierarchy Example" cellspacing="0" border="1"><colgroup><col align="center" class="c1"><col align="center" class="c2"><col align="center" class="c3"></colgroup><tbody><tr><td colspan="3" align="center">
+    </p><div class="table"><a name="id1420"></a><p class="title"><b>Table 11.2. Context Hierarchy Example</b></p><div class="table-contents"><table class="table" summary="Context Hierarchy Example" cellspacing="0" border="1"><colgroup><col align="center" class="c1"><col align="center" class="c2"><col align="center" class="c3"></colgroup><tbody><tr><td colspan="3" align="center">
 	      <span class="bold"><strong>A</strong></span>
 	      <p>
   	        <code class="computeroutput">object_id=10</code>
@@ -139,7 +138,7 @@
       This can be represented in the 
       <a class="xref" href="permissions-tediously-explained.html#acs_objects">acs_objects</a> table
       by the following entries: 
-    </p><div class="table"><a name="idp105548965382600"></a><p class="title"><b>Table 11.3. acs_objects example data</b></p><div class="table-contents"><table class="table" summary="acs_objects example data" cellspacing="0" border="1"><colgroup><col align="center" class="c1"><col align="center" class="c2"></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="id1421"></a><p class="title"><b>Table 11.3. acs_objects example data</b></p><div class="table-contents"><table class="table" summary="acs_objects example data" cellspacing="0" border="1"><colgroup><col align="center" class="c1"><col align="center" class="c2"></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>
       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 class="ulink" href="http://www.oradoc.com/ora817/server.817/a85397/expressi.htm#1023748" target="_top">CONNECT BY</a> query,
@@ -324,7 +323,7 @@
       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"><div class="titlepage"><div><div><h3 class="title"><a name="permissions-tedious-party-hierarchy"></a>Party Hierarchy</h3></div></div></div><p>
-      Now for the third hierarchy playing a promiment role in the permission system. The party
+      Now for the third hierarchy playing a prominent role in the permission system. The party
       data model is set up as follows. 
     </p><div class="informaltable"><table class="informaltable" cellspacing="0" border="1"><colgroup><col align="center" class="c1"><col align="center" class="c2"></colgroup><tbody><tr><td colspan="2" align="center">
 	      <a class="xref" href="permissions-tediously-explained.html#tedious-parties">parties</a>
Index: openacs-4/packages/acs-core-docs/www/permissions.adp
===================================================================
RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/permissions.adp,v
diff -u -r1.4.2.6 -r1.4.2.7
--- openacs-4/packages/acs-core-docs/www/permissions.adp	13 Jul 2023 12:43:22 -0000	1.4.2.6
+++ openacs-4/packages/acs-core-docs/www/permissions.adp	1 Aug 2024 08:03:41 -0000	1.4.2.7
@@ -18,7 +18,7 @@
 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 PL/SQL or Tcl interface. The permissions
+access-controlled via a PL/SQL or Tcl interface. The permission
 system manages a data model that then allows scripts to check
 permissions using another API call.</p><p>Although object level permissions seems appropriate, no
 developer or administrator wants to <span class="emphasis"><em>explicitly</em></span> set access control rights for
@@ -29,7 +29,7 @@
 applications to group objects 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>
+they fit together with the permission system.</p>
 </div><div class="sect2">
 <div class="titlepage"><div><div><h3 class="title">
 <a name="permissions-groups" id="permissions-groups"></a>Groups</h3></div></div></div><p>OpenACS 5.9.0 has an abstraction called a <span class="emphasis"><em>party</em></span>. Parties have a recursive
@@ -71,8 +71,8 @@
 Design</a> for more details.</p>
 </div><div class="sect2">
 <div class="titlepage"><div><div><h3 class="title">
-<a name="permissions-permissions" id="permissions-permissions"></a>Permissions</h3></div></div></div><p>NOTE: Much more detailed information about the permissions
-system and how to use it is available in the <a class="xref" href="permissions-tediously-explained" title="OpenACS Permissions Tediously Explained">OpenACS Permissions
+<a name="permissions-permissions" id="permissions-permissions"></a>Permissions</h3></div></div></div><p>NOTE: Much more detailed information about the permission system
+and how to use it is available in the <a class="xref" href="permissions-tediously-explained" title="OpenACS Permissions Tediously Explained">OpenACS Permissions
 Tediously Explained</a> document.</p><p>The permissions data model is a mapping between <span class="emphasis"><em>privileges</em></span>, parties and objects. Parties
 and objects have already been discussed. Now we focus on
 privileges.</p><p>In OpenACS, a privilege describes the right to perform some
@@ -196,8 +196,8 @@
 user rights.</p></li><li class="listitem"><p>The Context hierarchy allows you to define organize default
 permissions in a hierarchical fashion.</p></li>
 </ol></div><p>A PL/SQL or Tcl API is then used to check permissions in
-application pages.</p><div class="cvstag">($&zwnj;Id: permissions.xml,v 1.18.2.3 2021/01/05
-17:33:40 gustafn Exp $)</div>
+application pages.</p><div class="cvstag">($&zwnj;Id: permissions.xml,v 1.18.2.4 2024/02/05
+15:35:07 gustafn Exp $)</div>
 </div>
 </div>
 <include src="/packages/acs-core-docs/lib/navfooter"
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.53.2.8 -r1.53.2.9
--- openacs-4/packages/acs-core-docs/www/permissions.html	13 Jul 2023 12:43:22 -0000	1.53.2.8
+++ openacs-4/packages/acs-core-docs/www/permissions.html	1 Aug 2024 08:03:41 -0000	1.53.2.9
@@ -7,7 +7,7 @@
 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
-PL/SQL or Tcl interface. The permissions system manages a data model
+PL/SQL or Tcl interface. The permission system manages a data model
 that then allows scripts to check permissions using another API call.
 </p><p>
 Although object level permissions seems appropriate, no developer or
@@ -19,7 +19,7 @@
 <span class="emphasis"><em>object context</em></span>, which allows applications to group objects
 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.
+permission system.
 </p></div><div class="sect2"><div class="titlepage"><div><div><h3 class="title"><a name="permissions-groups"></a>Groups</h3></div></div></div><p>
 OpenACS 5.9.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
@@ -72,7 +72,7 @@
 The full details of the groups data model is beyond the scope of this
 tutorial. See <a class="xref" href="parties.html" title="Parties in OpenACS">Parties in OpenACS</a> or <a class="xref" href="groups-design.html" title="Groups Design">OpenACS 4 Groups Design</a> for more details.
 </p></div><div class="sect2"><div class="titlepage"><div><div><h3 class="title"><a name="permissions-permissions"></a>Permissions</h3></div></div></div><p>
-  NOTE: Much more detailed information about the permissions system
+  NOTE: Much more detailed information about the permission system
   and how to use it is available in the
   <a class="xref" href="permissions-tediously-explained.html" title="OpenACS Permissions Tediously Explained">OpenACS Permissions Tediously Explained</a> document.
 </p><p>
Index: openacs-4/packages/acs-core-docs/www/psgml-for-emacs.adp
===================================================================
RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/psgml-for-emacs.adp,v
diff -u -r1.4.2.9 -r1.4.2.10
--- openacs-4/packages/acs-core-docs/www/psgml-for-emacs.adp	13 Jul 2023 12:43:22 -0000	1.4.2.9
+++ openacs-4/packages/acs-core-docs/www/psgml-for-emacs.adp	1 Aug 2024 08:03:41 -0000	1.4.2.10
@@ -12,11 +12,12 @@
 <div class="titlepage"><div><div><h2 class="title" style="clear: both">
 <a name="psgml-for-emacs" id="psgml-for-emacs"></a>Add PSGML commands to emacs init file
 (OPTIONAL)</h2></div></div></div><p>
-<a class="indexterm" name="idp105548967270856" id="idp105548967270856"></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">
+<a class="indexterm" name="id7126" id="id7126"></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.9.0/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]# 
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.44.2.7 -r1.44.2.8
--- openacs-4/packages/acs-core-docs/www/psgml-for-emacs.html	13 Jul 2023 12:43:22 -0000	1.44.2.7
+++ openacs-4/packages/acs-core-docs/www/psgml-for-emacs.html	1 Aug 2024 08:03:41 -0000	1.44.2.8
@@ -1,5 +1,5 @@
 <!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=UTF-8"><title>Add PSGML commands to emacs init file (OPTIONAL)</title><link rel="stylesheet" type="text/css" href="openacs.css"><meta name="generator" content="DocBook XSL Stylesheets Vsnapshot"><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)"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><a href="http://openacs.org"><img src="/doc/images/alex.jpg" style="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"><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="idp105548967270856"></a>
+<html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><title>Add PSGML commands to emacs init file (OPTIONAL)</title><link rel="stylesheet" type="text/css" href="openacs.css"><meta name="generator" content="DocBook XSL Stylesheets Vsnapshot"><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)"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><a href="http://openacs.org"><img src="/doc/images/alex.jpg" style="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"><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="id7126"></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
Index: openacs-4/packages/acs-core-docs/www/release-notes.adp
===================================================================
RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/release-notes.adp,v
diff -u -r1.8.2.12 -r1.8.2.13
--- openacs-4/packages/acs-core-docs/www/release-notes.adp	13 Jul 2023 12:43:22 -0000	1.8.2.12
+++ openacs-4/packages/acs-core-docs/www/release-notes.adp	1 Aug 2024 08:03:41 -0000	1.8.2.13
@@ -12,6 +12,126 @@
 <div class="titlepage"><div><div><h2 class="title" style="clear: both">
 <a name="release-notes" id="release-notes"></a>OpenACS Release Notes</h2></div></div></div><div class="sect2">
 <div class="titlepage"><div><div><h3 class="title">
+<a name="release-notes-5-10-1" id="release-notes-5-10-1"></a>Release 5.10.1</h3></div></div></div><div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc;">
+<li class="listitem"><p>The release of OpenACS 5.10.1 contains the 97 packages of the
+oacs-5-10 branch. These packages include the OpenACS core packages,
+the major application packages (e.g. most the ones used on
+OpenACS.org), and DotLRN 2.10.1.</p></li><li class="listitem">
+<p>Improved templating</p><div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: circle;">
+<li class="listitem"><p>Client-side double click prevention</p></li><li class="listitem"><p>Support for generic icon names, which can be mapped differently
+depending on the installed packages and themes: The generic names
+are supported via <code class="computeroutput">&lt;adp:icon
+name="NAME" title=....&gt;</code>. By using this feature,
+one can use font-based icons (like e.g. glyphicons of Bootstrap5,
+bootstrap-icons, fa-icons, ...) instead of the old-style .gif and
+.png images. This makes the appearance more uniform, has better
+resizing behavior, and works more efficiently (fewer requests for
+embedded resources). Most of the occurrences of the old-style
+images in standard core and non-core packages in oacs-5-10 are
+already replaced.</p></li><li class="listitem"><p>Support for listing registered URNs</p></li>
+</ul></div>
+</li><li class="listitem">
+<p>Security improvements</p><div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: circle;">
+<li class="listitem"><p>Stronger password hashes (<code class="computeroutput">scram-sha-256</code> hash in addition to the
+classical <code class="computeroutput">salted-sha1</code>)</p></li><li class="listitem">
+<p>Added optional CSP rules based on MIME types. This is important
+for user-contributed content. When users upload e.g. SVG-files to
+the file storage, and the content is served from there, it poses a
+potential security hole. One can now define an additional parameter
+called <code class="computeroutput">StaticCSP</code> in the section
+<code class="computeroutput">ns/server/$server/acs</code> of the
+OpenACS configuration file to deactivate execution of script files
+from static content.</p><pre class="programlisting">
+                                ns_param StaticCSP {
+                                image/svg+xml "script-src 'none'"
+                                }
+                    
+</pre>
+</li><li class="listitem">
+<p>Cookie-Namespace: When multiple OpenACS instances are served
+from the same domain name, the same cookies (e.g. ad_session_id,
+ad_login, ...) are set to all servers. For sensible cases, a
+cookie-namespace can be used, which can be used as a replacement of
+the traditional <code class="computeroutput">ad_</code> prefix.
+This can be as well set in the section <code class="computeroutput">ns/server/$server/acs</code> of the OpenACS
+configuration file:</p><pre class="programlisting">
+                                # Provide optionally a different cookie namespace
+                                # (used for prefixing OpenACS cookies)
+                                ns_param CookieNamespace "ad_"
+                    
+</pre>
+</li>
+</ul></div>
+</li><li class="listitem">
+<p>Further reduce divergence between Oracle and Postgres SQL.
+Target version of Oracle could be 12.*, as Extended support ends in
+2022 (see <a class="ulink" href="https://www.oracle.com/us/support/library/lifetime-support-technology-069183.pdf" target="_top">https://www.oracle.com/us/support/library/lifetime-support-technology-069183.pdf</a>)</p><div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: circle;">
+<li class="listitem"><p>limit / rownum -&gt; fetch first</p></li><li class="listitem"><p>use Postgres schemas for stored procedures so that they can be
+invoked with the same Oracle idiom</p></li>
+</ul></div>
+</li><li class="listitem">
+<p>Deprecated commands</p><div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: circle;">
+<li class="listitem"><p><code class="computeroutput">acs_message_id contract
+filter</code></p></li><li class="listitem"><p><code class="computeroutput">acs_privacy::*</code></p></li><li class="listitem"><p><code class="computeroutput">acs_tcl_vars_list_to_ns_set</code></p></li><li class="listitem"><p><code class="computeroutput">acs_tcl_vars_to_ns_set</code></p></li><li class="listitem"><p><code class="computeroutput">ad_apply</code></p></li><li class="listitem"><p><code class="computeroutput">ad_approval_system_inuse_p</code></p></li><li class="listitem"><p><code class="computeroutput">ad_dateentrywidget</code></p></li><li class="listitem"><p><code class="computeroutput">ad_db_select_widget</code></p></li><li class="listitem"><p><code class="computeroutput">ad_decorate_top</code></p></li><li class="listitem"><p><code class="computeroutput">ad_ns_set_to_tcl_vars</code></p></li><li class="listitem"><p><code class="computeroutput">ad_package_admin_home</code></p></li><li class="listitem"><p><code class="computeroutput">ad_parameter_all_values_as_list</code></p></li><li class="listitem"><p><code class="computeroutput">ad_user_class_description</code></p></li><li class="listitem"><p><code class="computeroutput">apm_file_type_keys</code></p></li><li class="listitem"><p><code class="computeroutput">application_group::child_application_groups</code></p></li><li class="listitem"><p><code class="computeroutput">attachments::root_folder_map_p</code></p></li><li class="listitem"><p><code class="computeroutput">bulk_mail::parameter</code></p></li><li class="listitem"><p><code class="computeroutput">bulk_mail::pretty_name</code></p></li><li class="listitem"><p><code class="computeroutput">calendar_portlet_display::get_url_stub</code></p></li><li class="listitem"><p><code class="computeroutput">calendar::adjust_date</code></p></li><li class="listitem"><p><code class="computeroutput">calendar::assign_permissions</code></p></li><li class="listitem"><p><code class="computeroutput">calendar::from_sql_datetime</code></p></li><li class="listitem"><p><code class="computeroutput">calendar::item::assign_permission</code></p></li><li class="listitem"><p><code class="computeroutput">calendar::make_datetime</code></p></li><li class="listitem"><p><code class="computeroutput">content::revision::update_attribute_index</code></p></li><li class="listitem"><p><code class="computeroutput">dotlrn_chat::add_portlet_helper</code></p></li><li class="listitem"><p><code class="computeroutput">dt_widget_*</code></p></li><li class="listitem"><p><code class="computeroutput">export_entire_form</code></p></li><li class="listitem"><p><code class="computeroutput">export_entire_form_as_url_vars</code></p></li><li class="listitem"><p><code class="computeroutput">export_ns_set_vars</code></p></li><li class="listitem"><p>
+<code class="computeroutput">f::*</code> API that cannot be
+replaced by a drop-in alternative</p></li><li class="listitem"><p><code class="computeroutput">forum::new_questions_allowed_p</code></p></li><li class="listitem"><p><code class="computeroutput">forum::new_questions_allow</code></p></li><li class="listitem"><p><code class="computeroutput">forum::new_questions_deny</code></p></li><li class="listitem"><p><code class="computeroutput">fs::add_created_version</code></p></li><li class="listitem"><p><code class="computeroutput">fs::get_archive_extension</code></p></li><li class="listitem"><p><code class="computeroutput">fs::get_folder_contents</code></p></li><li class="listitem"><p><code class="computeroutput">fs::item_editable_info</code></p></li><li class="listitem"><p><code class="computeroutput">fs::torrent::get_hashsum</code></p></li><li class="listitem"><p><code class="computeroutput">notification::get_delivery_method_id</code></p></li><li class="listitem"><p><code class="computeroutput">notification::get_interval_id</code></p></li><li class="listitem"><p><code class="computeroutput">oacs_util::vars_to_ns_set</code></p></li><li class="listitem"><p><code class="computeroutput">template::adp_levels</code></p></li><li class="listitem"><p><code class="computeroutput">template::form::export</code></p></li><li class="listitem"><p><code class="computeroutput">template::util::array_to_vars</code></p></li><li class="listitem"><p><code class="computeroutput">template::util::is_true</code></p></li><li class="listitem"><p><code class="computeroutput">template::util::list_to_array</code></p></li><li class="listitem"><p><code class="computeroutput">template::util::list_opts</code></p></li><li class="listitem"><p><code class="computeroutput">template::util::nvl</code></p></li><li class="listitem"><p><code class="computeroutput">template::util::tcl_to_sql_list</code></p></li><li class="listitem"><p><code class="computeroutput">template::util::set_to_list</code></p></li><li class="listitem"><p><code class="computeroutput">template::util::set_to_vars</code></p></li><li class="listitem"><p><code class="computeroutput">template::util::vars_to_array</code></p></li><li class="listitem"><p><code class="computeroutput">twt::server_url</code></p></li><li class="listitem"><p><code class="computeroutput">twt::user::create</code></p></li><li class="listitem"><p><code class="computeroutput">twt::user::delete</code></p></li><li class="listitem"><p><code class="computeroutput">util_AnsiDatetoPrettyDate</code></p></li><li class="listitem"><p><code class="computeroutput">util_commify_number</code></p></li><li class="listitem"><p><code class="computeroutput">util_get_current_url</code></p></li><li class="listitem"><p><code class="computeroutput">util_list_to_ns_set</code></p></li><li class="listitem"><p><code class="computeroutput">util_ns_set_to_list</code></p></li><li class="listitem"><p><code class="computeroutput">util_report_successful_library_load</code></p></li><li class="listitem"><p><code class="computeroutput">util_report_library_entry</code></p></li><li class="listitem"><p><code class="computeroutput">util::string_check_urlsafe</code></p></li><li class="listitem"><p>Color widget API</p></li><li class="listitem"><p>...</p></li><li class="listitem"><p>New proc <code class="computeroutput">ad_log_deprecated</code>:
+unified interface for logging deprecated usages The existing code
+used a larger variety of different messages to denote invocations
+of deprecated procs and other artifacts. <code class="computeroutput">ad_log_deprecated</code> provides a unified
+interface, and provides a usage hint what to use instead based on
+the API-doc definitions in the log-file.</p></li><li class="listitem"><p>Move deprecated code into separate files</p></li><li class="listitem"><p>Give people the chance to use OpenACS with <code class="computeroutput">WithDeprecatedCode</code> set to 0. When OpenACS
+is configured to omit loading of long deprecated code (<code class="computeroutput">WithDeprecatedCode</code> set to 0) files like
+deprecated-procs.tcl are not loaded. Therefore, these files should
+only contain code, which was deprecated at LEAST ONE RELEASE
+EARLIER, such that site admins have one release time to fix calls
+to deprecated code. This is especially important for public
+procs.</p></li>
+</ul></div>
+</li><li class="listitem">
+<p>General cleanup/maintenance</p><div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: circle;">
+<li class="listitem"><p>Modernization of Tcl idioms.</p></li><li class="listitem"><p>Compliance of files, proc names, ... to the naming
+conventions.</p></li><li class="listitem"><p>White space cleanup, indentation changes.</p></li><li class="listitem"><p>Improvement of public API documentation</p></li><li class="listitem"><p>Adjustment of proc protection levels (public, private)</p></li><li class="listitem"><p>Adjustment of log severity</p></li><li class="listitem"><p>Cleanup of obsolete files</p></li><li class="listitem"><p>Replacement of handcrafted forms by ad_form</p></li><li class="listitem"><p>Typo fixing</p></li><li class="listitem"><p>Editor hints</p></li><li class="listitem"><p>Replacement of deprecated calls</p></li><li class="listitem"><p>Addition of missing contracts</p></li><li class="listitem"><p>...</p></li>
+</ul></div>
+</li><li class="listitem">
+<p>New Packages:</p><div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: circle;">
+<li class="listitem"><p>openacs-bootstrap5: Bootstrap 5 theme for OpenACS</p></li><li class="listitem"><p>bootstrap-icons: Free, high-quality, open-source icon library
+with over 1,600 icons. Include them anyway you
+like&rdquo;”SVGs, SVG sprite, or web fonts. Use them
+with or without Bootstrap in any project</p></li><li class="listitem"><p>fa-icons: Free, high-quality, open-source icon library with over
+2,000 free icons. As of 2020, Font Awesome was used by 38% of sites
+that use third-party font scripts, placing Font Awesome in second
+place after Google Fonts</p></li><li class="listitem"><p>highcharts: The Highcharts library is a JavaScript and
+TypeScript package for producing data visualizations (line/bar/pie
+charts etc.). The OpenACS package offers support to load this
+library either via CDN or from a local installation (via acs-admin
+and global administration UI)</p></li>
+</ul></div>
+</li><li class="listitem"><p>Migrate to bootstrap 5. Bootstrap 3 reached EOL in 2019,
+Bootstrap 4 had EOL 2022. See <a class="ulink" href="https://github.com/twbs/release" target="_top">https://github.com/twbs/release</a>
+</p></li><li class="listitem"><p>Potential incompatibility with OpenACS 5.10.0:
+"permission::permission_p" returns Boolean values as
+"t" and "f" and not "1" and
+"0". Avoid literal comparisons of the result and use
+boolean tests available in Tcl/OpenACS.</p></li><li class="listitem"><p>Support for fresh installations on Oracle 19c.</p></li><li class="listitem"><p>Require NaviServer (i.e. drop AOLserver support). AOLserver
+cannot be compiled with the required modules with recent Tcl
+versions. Trying to backport NaviServer compatibility functions
+seems to be an overkill for the OpenACS project.</p></li><li class="listitem"><p>Require Tcl 8.6, XOTcl 2.1, PostgreSQL 11 (PostgreSQL 10 EOL:
+<a class="ulink" href="https://www.postgresql.org/support/versioning/" target="_top">November 2022</a>), tdom 0.9</p></li>
+</ul></div><p>Altogether, OpenACS 5.10.1 differs from OpenACS 5.10.0 by the
+following statistics</p><pre class="programlisting">
+            2886 files changed, 197060 insertions(+), 182613 deletions(-)
+        
+</pre><p>contributed by 6 committers (Antonio Pisano, Gustaf Neumann,
+Günter Ernst, Héctor Romojaro,
+Raúl Rodríguez, Thomas Renner) and
+additional 7 patch/bugfix providers (Felix
+Mödritscher, Frank Bergmann, Franz Penz, Markus Moser,
+Marty Israelsen, Monika Andergassen, Sebastian Scheder). All
+packages of the release were tested with PostgreSQL 13.* and Tcl
+8.6.*.</p><p>For more details, consult the <a class="ulink" href="http://openacs.org/changelogs/ChangeLog-5.10.1" target="_top">raw
+ChangeLog</a>.</p>
+</div><div class="sect2">
+<div class="titlepage"><div><div><h3 class="title">
 <a name="release-notes-5-10-0" id="release-notes-5-10-0"></a>Release 5.10.0</h3></div></div></div><div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc;">
 <li class="listitem"><p>The release of OpenACS 5.10.0 contains the 93 packages of the
 oacs-5-10 branch. These packages include the OpenACS core packages,
@@ -1194,20 +1314,22 @@
 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">($&zwnj;Id: release-notes.xml,v 1.39.2.7 2023/07/10
-08:36:09 gustafn Exp $)</div>
+</ul></div><div class="cvstag">($&zwnj;Id: release-notes.xml,v 1.39.2.8 2023/07/19
+11:49:32 hectorr Exp $)</div>
 </div><div class="sect2">
 <div class="titlepage"><div><div><h3 class="title">
-<a name="idp105548897762760" id="idp105548897762760"></a>Release 4.6.3</h3></div></div></div><p><a class="ulink" href="release-notes-4-6-3" target="_top">Release Notes for 4.6.3</a></p>
+<a name="id1338" id="id1338"></a>Release
+4.6.3</h3></div></div></div><p><a class="ulink" href="release-notes-4-6-3" target="_top">Release Notes for 4.6.3</a></p>
 </div><div class="sect2">
 <div class="titlepage"><div><div><h3 class="title">
-<a name="idp105548897764168" id="idp105548897764168"></a>Release 4.6.2</h3></div></div></div><p><a class="ulink" href="release-notes-4-6-2" target="_top">Release Notes for 4.6.2</a></p>
+<a name="id1339" id="id1339"></a>Release
+4.6.2</h3></div></div></div><p><a class="ulink" href="release-notes-4-6-2" target="_top">Release Notes for 4.6.2</a></p>
 </div><div class="sect2">
 <div class="titlepage"><div><div><h3 class="title">
-<a name="idp105548897765576" id="idp105548897765576"></a>Release 4.6</h3></div></div></div><p><a class="ulink" href="release-notes-4-6" target="_top">Release Notes for 4.6</a></p>
+<a name="id1340" id="id1340"></a>Release 4.6</h3></div></div></div><p><a class="ulink" href="release-notes-4-6" target="_top">Release Notes for 4.6</a></p>
 </div><div class="sect2">
 <div class="titlepage"><div><div><h3 class="title">
-<a name="idp105548897766984" id="idp105548897766984"></a>Release 4.5</h3></div></div></div><p><a class="ulink" href="release-notes-4-5" target="_top">Release Notes for 4.5</a></p>
+<a name="id1341" id="id1341"></a>Release 4.5</h3></div></div></div><p><a class="ulink" href="release-notes-4-5" target="_top">Release Notes for 4.5</a></p>
 </div>
 </div>
 <include src="/packages/acs-core-docs/lib/navfooter"
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.61.2.7 -r1.61.2.8
--- openacs-4/packages/acs-core-docs/www/release-notes.html	13 Jul 2023 12:43:22 -0000	1.61.2.7
+++ openacs-4/packages/acs-core-docs/www/release-notes.html	1 Aug 2024 08:03:41 -0000	1.61.2.8
@@ -1,5 +1,42 @@
 <!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=UTF-8"><title>OpenACS Release Notes</title><link rel="stylesheet" type="text/css" href="openacs.css"><meta name="generator" content="DocBook XSL Stylesheets Vsnapshot"><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"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><a href="http://openacs.org"><img src="/doc/images/alex.jpg" style="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"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="release-notes"></a>OpenACS Release Notes</h2></div></div></div><div class="sect2"><div class="titlepage"><div><div><h3 class="title"><a name="release-notes-5-10-0"></a>Release 5.10.0</h3></div></div></div><div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem"><p>
+<html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><title>OpenACS Release Notes</title><link rel="stylesheet" type="text/css" href="openacs.css"><meta name="generator" content="DocBook XSL Stylesheets Vsnapshot"><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"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><a href="http://openacs.org"><img src="/doc/images/alex.jpg" style="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"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="release-notes"></a>OpenACS Release Notes</h2></div></div></div><div class="sect2"><div class="titlepage"><div><div><h3 class="title"><a name="release-notes-5-10-1"></a>Release 5.10.1</h3></div></div></div><div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem"><p>
+                The release of OpenACS 5.10.1 contains the 97 packages of the oacs-5-10
+                branch.  These packages include the OpenACS core packages, the major
+                application packages (e.g. most the ones used on OpenACS.org), and
+                DotLRN 2.10.1. 
+        </p></li><li class="listitem"><p>Improved templating
+                </p><div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: circle; "><li class="listitem"><p>Client-side double click prevention</p></li><li class="listitem"><p>Support for generic icon names, which can be mapped differently depending on the installed packages and themes: The generic names are supported via <code class="computeroutput">&lt;adp:icon name="NAME" title=....&gt;</code>. By using this feature, one can use font-based icons (like e.g. glyphicons of Bootstrap5, bootstrap-icons, fa-icons, ...) instead of the old-style .gif and .png images. This makes the appearance more uniform, has better resizing behavior, and works more efficiently (fewer requests for embedded resources). Most of the occurrences of the old-style images in standard core and non-core packages in oacs-5-10 are already replaced.</p></li><li class="listitem"><p>Support for listing registered URNs</p></li></ul></div><p>
+        </p></li><li class="listitem"><p>Security improvements
+                </p><div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: circle; "><li class="listitem"><p>Stronger password hashes (<code class="computeroutput">scram-sha-256</code> hash in addition to the classical <code class="computeroutput">salted-sha1</code>)</p></li><li class="listitem"><p>Added optional CSP rules based on MIME types. This is important for user-contributed content. When users upload e.g. SVG-files to the file storage, and the content is served from there, it poses a potential security hole. One can now define an additional parameter called <code class="computeroutput">StaticCSP</code> in the section <code class="computeroutput">ns/server/$server/acs</code> of the OpenACS configuration file to deactivate execution of script files from static content.</p><pre class="programlisting">
+                                ns_param StaticCSP {
+                                image/svg+xml "script-src 'none'"
+                                }
+                    </pre></li><li class="listitem"><p>Cookie-Namespace: When multiple OpenACS instances are served from the same domain name, the same cookies (e.g. ad_session_id, ad_login, ...) are set to all servers. For sensible cases, a cookie-namespace can be used, which can be used as a replacement of the traditional <code class="computeroutput">ad_</code> prefix. This can be as well set in the section <code class="computeroutput">ns/server/$server/acs</code> of the OpenACS configuration file:</p><pre class="programlisting">
+                                # Provide optionally a different cookie namespace
+                                # (used for prefixing OpenACS cookies)
+                                ns_param CookieNamespace "ad_"
+                    </pre></li></ul></div><p>
+        </p></li><li class="listitem"><p>Further reduce divergence between Oracle and Postgres SQL. Target version of Oracle could be 12.*, as Extended support ends in 2022 (see <a class="ulink" href="https://www.oracle.com/us/support/library/lifetime-support-technology-069183.pdf" target="_top">https://www.oracle.com/us/support/library/lifetime-support-technology-069183.pdf</a>)
+                </p><div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: circle; "><li class="listitem"><p>limit / rownum -&gt; fetch first</p></li><li class="listitem"><p>use Postgres schemas for stored procedures so that they can be invoked with the same Oracle idiom</p></li></ul></div><p>
+        </p></li><li class="listitem"><p>Deprecated commands
+                </p><div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: circle; "><li class="listitem"><p><code class="computeroutput">acs_message_id contract filter</code></p></li><li class="listitem"><p><code class="computeroutput">acs_privacy::*</code></p></li><li class="listitem"><p><code class="computeroutput">acs_tcl_vars_list_to_ns_set</code></p></li><li class="listitem"><p><code class="computeroutput">acs_tcl_vars_to_ns_set</code></p></li><li class="listitem"><p><code class="computeroutput">ad_apply</code></p></li><li class="listitem"><p><code class="computeroutput">ad_approval_system_inuse_p</code></p></li><li class="listitem"><p><code class="computeroutput">ad_dateentrywidget</code></p></li><li class="listitem"><p><code class="computeroutput">ad_db_select_widget</code></p></li><li class="listitem"><p><code class="computeroutput">ad_decorate_top</code></p></li><li class="listitem"><p><code class="computeroutput">ad_ns_set_to_tcl_vars</code></p></li><li class="listitem"><p><code class="computeroutput">ad_package_admin_home</code></p></li><li class="listitem"><p><code class="computeroutput">ad_parameter_all_values_as_list</code></p></li><li class="listitem"><p><code class="computeroutput">ad_user_class_description</code></p></li><li class="listitem"><p><code class="computeroutput">apm_file_type_keys</code></p></li><li class="listitem"><p><code class="computeroutput">application_group::child_application_groups</code></p></li><li class="listitem"><p><code class="computeroutput">attachments::root_folder_map_p</code></p></li><li class="listitem"><p><code class="computeroutput">bulk_mail::parameter</code></p></li><li class="listitem"><p><code class="computeroutput">bulk_mail::pretty_name</code></p></li><li class="listitem"><p><code class="computeroutput">calendar_portlet_display::get_url_stub</code></p></li><li class="listitem"><p><code class="computeroutput">calendar::adjust_date</code></p></li><li class="listitem"><p><code class="computeroutput">calendar::assign_permissions</code></p></li><li class="listitem"><p><code class="computeroutput">calendar::from_sql_datetime</code></p></li><li class="listitem"><p><code class="computeroutput">calendar::item::assign_permission</code></p></li><li class="listitem"><p><code class="computeroutput">calendar::make_datetime</code></p></li><li class="listitem"><p><code class="computeroutput">content::revision::update_attribute_index</code></p></li><li class="listitem"><p><code class="computeroutput">dotlrn_chat::add_portlet_helper</code></p></li><li class="listitem"><p><code class="computeroutput">dt_widget_*</code></p></li><li class="listitem"><p><code class="computeroutput">export_entire_form</code></p></li><li class="listitem"><p><code class="computeroutput">export_entire_form_as_url_vars</code></p></li><li class="listitem"><p><code class="computeroutput">export_ns_set_vars</code></p></li><li class="listitem"><p><code class="computeroutput">f::*</code> API that cannot be replaced by a drop-in alternative</p></li><li class="listitem"><p><code class="computeroutput">forum::new_questions_allowed_p</code></p></li><li class="listitem"><p><code class="computeroutput">forum::new_questions_allow</code></p></li><li class="listitem"><p><code class="computeroutput">forum::new_questions_deny</code></p></li><li class="listitem"><p><code class="computeroutput">fs::add_created_version</code></p></li><li class="listitem"><p><code class="computeroutput">fs::get_archive_extension</code></p></li><li class="listitem"><p><code class="computeroutput">fs::get_folder_contents</code></p></li><li class="listitem"><p><code class="computeroutput">fs::item_editable_info</code></p></li><li class="listitem"><p><code class="computeroutput">fs::torrent::get_hashsum</code></p></li><li class="listitem"><p><code class="computeroutput">notification::get_delivery_method_id</code></p></li><li class="listitem"><p><code class="computeroutput">notification::get_interval_id</code></p></li><li class="listitem"><p><code class="computeroutput">oacs_util::vars_to_ns_set</code></p></li><li class="listitem"><p><code class="computeroutput">template::adp_levels</code></p></li><li class="listitem"><p><code class="computeroutput">template::form::export</code></p></li><li class="listitem"><p><code class="computeroutput">template::util::array_to_vars</code></p></li><li class="listitem"><p><code class="computeroutput">template::util::is_true</code></p></li><li class="listitem"><p><code class="computeroutput">template::util::list_to_array</code></p></li><li class="listitem"><p><code class="computeroutput">template::util::list_opts</code></p></li><li class="listitem"><p><code class="computeroutput">template::util::nvl</code></p></li><li class="listitem"><p><code class="computeroutput">template::util::tcl_to_sql_list</code></p></li><li class="listitem"><p><code class="computeroutput">template::util::set_to_list</code></p></li><li class="listitem"><p><code class="computeroutput">template::util::set_to_vars</code></p></li><li class="listitem"><p><code class="computeroutput">template::util::vars_to_array</code></p></li><li class="listitem"><p><code class="computeroutput">twt::server_url</code></p></li><li class="listitem"><p><code class="computeroutput">twt::user::create</code></p></li><li class="listitem"><p><code class="computeroutput">twt::user::delete</code></p></li><li class="listitem"><p><code class="computeroutput">util_AnsiDatetoPrettyDate</code></p></li><li class="listitem"><p><code class="computeroutput">util_commify_number</code></p></li><li class="listitem"><p><code class="computeroutput">util_get_current_url</code></p></li><li class="listitem"><p><code class="computeroutput">util_list_to_ns_set</code></p></li><li class="listitem"><p><code class="computeroutput">util_ns_set_to_list</code></p></li><li class="listitem"><p><code class="computeroutput">util_report_successful_library_load</code></p></li><li class="listitem"><p><code class="computeroutput">util_report_library_entry</code></p></li><li class="listitem"><p><code class="computeroutput">util::string_check_urlsafe</code></p></li><li class="listitem"><p>Color widget API</p></li><li class="listitem"><p>...</p></li><li class="listitem"><p>New proc <code class="computeroutput">ad_log_deprecated</code>: unified interface for logging deprecated usages  The existing code used a larger variety of different messages to denote invocations of deprecated procs and other artifacts. <code class="computeroutput">ad_log_deprecated</code> provides a unified interface, and provides a usage hint what to use instead based on the API-doc definitions in the log-file.</p></li><li class="listitem"><p>Move deprecated code into separate files</p></li><li class="listitem"><p>Give people the chance to use OpenACS with <code class="computeroutput">WithDeprecatedCode</code> set to 0. When OpenACS is configured to omit loading of long deprecated code (<code class="computeroutput">WithDeprecatedCode</code> set to 0) files like deprecated-procs.tcl are not loaded. Therefore, these files should only contain code, which was deprecated at LEAST ONE RELEASE EARLIER, such that site admins have one release time to fix calls to deprecated code. This is especially important for public procs.</p></li></ul></div><p>
+        </p></li><li class="listitem"><p>General cleanup/maintenance
+                </p><div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: circle; "><li class="listitem"><p>Modernization of Tcl idioms.</p></li><li class="listitem"><p>Compliance of files, proc names, ... to the naming conventions.</p></li><li class="listitem"><p>White space cleanup, indentation changes.</p></li><li class="listitem"><p>Improvement of public API documentation</p></li><li class="listitem"><p>Adjustment of proc protection levels (public, private)</p></li><li class="listitem"><p>Adjustment of log severity</p></li><li class="listitem"><p>Cleanup of obsolete files</p></li><li class="listitem"><p>Replacement of handcrafted forms by ad_form</p></li><li class="listitem"><p>Typo fixing</p></li><li class="listitem"><p>Editor hints</p></li><li class="listitem"><p>Replacement of deprecated calls</p></li><li class="listitem"><p>Addition of missing contracts</p></li><li class="listitem"><p>...</p></li></ul></div><p>
+        </p></li><li class="listitem"><p>New Packages:
+                </p><div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: circle; "><li class="listitem"><p>openacs-bootstrap5: Bootstrap 5 theme for OpenACS</p></li><li class="listitem"><p>bootstrap-icons: Free, high-quality, open-source icon library with over 1,600 icons. Include them anyway you like—SVGs, SVG sprite, or web fonts. Use them with or without Bootstrap in any project</p></li><li class="listitem"><p>fa-icons: Free, high-quality, open-source icon library with over 2,000 free icons. As of 2020, Font Awesome was used by 38% of sites that use third-party font scripts, placing Font Awesome in second place after Google Fonts</p></li><li class="listitem"><p>highcharts: The Highcharts library is a JavaScript and TypeScript package for producing data visualizations (line/bar/pie charts etc.). The OpenACS package offers support to load this library either via CDN or from a local installation (via acs-admin and global administration UI)</p></li></ul></div><p>
+        </p></li><li class="listitem"><p>Migrate to bootstrap 5. Bootstrap 3 reached EOL in 2019, Bootstrap 4 had EOL 2022. See <a class="ulink" href="https://github.com/twbs/release" target="_top">https://github.com/twbs/release</a></p></li><li class="listitem"><p>Potential incompatibility with OpenACS 5.10.0: "permission::permission_p" returns Boolean values as "t" and "f" and not "1" and "0". Avoid literal comparisons of the result and use boolean tests available in Tcl/OpenACS.</p></li><li class="listitem"><p>Support for fresh installations on Oracle 19c.</p></li><li class="listitem"><p>Require NaviServer (i.e. drop AOLserver support). AOLserver cannot be compiled with the required modules with recent Tcl versions. Trying to backport NaviServer compatibility functions seems to be an overkill for the OpenACS project.</p></li><li class="listitem"><p>Require Tcl 8.6, XOTcl 2.1, PostgreSQL 11 (PostgreSQL 10 EOL: <a class="ulink" href="https://www.postgresql.org/support/versioning/" target="_top">November 2022</a>), tdom 0.9</p></li></ul></div><p> Altogether, OpenACS 5.10.1 differs from OpenACS 5.10.0 by the
+        following statistics
+        </p><pre class="programlisting">
+            2886 files changed, 197060 insertions(+), 182613 deletions(-)
+        </pre><p>
+        contributed by 6 committers (Antonio Pisano, Gustaf Neumann, Günter Ernst, Héctor Romojaro, Raúl Rodríguez, Thomas Renner) and additional 7 patch/bugfix providers (Felix Mödritscher, Frank Bergmann, Franz Penz, Markus Moser, Marty Israelsen, Monika Andergassen, Sebastian Scheder).
+
+        All packages of
+        the release were tested with PostgreSQL 13.* and Tcl 8.6.*.
+    </p><p>
+        For more details, consult the
+        <a class="ulink" href="http://openacs.org/changelogs/ChangeLog-5.10.1" target="_top">raw ChangeLog</a>.
+    </p></div><div class="sect2"><div class="titlepage"><div><div><h3 class="title"><a name="release-notes-5-10-0"></a>Release 5.10.0</h3></div></div></div><div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem"><p>
       The release of OpenACS 5.10.0 contains the 93 packages of the oacs-5-10
       branch.  These packages include the OpenACS core packages, the major
       application packages (e.g. most the ones used on OpenACS.org), and
@@ -1284,4 +1321,4 @@
         </p></li><li class="listitem"><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"><div class="titlepage"><div><div><h3 class="title"><a name="idp105548897762760"></a>Release 4.6.3</h3></div></div></div><p><a class="ulink" href="release-notes-4-6-3.html" target="_top">Release Notes for 4.6.3</a></p></div><div class="sect2"><div class="titlepage"><div><div><h3 class="title"><a name="idp105548897764168"></a>Release 4.6.2</h3></div></div></div><p><a class="ulink" href="release-notes-4-6-2.html" target="_top">Release Notes for 4.6.2</a></p></div><div class="sect2"><div class="titlepage"><div><div><h3 class="title"><a name="idp105548897765576"></a>Release 4.6</h3></div></div></div><p><a class="ulink" href="release-notes-4-6.html" target="_top">Release Notes for 4.6</a></p></div><div class="sect2"><div class="titlepage"><div><div><h3 class="title"><a name="idp105548897766984"></a>Release 4.5</h3></div></div></div><p><a class="ulink" href="release-notes-4-5.html" target="_top">Release Notes for 4.5</a></p></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></body></html>
+        </p></li></ul></div><div class="cvstag">($Id$)</div></div><div class="sect2"><div class="titlepage"><div><div><h3 class="title"><a name="id1338"></a>Release 4.6.3</h3></div></div></div><p><a class="ulink" href="release-notes-4-6-3.html" target="_top">Release Notes for 4.6.3</a></p></div><div class="sect2"><div class="titlepage"><div><div><h3 class="title"><a name="id1339"></a>Release 4.6.2</h3></div></div></div><p><a class="ulink" href="release-notes-4-6-2.html" target="_top">Release Notes for 4.6.2</a></p></div><div class="sect2"><div class="titlepage"><div><div><h3 class="title"><a name="id1340"></a>Release 4.6</h3></div></div></div><p><a class="ulink" href="release-notes-4-6.html" target="_top">Release Notes for 4.6</a></p></div><div class="sect2"><div class="titlepage"><div><div><h3 class="title"><a name="id1341"></a>Release 4.5</h3></div></div></div><p><a class="ulink" href="release-notes-4-5.html" target="_top">Release Notes for 4.5</a></p></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></body></html>
Index: openacs-4/packages/acs-core-docs/www/releasing-openacs-core.adp
===================================================================
RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/releasing-openacs-core.adp,v
diff -u -r1.6.2.8 -r1.6.2.9
--- openacs-4/packages/acs-core-docs/www/releasing-openacs-core.adp	13 Jul 2023 12:43:22 -0000	1.6.2.8
+++ openacs-4/packages/acs-core-docs/www/releasing-openacs-core.adp	1 Aug 2024 08:03:41 -0000	1.6.2.9
@@ -183,87 +183,7 @@
 (it&#39;s a bit out of date with the new steps - I&#39;ve been
 doing everything manually or with little throwaway scripts as
 detailed above until the process is stabilized).</p><pre class="programlisting">
-#!/bin/bash
-
-# if TAG=1 create the cvs tags otherwise assume they exist.
-TAG=1
-
-# What release version are we building; version format should be
-# dashes rather than dots eg. OACS_VERSION=5-0-0b4
-
-OACS_VERSION=5-0-0b4
-DOTLRN_VERSION=2-0-0b4
-
-OACS_BRANCH=oacs-5-0
-DOTLRN_BRANCH=dotlrn-2-0
-
-DOTLRN_CVSROOT=/dotlrn-cvsroot
-OACS_CVSROOT=/cvsroot
-
-#
-# Nothing below here should need to change...
-#
-BASE=/var/tmp/release-$OACS_VERSION
-mkdir $BASE
-if [ ! -d $BASE ]; then 
-    echo "Failed creating base dir $BASE"
-    exit 1
-fi
-
-cd $BASE 
-
-if [ $TAG -eq 1 ]; then 
-
-    # Checkout and tag the release 
-    cvs -d $OACS_CVSROOT checkout -r $OACS_BRANCH openacs-4
-    cd openacs-4 
-    cvs tag -F openacs-$OACS_VERSION 
-    cd ../
-
-
-    # Checkout and tag the dotlrn release
-    mkdir dotlrn-packages
-    cd dotlrn-packages
-    cvs -d $DOTLRN_CVSROOT checkout -r $DOTLRN_BRANCH dotlrn-all
-    for dir in *; do ( cd $dir &amp;&amp; cvs tag -F dotlrn-$DOTLRN_VERSION ); done
-    cd ../
-
-    #
-    # Should check for .sql .xql .adp .tcl .html .xml executable files and squak if found.
-    #
-
-fi
-
-
-
-# Generate tarballs...
-#
-
-# openacs
-#
-mkdir tarball
-cd tarball
-cvs -d $OACS_CVSROOT export -r openacs-$OACS_VERSION acs-core
-mv opeancs-4 openacs-${OACS_VERSION//-/.}
-tar -czf ../openacs-${OACS_VERSION//-/.}.tar.gz openacs-${OACS_VERSION//-/.}
-cd ..
-
-# dotlrn
-#
-mkdir dotlrn-tarball
-cd dotlrn-tarball
-cvs -d $OACS_CVSROOT export -r openacs-$OACS_VERSION acs-core
-cd  openacs-4/packages
-cvs -d $OACS_CVSROOT export -r openacs-$OACS_VERSION dotlrn-prereq
-cvs -d $DOTLRN_CVSROOT export -r dotlrn-$DOTLRN_VERSION dotlrn-core
-cd ../..
-cp -f openacs-4/packages/dotlrn/install.xml openacs-4
-mv openacs-4 dotlrn-${DOTLRN_VERSION//-/.}
-tar -czf ../dotlrn-${DOTLRN_VERSION//-/.}.tar.gz dotlrn-${DOTLRN_VERSION//-/.}
-
-
-# Clean up after ourselves...
-cd $BASE &amp;&amp; rm -rf dotlrn-tarball tarball openacs-4 dotlrn-packages
+release script missing
 </pre><div class="cvstag">($&zwnj;Id: releasing-openacs.xml,v 1.24.2.1
 2020/07/02 08:39:25 gustafn Exp $)</div>
 </div>
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.25.2.8 -r1.25.2.9
--- openacs-4/packages/acs-core-docs/www/releasing-openacs-core.html	13 Jul 2023 12:43:22 -0000	1.25.2.8
+++ openacs-4/packages/acs-core-docs/www/releasing-openacs-core.html	1 Aug 2024 08:03:41 -0000	1.25.2.9
@@ -58,85 +58,4 @@
 rm -rf tarball dotlrn-tarball dotlrn-packages openacs-<span class="replaceable"><span class="replaceable">5.0.0a1</span></span>
 rm -rf /var/tmp/openacs-4</span></span></pre></li></ol></div><p>
       Here is a shell script that automates packaging the tarball (it's a bit out of date with the new steps - I've been doing everything manually or with little throwaway scripts as detailed above until the process is stabilized).
-    </p><pre class="programlisting">#!/bin/bash
-
-# if TAG=1 create the cvs tags otherwise assume they exist.
-TAG=1
-
-# What release version are we building; version format should be
-# dashes rather than dots eg. OACS_VERSION=5-0-0b4
-
-OACS_VERSION=5-0-0b4
-DOTLRN_VERSION=2-0-0b4
-
-OACS_BRANCH=oacs-5-0
-DOTLRN_BRANCH=dotlrn-2-0
-
-DOTLRN_CVSROOT=/dotlrn-cvsroot
-OACS_CVSROOT=/cvsroot
-
-#
-# Nothing below here should need to change...
-#
-BASE=/var/tmp/release-$OACS_VERSION
-mkdir $BASE
-if [ ! -d $BASE ]; then 
-    echo "Failed creating base dir $BASE"
-    exit 1
-fi
-
-cd $BASE 
-
-if [ $TAG -eq 1 ]; then 
-
-    # Checkout and tag the release 
-    cvs -d $OACS_CVSROOT checkout -r $OACS_BRANCH openacs-4
-    cd openacs-4 
-    cvs tag -F openacs-$OACS_VERSION 
-    cd ../
-
-
-    # Checkout and tag the dotlrn release
-    mkdir dotlrn-packages
-    cd dotlrn-packages
-    cvs -d $DOTLRN_CVSROOT checkout -r $DOTLRN_BRANCH dotlrn-all
-    for dir in *; do ( cd $dir &amp;&amp; cvs tag -F dotlrn-$DOTLRN_VERSION ); done
-    cd ../
-
-    #
-    # Should check for .sql .xql .adp .tcl .html .xml executable files and squak if found.
-    #
-
-fi
-
-
-
-# Generate tarballs...
-#
-
-# openacs
-#
-mkdir tarball
-cd tarball
-cvs -d $OACS_CVSROOT export -r openacs-$OACS_VERSION acs-core
-mv opeancs-4 openacs-${OACS_VERSION//-/.}
-tar -czf ../openacs-${OACS_VERSION//-/.}.tar.gz openacs-${OACS_VERSION//-/.}
-cd ..
-
-# dotlrn
-#
-mkdir dotlrn-tarball
-cd dotlrn-tarball
-cvs -d $OACS_CVSROOT export -r openacs-$OACS_VERSION acs-core
-cd  openacs-4/packages
-cvs -d $OACS_CVSROOT export -r openacs-$OACS_VERSION dotlrn-prereq
-cvs -d $DOTLRN_CVSROOT export -r dotlrn-$DOTLRN_VERSION dotlrn-core
-cd ../..
-cp -f openacs-4/packages/dotlrn/install.xml openacs-4
-mv openacs-4 dotlrn-${DOTLRN_VERSION//-/.}
-tar -czf ../dotlrn-${DOTLRN_VERSION//-/.}.tar.gz dotlrn-${DOTLRN_VERSION//-/.}
-
-
-# Clean up after ourselves...
-cd $BASE &amp;&amp; rm -rf dotlrn-tarball tarball openacs-4 dotlrn-packages
-</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="releasing-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="update-repository.html">Next</a></td></tr><tr><td width="40%" align="left">Chapter 16. Releasing OpenACS </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 OpenACS.org repository</td></tr></table><hr><address><a href="mailto:docs@openacs.org">docs@openacs.org</a></address></div><a name="comments"></a></body></html>
+    </p><pre class="programlisting">release script missing</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="releasing-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="update-repository.html">Next</a></td></tr><tr><td width="40%" align="left">Chapter 16. Releasing OpenACS </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 OpenACS.org repository</td></tr></table><hr><address><a href="mailto:docs@openacs.org">docs@openacs.org</a></address></div><a name="comments"></a></body></html>
Index: openacs-4/packages/acs-core-docs/www/request-processor.adp
===================================================================
RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/request-processor.adp,v
diff -u -r1.4.2.6 -r1.4.2.7
--- openacs-4/packages/acs-core-docs/www/request-processor.adp	13 Jul 2023 12:43:22 -0000	1.4.2.6
+++ openacs-4/packages/acs-core-docs/www/request-processor.adp	1 Aug 2024 08:03:41 -0000	1.4.2.7
@@ -45,7 +45,7 @@
 detail in its own document. It examines the client request and
 either 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.9.0, access control is dictated by the <a class="ulink" href="permissions" target="_top">permissions system</a>. In this case,
+5.9.0, access control is dictated by the <a class="ulink" href="permissions" target="_top">permission system</a>. In this case,
 the RP checks if the user has "read" privileges 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
@@ -106,7 +106,7 @@
 name of the package.</p></dd><dt><span class="term"><code class="computeroutput">[ad_conn
 path_info]</code></span></dt><dd><p>In a .vuh file, path_info is the trailing part of the URL not
 matched by the .vuh file.</p></dd>
-</dl></div><div class="cvstag">($&zwnj;Id: rp.xml,v 1.13.2.2 2019/08/09 20:04:23
+</dl></div><div class="cvstag">($&zwnj;Id: rp.xml,v 1.13.2.3 2024/02/05 15:35:07
 gustafn Exp $)</div>
 </div>
 </div>
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.52.2.8 -r1.52.2.9
--- openacs-4/packages/acs-core-docs/www/request-processor.html	13 Jul 2023 12:43:22 -0000	1.52.2.8
+++ openacs-4/packages/acs-core-docs/www/request-processor.html	1 Aug 2024 08:03:41 -0000	1.52.2.9
@@ -37,7 +37,7 @@
 </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.9.0, access control
-is dictated by the <a class="ulink" href="permissions" target="_top">permissions system</a>. In
+is dictated by the <a class="ulink" href="permissions" target="_top">permission system</a>. In
 this case, the RP checks if the user has "read" privileges 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,
Index: openacs-4/packages/acs-core-docs/www/tutorial-categories.adp
===================================================================
RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/tutorial-categories.adp,v
diff -u -r1.4.2.8 -r1.4.2.9
--- openacs-4/packages/acs-core-docs/www/tutorial-categories.adp	13 Jul 2023 12:43:23 -0000	1.4.2.8
+++ openacs-4/packages/acs-core-docs/www/tutorial-categories.adp	1 Aug 2024 08:03:41 -0000	1.4.2.9
@@ -87,7 +87,7 @@
 <code class="computeroutput">note-edit.tcl</code> requires a
 <code class="computeroutput">note_id</code> to determine which
 record should be deleted. It also looks for a confirmation
-variable, which should initially be absert. If it is absent, we
+variable, which should initially be absent. 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
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.17.2.4 -r1.17.2.5
--- openacs-4/packages/acs-core-docs/www/tutorial-categories.html	3 Sep 2021 09:15:31 -0000	1.17.2.4
+++ openacs-4/packages/acs-core-docs/www/tutorial-categories.html	1 Aug 2024 08:03:41 -0000	1.17.2.5
@@ -84,7 +84,7 @@
 			to the corresponding category object yourself.</p><p><code class="computeroutput">note-edit.tcl</code> requires a
 <code class="computeroutput">note_id</code> 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
+should initially be absent.  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
 commands; here, we call them directly because we don't need the extra
Index: openacs-4/packages/acs-core-docs/www/tutorial-css-layout.adp
===================================================================
RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/tutorial-css-layout.adp,v
diff -u -r1.4.2.9 -r1.4.2.10
--- openacs-4/packages/acs-core-docs/www/tutorial-css-layout.adp	13 Jul 2023 12:43:23 -0000	1.4.2.9
+++ openacs-4/packages/acs-core-docs/www/tutorial-css-layout.adp	1 Aug 2024 08:03:41 -0000	1.4.2.10
@@ -12,8 +12,8 @@
 <a name="tutorial-css-layout" id="tutorial-css-layout"></a>Laying out a page with CSS instead of
 tables</h2></div></div></div><div class="sect2">
 <div class="titlepage"><div><div><h3 class="title">
-<a name="idp105548964989512" id="idp105548964989512"></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 class="ulink" href="files/dotlrn-style-1" target="_top">full source</a>)</p><pre class="programlisting">
+<a name="id1375" id="id1375"></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 class="ulink" href="files/dotlrn-style-1" target="_top">full source</a>)</p><pre class="programlisting">
 &lt;table border="0" width="100%"&gt;
   &lt;tr&gt;
     &lt;td valign="top" width="50%"&gt;
@@ -40,7 +40,8 @@
 </pre>
 </div><div class="sect2">
 <div class="titlepage"><div><div><h3 class="title">
-<a name="idp105548964993096" id="idp105548964993096"></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 class="ulink" href="files/dotlrn-style-2" target="_top">full source</a>)</p><pre class="programlisting">
+<a name="id1376" id="id1376"></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 class="ulink" href="files/dotlrn-style-2" 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;
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.15.2.7 -r1.15.2.8
--- openacs-4/packages/acs-core-docs/www/tutorial-css-layout.html	13 Jul 2023 12:43:23 -0000	1.15.2.7
+++ openacs-4/packages/acs-core-docs/www/tutorial-css-layout.html	1 Aug 2024 08:03:41 -0000	1.15.2.8
@@ -1,5 +1,5 @@
 <!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=UTF-8"><title>Laying out a page with CSS instead of tables</title><link rel="stylesheet" type="text/css" href="openacs.css"><meta name="generator" content="DocBook XSL Stylesheets Vsnapshot"><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"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><a href="http://openacs.org"><img src="/doc/images/alex.jpg" style="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"><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"><div class="titlepage"><div><div><h3 class="title"><a name="idp105548964989512"></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 class="ulink" href="files/dotlrn-style-1.html" target="_top">full source</a>)</p><pre class="programlisting">&lt;table border="0" width="100%"&gt;
+<html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><title>Laying out a page with CSS instead of tables</title><link rel="stylesheet" type="text/css" href="openacs.css"><meta name="generator" content="DocBook XSL Stylesheets Vsnapshot"><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"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><a href="http://openacs.org"><img src="/doc/images/alex.jpg" style="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"><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"><div class="titlepage"><div><div><h3 class="title"><a name="id1375"></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 class="ulink" href="files/dotlrn-style-1.html" target="_top">full source</a>)</p><pre class="programlisting">&lt;table border="0" width="100%"&gt;
   &lt;tr&gt;
     &lt;td valign="top" width="50%"&gt;
       &lt;table class="element" border="0" cellpadding="0" cellspacing="0" width="100%"&gt;
@@ -21,7 +21,7 @@
                   &lt;table border="0" bgcolor="white" cellpadding="0" cellspacing="0" width="100%"&gt;
                     &lt;tr&gt;
                       &lt;td class=element-text&gt;
-                        MBA 101</pre></div><div class="sect2"><div class="titlepage"><div><div><h3 class="title"><a name="idp105548964993096"></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 class="ulink" href="files/dotlrn-style-2.html" target="_top">full source</a>)</p><pre class="programlisting">&lt;div class="left"&gt;
+                        MBA 101</pre></div><div class="sect2"><div class="titlepage"><div><div><h3 class="title"><a name="id1376"></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 class="ulink" 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;
Index: openacs-4/packages/acs-core-docs/www/tutorial-cvs.adp
===================================================================
RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/tutorial-cvs.adp,v
diff -u -r1.4.2.9 -r1.4.2.10
--- openacs-4/packages/acs-core-docs/www/tutorial-cvs.adp	13 Jul 2023 12:43:23 -0000	1.4.2.9
+++ openacs-4/packages/acs-core-docs/www/tutorial-cvs.adp	1 Aug 2024 08:03:41 -0000	1.4.2.10
@@ -71,7 +71,7 @@
 <span class="emphasis"><em>(many lines omitted)</em></span>
 [$OPENACS_SERVICE_NAME myfirstpackage]$
 </pre><div class="figure">
-<a name="idp105548968828360" id="idp105548968828360"></a><p class="title"><strong>Figure 10.1. Upgrading a local CVS
+<a name="id1412" id="id1412"></a><p class="title"><strong>Figure 10.1. Upgrading a local CVS
 repository</strong></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>
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.29.2.7 -r1.29.2.8
--- openacs-4/packages/acs-core-docs/www/tutorial-cvs.html	13 Jul 2023 12:43:23 -0000	1.29.2.7
+++ openacs-4/packages/acs-core-docs/www/tutorial-cvs.html	1 Aug 2024 08:03:41 -0000	1.29.2.8
@@ -59,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="idp105548968828360"></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></body></html>
+[$OPENACS_SERVICE_NAME myfirstpackage]$</pre><div class="figure"><a name="id1412"></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></body></html>
Index: openacs-4/packages/acs-core-docs/www/tutorial-database.adp
===================================================================
RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/tutorial-database.adp,v
diff -u -r1.4.2.10 -r1.4.2.11
--- openacs-4/packages/acs-core-docs/www/tutorial-database.adp	13 Jul 2023 12:43:23 -0000	1.4.2.10
+++ openacs-4/packages/acs-core-docs/www/tutorial-database.adp	1 Aug 2024 08:03:41 -0000	1.4.2.11
@@ -15,7 +15,8 @@
 OpenACS docs are written by the named authors, and may be edited by
 OpenACS documentation staff.</div><div class="sect2">
 <div class="titlepage"><div><div><h3 class="title">
-<a name="idp105548968749256" id="idp105548968749256"></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 database
+<a name="id1366" id="id1366"></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 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>
@@ -28,7 +29,7 @@
 table. It takes more than just a <code class="computeroutput">CREATE TABLE</code> 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
+permission 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 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
@@ -42,7 +43,7 @@
 simplify our database creation. (<a class="ulink" href="objects" target="_top">More information about ACS
 Objects</a>. <a class="ulink" href="/doc/acs-content-repository" target="_top">More information about the Content
 Repository</a>.)</p><div class="figure">
-<a name="idp105548968758856" id="idp105548968758856"></a><p class="title"><strong>Figure 9.2. Tutorial Data
+<a name="id1408" id="id1408"></a><p class="title"><strong>Figure 9.2. Tutorial Data
 Model</strong></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 standard comments, including
 doc tags such as <code class="computeroutput">\@author</code> which
@@ -51,7 +52,7 @@
 [$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="idp105548968763976" id="idp105548968763976"></a><p class="title"><strong>Figure 9.3. The
+<a name="id1409" id="id1409"></a><p class="title"><strong>Figure 9.3. The
 Database Creation Script</strong></p><div class="figure-contents"><pre class="programlisting">
 -- creation script
 --
@@ -81,7 +82,7 @@
 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="idp105548968767432" id="idp105548968767432"></a><p class="title"><strong>Figure 9.4. Database Deletion
+<a name="id1410" id="id1410"></a><p class="title"><strong>Figure 9.4. Database Deletion
 Script</strong></p><div class="figure-contents"><pre class="programlisting">
 -- drop script
 --
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.47.2.7 -r1.47.2.8
--- openacs-4/packages/acs-core-docs/www/tutorial-database.html	13 Jul 2023 12:43:23 -0000	1.47.2.7
+++ openacs-4/packages/acs-core-docs/www/tutorial-database.html	1 Aug 2024 08:03:41 -0000	1.47.2.8
@@ -2,7 +2,7 @@
 <html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><title>Setting Up Database Objects</title><link rel="stylesheet" type="text/css" href="openacs.css"><meta name="generator" content="DocBook XSL Stylesheets Vsnapshot"><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"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><a href="http://openacs.org"><img src="/doc/images/alex.jpg" style="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"><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 class="ulink" 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"><div class="titlepage"><div><div><h3 class="title"><a name="idp105548968749256"></a>Code the data model</h3></div></div></div><p>We create all database objects with scripts in the
+        </div><div class="sect2"><div class="titlepage"><div><div><h3 class="title"><a name="id1366"></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
       database scripts are database-specific and are thus in either
       the <code class="computeroutput">myfirstpackage/sql/oracle</code> or
@@ -18,7 +18,7 @@
       TABLE</code> 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
+      permission 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
       that our table creation code must include several functions,
@@ -32,13 +32,13 @@
       repository functions to simplify our database creation.  (<a class="ulink" href="objects.html" target="_top">More
       information about ACS Objects</a>.  <a class="ulink" href="/doc/acs-content-repository" target="_top">More information about the
       Content Repository</a>.)
-</p><div class="figure"><a name="idp105548968758856"></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="id1408"></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
       standard comments, including doc tags such as
       <code class="computeroutput">@author</code> 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="idp105548968763976"></a><p class="title"><b>Figure 9.3. The Database Creation Script</b></p><div class="figure-contents"><pre class="programlisting">-- creation script
+[$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="id1409"></a><p class="title"><b>Figure 9.3. The Database Creation Script</b></p><div class="figure-contents"><pre class="programlisting">-- creation script
 --
 -- @author joel@aufrecht.org
 -- @cvs-id &amp;Id:$
@@ -62,7 +62,7 @@
     object.  Notice the use of "mfp."  This is derived from "My
     First Package" 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="idp105548968767432"></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]$ <strong class="userinput"><code>emacs myfirstpackage-drop.sql</code></strong></pre><div class="figure"><a name="id1410"></a><p class="title"><b>Figure 9.4. Database Deletion Script</b></p><div class="figure-contents"><pre class="programlisting">-- drop script
 --
 -- @author joel@aufrecht.org
 -- @cvs-id &amp;Id:$
Index: openacs-4/packages/acs-core-docs/www/tutorial-debug.adp
===================================================================
RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/tutorial-debug.adp,v
diff -u -r1.4.2.12 -r1.4.2.13
--- openacs-4/packages/acs-core-docs/www/tutorial-debug.adp	13 Jul 2023 12:43:23 -0000	1.4.2.12
+++ openacs-4/packages/acs-core-docs/www/tutorial-debug.adp	1 Aug 2024 08:03:42 -0000	1.4.2.13
@@ -15,7 +15,7 @@
 OpenACS docs are written by the named authors, and may be edited by
 OpenACS documentation staff.</div><div class="sect2">
 <div class="titlepage"><div><div><h3 class="title">
-<a name="idp105548968602312" id="idp105548968602312"></a>Debugging</h3></div></div></div><p>
+<a name="id1370" id="id1370"></a>Debugging</h3></div></div></div><p>
 <strong>Developer Support. </strong>The Developer
 Support package adds several goodies: debug information for every
 page; the ability to log comments to the page instead of the error
@@ -45,7 +45,8 @@
           </p></div>
 </div><div class="sect2">
 <div class="titlepage"><div><div><h3 class="title">
-<a name="idp105548968577480" id="idp105548968577480"></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">
+<a name="id1371" id="id1371"></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>
@@ -73,15 +74,16 @@
 to delete your own note. Edit your own note. Search for a note.</p>
 </div><div class="sect2">
 <div class="titlepage"><div><div><h3 class="title">
-<a name="idp105548968588488" id="idp105548968588488"></a>Write automated tests</h3></div></div></div><div class="authorblurb">
+<a name="id1374" id="id1374"></a>Write automated
+tests</h3></div></div></div><div class="authorblurb">
 <p>by <a class="ulink" 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="idp105548968557768" id="idp105548968557768"></a> It seems to me that a lot of people have
-been asking for some guidelines on how to write automated tests.
-I&#39;ve done several tests by now and have found the process to be
-extremely easy and useful. It&#39;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
+<a class="indexterm" name="id8098" id="id8098"></a> It seems to
+me that a lot of people have been asking for some guidelines on how
+to write automated tests. I&#39;ve done several tests by now and
+have found the process to be extremely easy and useful. It&#39;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 filename 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>
@@ -148,7 +150,8 @@
 myfirstpackage. You should see your test case. Run it and examine
 the results.</p><div class="sect3">
 <div class="titlepage"><div><div><h4 class="title">
-<a name="idp105548968572104" id="idp105548968572104"></a>TCLWebtest tests</h4></div></div></div><p>API testing can only test part of our package - it doesn&#39;t
+<a name="id1372" id="id1372"></a>TCLWebtest
+tests</h4></div></div></div><p>API testing can only test part of our package - it doesn&#39;t
 test the code in our adp/tcl pairs. For this, we can use
 TCLwebtest. TCLwebtest must be <a class="link" href="install-tclwebtest" title="Install tclwebtest.">installed</a>
 for this test to work. This provides a <a class="ulink" href="http://tclwebtest.sourceforge.net/doc/api_public.html" target="_top">library of functions</a> that make it easy to call a page
@@ -158,7 +161,7 @@
 integrating them.</p>
 </div><div class="sect3">
 <div class="titlepage"><div><div><h4 class="title">
-<a name="idp105548968541512" id="idp105548968541512"></a>Example</h4></div></div></div><p>Now we can add the rest of the API tests, including a test with
+<a name="id1373" id="id1373"></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 {
     Test cases for my first package.
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.46.2.9 -r1.46.2.10
--- openacs-4/packages/acs-core-docs/www/tutorial-debug.html	13 Jul 2023 12:43:23 -0000	1.46.2.9
+++ openacs-4/packages/acs-core-docs/www/tutorial-debug.html	1 Aug 2024 08:03:42 -0000	1.46.2.10
@@ -2,7 +2,7 @@
 <html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><title>Debugging and Automated Testing</title><link rel="stylesheet" type="text/css" href="openacs.css"><meta name="generator" content="DocBook XSL Stylesheets Vsnapshot"><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"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><a href="http://openacs.org"><img src="/doc/images/alex.jpg" style="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"><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 class="ulink" 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"><div class="titlepage"><div><div><h3 class="title"><a name="idp105548968602312"></a>Debugging</h3></div></div></div><p><b>Developer Support. </b>The Developer Support package adds several goodies: debug
+        </div><div class="sect2"><div class="titlepage"><div><div><h3 class="title"><a name="id1370"></a>Debugging</h3></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
@@ -23,16 +23,16 @@
 ? searches backward <br>
 / searches forward. <br>
           </p></div><p>
-    </p></div><div class="sect2"><div class="titlepage"><div><div><h3 class="title"><a name="idp105548968577480"></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
+    </p></div><div class="sect2"><div class="titlepage"><div><div><h3 class="title"><a name="id1371"></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
             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
         note.  Try to delete your own note.  Edit your own note.
-        Search for a note.</p></div><div class="sect2"><div class="titlepage"><div><div><h3 class="title"><a name="idp105548968588488"></a>Write automated tests</h3></div></div></div><div class="authorblurb"><p>by <a class="ulink" href="mailto:simon@collaboraid.net" target="_top">Simon Carstensen</a> and Joel Aufrecht</p>
+        Search for a note.</p></div><div class="sect2"><div class="titlepage"><div><div><h3 class="title"><a name="id1374"></a>Write automated tests</h3></div></div></div><div class="authorblurb"><p>by <a class="ulink" 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="idp105548968557768"></a>
+        </div><p><a class="indexterm" name="id8098"></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 filename 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>
@@ -68,7 +68,7 @@
 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">
       set name [ad_generate_random_string]
       set new_id [mfp::note::add -title $name]
-      aa_true "Note add succeeded" {$new_id ne ""}</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 class="ulink" 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 class="ulink" 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 class="ulink" 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"><div class="titlepage"><div><div><h4 class="title"><a name="idp105548968572104"></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 class="link" href="install-tclwebtest.html" title="Install tclwebtest.">installed</a> for this test to work.  This provides a <a class="ulink" 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"><div class="titlepage"><div><div><h4 class="title"><a name="idp105548968541512"></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 "Note add succeeded" {$new_id ne ""}</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 class="ulink" 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 class="ulink" 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 class="ulink" 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"><div class="titlepage"><div><div><h4 class="title"><a name="id1372"></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 class="link" href="install-tclwebtest.html" title="Install tclwebtest.">installed</a> for this test to work.  This provides a <a class="ulink" 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"><div class="titlepage"><div><div><h4 class="title"><a name="id1373"></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 {
     Test cases for my first package.
 }
 
Index: openacs-4/packages/acs-core-docs/www/tutorial-distribute.adp
===================================================================
RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/tutorial-distribute.adp,v
diff -u -r1.4.2.9 -r1.4.2.10
--- openacs-4/packages/acs-core-docs/www/tutorial-distribute.adp	13 Jul 2023 12:43:23 -0000	1.4.2.9
+++ openacs-4/packages/acs-core-docs/www/tutorial-distribute.adp	1 Aug 2024 08:03:42 -0000	1.4.2.10
@@ -13,7 +13,7 @@
 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 for
 this package from the filesystem</span></span></code>.</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="idp105548965046472" id="idp105548965046472"></a></p><p><a class="ulink" href="http://openacs.org/forums/message-view?message_id=192919" target="_top">Package development guidelines</a></p>
+file to /var/tmp.</p><p><a class="indexterm" name="id8475" id="id8475"></a></p><p><a class="ulink" href="http://openacs.org/forums/message-view?message_id=192919" target="_top">Package development guidelines</a></p>
 </div>
 <include src="/packages/acs-core-docs/lib/navfooter"
 			leftLink="profile-code" leftLabel="Prev" leftTitle="Profile your code"
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.29.2.7 -r1.29.2.8
--- openacs-4/packages/acs-core-docs/www/tutorial-distribute.html	13 Jul 2023 12:43:23 -0000	1.29.2.7
+++ openacs-4/packages/acs-core-docs/www/tutorial-distribute.html	1 Aug 2024 08:03:42 -0000	1.29.2.8
@@ -7,5 +7,5 @@
         (<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="idp105548965046472"></a>
+        /var/tmp.</p><p><a class="indexterm" name="id8475"></a>
 </p><p><a class="ulink" 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></body></html>
Index: openacs-4/packages/acs-core-docs/www/tutorial-etp-templates.adp
===================================================================
RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/tutorial-etp-templates.adp,v
diff -u -r1.4.2.9 -r1.4.2.10
--- openacs-4/packages/acs-core-docs/www/tutorial-etp-templates.adp	13 Jul 2023 12:43:23 -0000	1.4.2.9
+++ openacs-4/packages/acs-core-docs/www/tutorial-etp-templates.adp	1 Aug 2024 08:03:42 -0000	1.4.2.10
@@ -25,9 +25,9 @@
 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
+location, instead of across many files.</p><p>In this problem set you will familiarize yourself with the
+templating system in OpenACS. This will be achieved through
+customizing 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>
@@ -86,7 +86,7 @@
 </li><li class="listitem">
 <p>The template should provide us with the following ETP
 layout:</p><div class="table">
-<a name="idp105548968790088"></a><p class="title"><strong>Table 10.1. table
+<a name="id1418"></a><p class="title"><strong>Table 10.1. table
 showing ETP layout</strong></p><div class="table-contents"><table class="table" summary="table showing ETP layout" cellspacing="0" border="1" width="250">
 <colgroup>
 <col align="left" class="c1"><col width="2" align="left" class="c2">
@@ -133,8 +133,8 @@
 <a name="end"></a>Who Wrote This and When</h3></div></div></div><p>This problem set was originally written by Nick Carroll in
 August 2004 for the <a class="ulink" href="http://www.usyd.edu.au" target="_top">University of Sydney</a> Course EBUS5002.</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">($&zwnj;Id: tutorial-advanced.xml,v 1.60.2.11
-2022/04/27 12:22:29 gustafn Exp $)</div>
+original author.</p><div class="cvstag">($&zwnj;Id: tutorial-advanced.xml,v 1.60.2.12
+2024/02/05 15:35:07 gustafn Exp $)</div>
 </div>
 </div>
 <include src="/packages/acs-core-docs/lib/navfooter"
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.12.2.7 -r1.12.2.8
--- openacs-4/packages/acs-core-docs/www/tutorial-etp-templates.html	13 Jul 2023 12:43:23 -0000	1.12.2.7
+++ openacs-4/packages/acs-core-docs/www/tutorial-etp-templates.html	1 Aug 2024 08:03:42 -0000	1.12.2.8
@@ -5,13 +5,13 @@
         </div><div class="sect2"><div class="titlepage"><div><div><h3 class="title"><a name="goals"></a>Goals</h3></div></div></div><div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem"><p>Learn about the OpenACS templating system.</p></li><li class="listitem"><p>Learn about subsites and site-map administration.</p></li></ul></div></div><div class="sect2"><div class="titlepage"><div><div><h3 class="title"><a name="introduction"></a>Introduction</h3></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.
+        In this problem set you will familiarize yourself with the templating system in OpenACS. This will be achieved through customizing 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"><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 class="itemizedlist" style="list-style-type: disc; "><li class="listitem"><p>Create a subsite called pset3.</p></li><li class="listitem"><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 class="itemizedlist" style="list-style-type: circle; "><li class="listitem"><p>http://localhost:8000/admin/site-map</p></li><li class="listitem"><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"><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 class="itemizedlist" style="list-style-type: disc; "><li class="listitem"><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 class="listitem"><p>Go to the package manager at http://yoursite/acs-admin/apm. And install  the new package: edit-this-page.</p></li><li class="listitem"><p>Or use the "Add Application" form available on the Main site.</p></li></ul></div></div><div class="sect2"><div class="titlepage"><div><div><h3 class="title"><a name="exercise3"></a>Change ETP Application</h3></div></div></div><div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem"><p>Work out how to change the ETP application.</p></li><li class="listitem"><p>Investigate each of the available ETP templates:</p><div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: circle; "><li class="listitem"><p>Default</p></li><li class="listitem"><p>News</p></li><li class="listitem"><p>FAQ</p></li></ul></div></li></ul></div></div><div class="sect2"><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 class="itemizedlist" style="list-style-type: disc; "><li class="listitem"><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 class="listitem"><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 class="listitem"><p>The template should provide us with the following ETP layout:</p><div class="table"><a name="idp105548968790088"></a><p class="title"><b>Table 10.1. table showing ETP layout</b></p><div class="table-contents"><table class="table" summary="table showing ETP layout" cellspacing="0" border="1" width="250"><colgroup><col align="left" class="c1"><col width="2" align="left" class="c2"></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 class="listitem"><p>The "Main Content" pane should contain the editable content that ETP provides.</p></li><li class="listitem"><p>The "Header" should display the title of the page that you set in ETP.</p></li><li class="listitem"><p>The "Sidebar" should display the extlinks that you add as a content item in ETP.</p></li></ul></div></div><div class="sect2"><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 class="itemizedlist" style="list-style-type: disc; "><li class="listitem"><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
+            cp article-index.tcl col2-index.tcl</pre></li><li class="listitem"><p>The template should provide us with the following ETP layout:</p><div class="table"><a name="id1418"></a><p class="title"><b>Table 10.1. table showing ETP layout</b></p><div class="table-contents"><table class="table" summary="table showing ETP layout" cellspacing="0" border="1" width="250"><colgroup><col align="left" class="c1"><col width="2" align="left" class="c2"></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 class="listitem"><p>The "Main Content" pane should contain the editable content that ETP provides.</p></li><li class="listitem"><p>The "Header" should display the title of the page that you set in ETP.</p></li><li class="listitem"><p>The "Sidebar" should display the extlinks that you add as a content item in ETP.</p></li></ul></div></div><div class="sect2"><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 class="itemizedlist" style="list-style-type: disc; "><li class="listitem"><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 class="listitem"><p>Use the function etp::define_application to register your template with ETP</p><div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: circle; "><li class="listitem"><p>Uncomment the "asc" definition</p></li><li class="listitem"><p>Set allow_extlinks to true, the rest should be false.</p></li></ul></div></li><li class="listitem"><p>Restart your server for the changes to take effect.</p></li></ul></div></div><div class="sect2"><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 class="itemizedlist" style="list-style-type: disc; "><li class="listitem"><p>Configure your ETP instance at /lab4/index to use the col2 template.</p></li><li class="listitem"><p>Create external links to link to other mounted ETP instances.</p></li><li class="listitem"><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"><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 Nick Carroll in August 2004 for the <a class="ulink" href="http://www.usyd.edu.au" target="_top">University of Sydney</a> Course EBUS5002.</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></body></html>
Index: openacs-4/packages/acs-core-docs/www/tutorial-newpackage.adp
===================================================================
RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/tutorial-newpackage.adp,v
diff -u -r1.4.2.9 -r1.4.2.10
--- openacs-4/packages/acs-core-docs/www/tutorial-newpackage.adp	13 Jul 2023 12:43:23 -0000	1.4.2.9
+++ openacs-4/packages/acs-core-docs/www/tutorial-newpackage.adp	1 Aug 2024 08:03:42 -0000	1.4.2.10
@@ -18,7 +18,7 @@
 <a name="tutorial-picture" id="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">
 <div class="titlepage"><div><div><h3 class="title">
-<a name="idp105548967573576" id="idp105548967573576"></a>Overview</h3></div></div></div><p>To start developing new code in OpenACS, we build a new package.
+<a name="id1361" id="id1361"></a>Overview</h3></div></div></div><p>To start developing new code in OpenACS, we build a new package.
 A package is 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>;
@@ -36,14 +36,15 @@
 displaying a list of text notes.</p>
 </div><div class="sect2">
 <div class="titlepage"><div><div><h3 class="title">
-<a name="idp105548968674120" id="idp105548968674120"></a>Before you begin</h3></div></div></div><p>You will need:</p><div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc;">
+<a name="id1362" id="id1362"></a>Before you
+begin</h3></div></div></div><p>You will need:</p><div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc;">
 <li class="listitem"><p>A computer with a working installation of OpenACS. If you
 don&#39;t have this, see <a class="xref" href="install-overview" title="Chapter 2. Installation Overview">Chapter 2,
 <em>Installation Overview</em>
 </a>.</p></li><li class="listitem"><p>Example files, which are included in the standard OpenACS 5.9.0
 distribution.</p></li>
 </ul></div><div class="figure">
-<a name="idp105548968676808" id="idp105548968676808"></a><p class="title"><strong>Figure 9.1. Assumptions in this
+<a name="id1407" id="id1407"></a><p class="title"><strong>Figure 9.1. Assumptions in this
 section</strong></p><div class="figure-contents"><div class="informaltable"><table class="informaltable" cellspacing="0" border="1">
 <colgroup>
 <col><col>
@@ -62,8 +63,8 @@
 </div><br class="figure-break">
 </div><div class="sect2">
 <div class="titlepage"><div><div><h3 class="title">
-<a name="idp105548968684232" id="idp105548968684232"></a>Use the APM to initialize a new
-package</h3></div></div></div><p>We use the <a class="ulink" href="packages" target="_top">ACS Package Manager</a> (APM) to add, remove, and upgrade
+<a name="id1363" id="id1363"></a>Use the APM to
+initialize a new package</h3></div></div></div><p>We use the <a class="ulink" href="packages" 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 package, use the APM to
@@ -102,8 +103,8 @@
 packages</a>).</p>
 </div><div class="sect2">
 <div class="titlepage"><div><div><h3 class="title">
-<a name="idp105548968671432" id="idp105548968671432"></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 map
+<a name="id1364" id="id1364"></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 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
@@ -121,7 +122,7 @@
 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">
 <div class="titlepage"><div><div><h3 class="title">
-<a name="idp105548968645960" id="idp105548968645960"></a>Quick start</h3></div></div></div><p>The remainder of the tutorial walks you through each file one at
+<a name="id1365" id="id1365"></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
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.46.2.7 -r1.46.2.8
--- openacs-4/packages/acs-core-docs/www/tutorial-newpackage.html	13 Jul 2023 12:43:23 -0000	1.46.2.7
+++ openacs-4/packages/acs-core-docs/www/tutorial-newpackage.html	1 Aug 2024 08:03:42 -0000	1.46.2.8
@@ -2,7 +2,7 @@
 <html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><title>Creating an Application Package</title><link rel="stylesheet" type="text/css" href="openacs.css"><meta name="generator" content="DocBook XSL Stylesheets Vsnapshot"><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"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><a href="http://openacs.org"><img src="/doc/images/alex.jpg" style="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"><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 class="ulink" 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"><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"><div class="titlepage"><div><div><h3 class="title"><a name="idp105548967573576"></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"><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"><div class="titlepage"><div><div><h3 class="title"><a name="id1361"></a>Overview</h3></div></div></div><p>To start developing new code in OpenACS, we build a new package. A package 
       is 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 which provides functions to other packages and has no direct interface, a
@@ -18,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"><div class="titlepage"><div><div><h3 class="title"><a name="idp105548968674120"></a>Before you begin</h3></div></div></div><p>You will need:</p><div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem"><p>A computer with a working installation of
+</p></div><div class="sect2"><div class="titlepage"><div><div><h3 class="title"><a name="id1362"></a>Before you begin</h3></div></div></div><p>You will need:</p><div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem"><p>A computer with a working installation of
 	  OpenACS.  If you don't have this, see <a class="xref" href="install-overview.html" title="Chapter 2. Installation Overview">Chapter 2, <i>Installation Overview</i></a>.
 	  </p></li><li class="listitem"><p>Example files, which are included in the
 standard OpenACS 5.9.0 distribution.
-	  </p></li></ul></div><div class="figure"><a name="idp105548968676808"></a><p class="title"><b>Figure 9.1. Assumptions in this section</b></p><div class="figure-contents"><div class="informaltable"><table class="informaltable" 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"><div class="titlepage"><div><div><h3 class="title"><a name="idp105548968684232"></a>Use the APM to initialize a new package</h3></div></div></div><p>We use the <a class="ulink" href="packages.html" target="_top">ACS Package Manager</a> (APM) to add, remove, and
+	  </p></li></ul></div><div class="figure"><a name="id1407"></a><p class="title"><b>Figure 9.1. Assumptions in this section</b></p><div class="figure-contents"><div class="informaltable"><table class="informaltable" 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"><div class="titlepage"><div><div><h3 class="title"><a name="id1363"></a>Use the APM to initialize a new package</h3></div></div></div><p>We use the <a class="ulink" 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
@@ -55,7 +55,7 @@
           <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
           files in the package will be within this directory. <a class="ulink" href="packages.html" target="_top">More on the structure of
-          packages</a>). </p></div><div class="sect2"><div class="titlepage"><div><div><h3 class="title"><a name="idp105548968671432"></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"><div class="titlepage"><div><div><h3 class="title"><a name="id1364"></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
       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
@@ -66,7 +66,7 @@
       in this tutorial.</p><div class="orderedlist"><ol class="orderedlist" type="1"><li class="listitem"><p>Browse to
 <code class="computeroutput"><span class="replaceable"><span class="replaceable">http://yourserver.test:8000</span></span><a class="ulink" href="/admin/applications/application-add" target="_top">/admin/applications/application-add/</a></code>.</p></li><li class="listitem"><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/myfirstpackage</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"><div class="titlepage"><div><div><h3 class="title"><a name="idp105548968645960"></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
+      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"><div class="titlepage"><div><div><h3 class="title"><a name="id1365"></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
 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-pages.adp
===================================================================
RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/tutorial-pages.adp,v
diff -u -r1.6.2.10 -r1.6.2.11
--- openacs-4/packages/acs-core-docs/www/tutorial-pages.adp	13 Jul 2023 12:43:23 -0000	1.6.2.10
+++ openacs-4/packages/acs-core-docs/www/tutorial-pages.adp	1 Aug 2024 08:03:42 -0000	1.6.2.11
@@ -15,23 +15,25 @@
 OpenACS docs are written by the named authors, and may be edited by
 OpenACS documentation staff.</div><div class="sect2">
 <div class="titlepage"><div><div><h3 class="title">
-<a name="idp105548968628424" id="idp105548968628424"></a>Install some API</h3></div></div></div><p>As a workaround for missing content-repository functionality,
+<a name="id1367" id="id1367"></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/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 class="ulink" href="/acs-admin/apm" target="_top">APM</a> and choose "Reload
 changed" for "MyFirstPackage".</p>
 </div><div class="sect2">
 <div class="titlepage"><div><div><h3 class="title">
-<a name="idp105548968632264" id="idp105548968632264"></a>Page Map</h3></div></div></div><p>Our package will have two visible pages. The first shows a list
+<a name="id1368" id="id1368"></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&#39;ll put it in a separate file and include it on the index
 page.</p><div class="figure">
-<a name="idp105548968633288" id="idp105548968633288"></a><p class="title"><strong>Figure 9.5. Page
+<a name="id1411" id="id1411"></a><p class="title"><strong>Figure 9.5. Page
 Map</strong></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">
 <div class="titlepage"><div><div><h3 class="title">
-<a name="idp105548968635720" id="idp105548968635720"></a>Build the "Index" page</h3></div></div></div><p>Each user-visible page in your package has, typically, three
+<a name="id1369" id="id1369"></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 holds the
 procedural logic for the page, including Tcl and
 database-independent SQL code, and does things like check
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.49.2.7 -r1.49.2.8
--- openacs-4/packages/acs-core-docs/www/tutorial-pages.html	13 Jul 2023 12:43:23 -0000	1.49.2.7
+++ openacs-4/packages/acs-core-docs/www/tutorial-pages.html	1 Aug 2024 08:03:42 -0000	1.49.2.8
@@ -2,8 +2,8 @@
 <html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><title>Creating Web Pages</title><link rel="stylesheet" type="text/css" href="openacs.css"><meta name="generator" content="DocBook XSL Stylesheets Vsnapshot"><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"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><a href="http://openacs.org"><img src="/doc/images/alex.jpg" style="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"><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 class="ulink" 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"><div class="titlepage"><div><div><h3 class="title"><a name="idp105548968628424"></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/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 class="ulink" href="/acs-admin/apm" target="_top">APM</a> and choose "Reload changed" for "MyFirstPackage".</p></div><div class="sect2"><div class="titlepage"><div><div><h3 class="title"><a name="idp105548968632264"></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 separate file and include it on the index page.</p><div class="figure"><a name="idp105548968633288"></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"><div class="titlepage"><div><div><h3 class="title"><a name="idp105548968635720"></a>Build the "Index" page</h3></div></div></div><p>Each user-visible page in your package has, typically,
+        </div><div class="sect2"><div class="titlepage"><div><div><h3 class="title"><a name="id1367"></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/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 class="ulink" href="/acs-admin/apm" target="_top">APM</a> and choose "Reload changed" for "MyFirstPackage".</p></div><div class="sect2"><div class="titlepage"><div><div><h3 class="title"><a name="id1368"></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 separate file and include it on the index page.</p><div class="figure"><a name="id1411"></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"><div class="titlepage"><div><div><h3 class="title"><a name="id1369"></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
       holds the procedural logic for the page, including Tcl and
       database-independent SQL code, and does things like
Index: openacs-4/packages/acs-core-docs/www/upgrade-4.5-to-4.6.adp
===================================================================
RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/upgrade-4.5-to-4.6.adp,v
diff -u -r1.4.2.10 -r1.4.2.11
--- openacs-4/packages/acs-core-docs/www/upgrade-4.5-to-4.6.adp	13 Jul 2023 12:43:23 -0000	1.4.2.10
+++ openacs-4/packages/acs-core-docs/www/upgrade-4.5-to-4.6.adp	1 Aug 2024 08:03:42 -0000	1.4.2.11
@@ -9,7 +9,7 @@
 			rightLink="upgrade-4.6.3-to-5" rightLabel="Next">
 		    <div class="sect1">
 <div class="titlepage"><div><div><h2 class="title" style="clear: both">
-<a name="upgrade-4.5-to-4.6" id="upgrade-4.5-to-4.6"></a>Upgrading 4.5 or higher to 4.6.3</h2></div></div></div><a class="indexterm" name="idp105548898317000" id="idp105548898317000"></a><p>The required platform for OpenACS 4.6 is the same as 4.5, with
+<a name="upgrade-4.5-to-4.6" id="upgrade-4.5-to-4.6"></a>Upgrading 4.5 or higher to 4.6.3</h2></div></div></div><a class="indexterm" name="id5407" id="id5407"></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&#39;ll need to upgrade.</p><p>If upgrading from 4.4, you need to manually run
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.30.2.7 -r1.30.2.8
--- openacs-4/packages/acs-core-docs/www/upgrade-4.5-to-4.6.html	13 Jul 2023 12:43:23 -0000	1.30.2.7
+++ openacs-4/packages/acs-core-docs/www/upgrade-4.5-to-4.6.html	1 Aug 2024 08:03:42 -0000	1.30.2.8
@@ -1,5 +1,5 @@
 <!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=UTF-8"><title>Upgrading 4.5 or higher to 4.6.3</title><link rel="stylesheet" type="text/css" href="openacs.css"><meta name="generator" content="DocBook XSL Stylesheets Vsnapshot"><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"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><a href="http://openacs.org"><img src="/doc/images/alex.jpg" style="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"><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="idp105548898317000"></a><p>The required platform for OpenACS 4.6 is the same as
+<html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><title>Upgrading 4.5 or higher to 4.6.3</title><link rel="stylesheet" type="text/css" href="openacs.css"><meta name="generator" content="DocBook XSL Stylesheets Vsnapshot"><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"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><a href="http://openacs.org"><img src="/doc/images/alex.jpg" style="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"><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="id5407"></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 class="ulink" href="http://openacs.org/bugtracker/openacs/bug?bug_number=632" target="_top">Bug #632</a></p><div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: circle; "><li class="listitem" style="list-style-type: circle"><p>A computer with OpenACS 4.5.</p></li><li class="listitem" style="list-style-type: circle"><p><a class="ulink" href="http://openacs.org/projects/openacs/download/" target="_top">OpenACS 4.6 tarball</a> or CVS checkout/export.</p></li><li class="listitem" style="list-style-type: circle"><p>Required for Full Text Search on PostgreSQL: <a class="ulink" href="http://openfts.sourceforge.net" target="_top">OpenFTS 0.3.2</a></p></li></ul></div><div class="orderedlist"><ol class="orderedlist" type="1"><li class="listitem"><p><b>Make a Backup. </b>Back up the database and filesystem (see <a class="xref" href="snapshot-backup.html" title="Manual backup and recovery">the section called “Manual backup and recovery”</a>).</p></li><li class="listitem"><p><b>OPTIONAL: Upgrade OpenFTS. </b><a class="xref" 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 “Upgrading OpenFTS from 0.2 to 0.3.2”</a></p></li><li class="listitem"><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 class="listitem"><p><b>Upgrade the filesystem. </b><a class="xref" href="upgrade-openacs-files.html" title="Upgrading the OpenACS files">the section called “Upgrading the OpenACS files”</a></p></li><li class="listitem"><p>
Index: openacs-4/packages/acs-core-docs/www/upgrade-openacs-files.adp
===================================================================
RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/upgrade-openacs-files.adp,v
diff -u -r1.5.2.10 -r1.5.2.11
--- openacs-4/packages/acs-core-docs/www/upgrade-openacs-files.adp	13 Jul 2023 12:43:23 -0000	1.5.2.10
+++ openacs-4/packages/acs-core-docs/www/upgrade-openacs-files.adp	1 Aug 2024 08:03:42 -0000	1.5.2.11
@@ -12,8 +12,8 @@
 <a name="upgrade-openacs-files" id="upgrade-openacs-files"></a>Upgrading
 the OpenACS files</h2></div></div></div><div class="sect2">
 <div class="titlepage"><div><div><h3 class="title">
-<a name="idp105548898691016" id="idp105548898691016"></a>Choosing a Method to Upgrade your
-Files</h3></div></div></div><p>OpenACS is distributed in many different ways:</p><div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc;">
+<a name="id1353" id="id1353"></a>Choosing a
+Method to Upgrade your Files</h3></div></div></div><p>OpenACS is distributed in many different ways:</p><div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc;">
 <li class="listitem"><p>as a collection of files</p></li><li class="listitem"><p>as one big tarball</p></li><li class="listitem"><p>via CVS</p></li><li class="listitem"><p>via automatic download from within the APM (package manager)</p></li>
 </ul></div><p>Upgrades work by first changing the filesystem (via any of the
 previous methods), and then using the APM to scan the filesystem,
@@ -27,7 +27,8 @@
 </p>
 </div><div class="sect2">
 <div class="titlepage"><div><div><h3 class="title">
-<a name="idp105548898695368" id="idp105548898695368"></a>Methods of upgrading OpenACS files</h3></div></div></div><div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc;">
+<a name="id1354" id="id1354"></a>Methods of
+upgrading OpenACS files</h3></div></div></div><div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc;">
 <li class="listitem">
 <p>
 <strong>Upgrading files for a site which is not in a CVS
@@ -56,7 +57,7 @@
 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="idp105548898671048" id="idp105548898671048"></a><p class="title"><strong>Figure 5.2. Upgrading a local CVS
+<a name="id1397" id="id1397"></a><p class="title"><strong>Figure 5.2. Upgrading a local CVS
 repository</strong></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 class="itemizedlist" style="list-style-type: circle;">
 <li class="listitem">
@@ -196,7 +197,8 @@
 </pre></li></ol></div>
 </div><div class="sect2">
 <div class="titlepage"><div><div><h3 class="title">
-<a name="idp105548898620872" id="idp105548898620872"></a>Upgrading a Production Site Safely</h3></div></div></div><p>If you are upgrading a production OpenACS site which is on a
+<a name="id1355" id="id1355"></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 class="orderedlist" type="1">
 <li class="listitem"><p>Declare a freeze on new cvs updates - ie, you cannot run cvs
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.31.2.7 -r1.31.2.8
--- openacs-4/packages/acs-core-docs/www/upgrade-openacs-files.html	13 Jul 2023 12:43:23 -0000	1.31.2.7
+++ openacs-4/packages/acs-core-docs/www/upgrade-openacs-files.html	1 Aug 2024 08:03:42 -0000	1.31.2.8
@@ -1,5 +1,5 @@
 <!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=UTF-8"><title>Upgrading the OpenACS files</title><link rel="stylesheet" type="text/css" href="openacs.css"><meta name="generator" content="DocBook XSL Stylesheets Vsnapshot"><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"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><a href="http://openacs.org"><img src="/doc/images/alex.jpg" style="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"><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"><div class="titlepage"><div><div><h3 class="title"><a name="idp105548898691016"></a>Choosing a Method to Upgrade your Files</h3></div></div></div><p>OpenACS is distributed in many different ways:
+<html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><title>Upgrading the OpenACS files</title><link rel="stylesheet" type="text/css" href="openacs.css"><meta name="generator" content="DocBook XSL Stylesheets Vsnapshot"><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"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><a href="http://openacs.org"><img src="/doc/images/alex.jpg" style="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"><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"><div class="titlepage"><div><div><h3 class="title"><a name="id1353"></a>Choosing a Method to Upgrade your Files</h3></div></div></div><p>OpenACS is distributed in many different ways:
         </p><div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem"><p>as a collection of files</p></li><li class="listitem"><p> as one big tarball</p></li><li class="listitem"><p> via CVS</p></li><li class="listitem"><p> via automatic download from within the APM
             (package manager)</p></li></ul></div><p>
       </p><p>Upgrades work by first changing the filesystem (via any
@@ -11,7 +11,7 @@
         describes whether or not you need to be upgrading using this
         page or not:
         <a class="xref" href="upgrade-5-0-dot.html" title="Upgrading an OpenACS 5.0.0 or greater installation">the section called “Upgrading an OpenACS 5.0.0 or greater installation”</a>
-      </p></div><div class="sect2"><div class="titlepage"><div><div><h3 class="title"><a name="idp105548898695368"></a>Methods of upgrading OpenACS files</h3></div></div></div><div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem"><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
+      </p></div><div class="sect2"><div class="titlepage"><div><div><h3 class="title"><a name="id1354"></a>Methods of upgrading OpenACS files</h3></div></div></div><div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem"><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>
@@ -32,7 +32,7 @@
         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="idp105548898671048"></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 class="itemizedlist" style="list-style-type: circle; "><li class="listitem"><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="id1397"></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 class="itemizedlist" style="list-style-type: circle; "><li class="listitem"><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
@@ -97,7 +97,7 @@
       </p><div class="orderedlist"><ol class="orderedlist" type="1"><li class="listitem"><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>
 (CVS feedback)
-[$OPENACS_SERVICE_NAME $OPENACS_SERVICE_NAME]$</pre></li></ol></div></div><div class="sect2"><div class="titlepage"><div><div><h3 class="title"><a name="idp105548898620872"></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 class="orderedlist" type="1"><li class="listitem"><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"><div class="titlepage"><div><div><h3 class="title"><a name="id1355"></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 class="orderedlist" type="1"><li class="listitem"><p>Declare a freeze on new cvs updates - ie, you cannot run cvs update
    on the production site</p></li><li class="listitem"><p>
             Make a manual backup of the production site in addition to the
    automated backups</p></li><li class="listitem"><p>Import the new code (for example, OpenACS 5.0.4, openacs-5-0-compat versions of
Index: openacs-4/packages/acs-core-docs/www/upgrade-overview.adp
===================================================================
RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/upgrade-overview.adp,v
diff -u -r1.4.2.9 -r1.4.2.10
--- openacs-4/packages/acs-core-docs/www/upgrade-overview.adp	13 Jul 2023 12:43:24 -0000	1.4.2.9
+++ openacs-4/packages/acs-core-docs/www/upgrade-overview.adp	1 Aug 2024 08:03:42 -0000	1.4.2.10
@@ -26,11 +26,11 @@
 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="idp105548898306120" id="idp105548898306120"></a><p class="title"><strong>Figure 5.1. Upgrading with the
+<a name="id1396" id="id1396"></a><p class="title"><strong>Figure 5.1. Upgrading with the
 APM</strong></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&#39;s always a good idea to precede an upgrade attempt with a
 <a class="link" href="snapshot-backup" title="Manual backup and recovery">snapshot backup</a>.</p><div class="table">
-<a name="idp105548898309320" id="idp105548898309320"></a><p class="title"><strong>Table 5.1. Assumptions in this
+<a name="id1416" id="id1416"></a><p class="title"><strong>Table 5.1. Assumptions in this
 section</strong></p><div class="table-contents"><table class="table" summary="Assumptions in this section" cellspacing="0" border="1">
 <colgroup>
 <col><col>
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.30.2.7 -r1.30.2.8
--- openacs-4/packages/acs-core-docs/www/upgrade-overview.html	13 Jul 2023 12:43:24 -0000	1.30.2.7
+++ openacs-4/packages/acs-core-docs/www/upgrade-overview.html	1 Aug 2024 08:03:42 -0000	1.30.2.8
@@ -4,4 +4,4 @@
     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 class="itemizedlist" style="list-style-type: disc; "><li class="listitem"><p>Your OpenACS Core is 5.0.0 or later</p></li><li class="listitem"><p>You do not keep your OpenACS site in a local CVS repository</p></li><li class="listitem"><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 class="orderedlist" type="1"><li class="listitem"><p>Browse to the <a class="ulink" href="/acs-admin/install/" target="_top">Installer</a>.</p></li><li class="listitem"><p>Click install or upgrade under "Install from OpenACS Repository" and select the packages to install or upgrade.</p></li><li class="listitem"><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="idp105548898306120"></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 class="link" href="snapshot-backup.html" title="Manual backup and recovery">snapshot backup</a>.</p><div class="table"><a name="idp105548898309320"></a><p class="title"><b>Table 5.1. Assumptions in this section</b></p><div class="table-contents"><table class="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></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 class="itemizedlist" style="list-style-type: disc; "><li class="listitem"><p>Your OpenACS Core is 5.0.0 or later</p></li><li class="listitem"><p>You do not keep your OpenACS site in a local CVS repository</p></li><li class="listitem"><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 class="orderedlist" type="1"><li class="listitem"><p>Browse to the <a class="ulink" href="/acs-admin/install/" target="_top">Installer</a>.</p></li><li class="listitem"><p>Click install or upgrade under "Install from OpenACS Repository" and select the packages to install or upgrade.</p></li><li class="listitem"><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="id1396"></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 class="link" href="snapshot-backup.html" title="Manual backup and recovery">snapshot backup</a>.</p><div class="table"><a name="id1416"></a><p class="title"><b>Table 5.1. Assumptions in this section</b></p><div class="table-contents"><table class="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></body></html>
Index: openacs-4/packages/acs-core-docs/www/variables.adp
===================================================================
RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/variables.adp,v
diff -u -r1.4.2.9 -r1.4.2.10
--- openacs-4/packages/acs-core-docs/www/variables.adp	13 Jul 2023 12:43:24 -0000	1.4.2.9
+++ openacs-4/packages/acs-core-docs/www/variables.adp	1 Aug 2024 08:03:42 -0000	1.4.2.10
@@ -19,7 +19,7 @@
 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 class="ulink" 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="idp105548968362312" id="idp105548968362312"></a><p class="title"><strong>Example 12.1. Getting datetime from
+<a name="id1422" id="id1422"></a><p class="title"><strong>Example 12.1. Getting datetime from
 the database ANSI-style</strong></p><div class="example-contents"><pre class="programlisting">
 db_multirow -extend { mydate_pretty } {
     select to_char(mydate, 'YYYY-MM-DD HH24:MI:SS') as mydate_ansi,
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.33.2.7 -r1.33.2.8
--- openacs-4/packages/acs-core-docs/www/variables.html	13 Jul 2023 12:43:24 -0000	1.33.2.7
+++ openacs-4/packages/acs-core-docs/www/variables.html	1 Aug 2024 08:03:42 -0000	1.33.2.8
@@ -4,7 +4,7 @@
           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 class="ulink" 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="idp105548968362312"></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 class="ulink" 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="id1422"></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 } {
     select to_char(mydate, 'YYYY-MM-DD HH24:MI:SS') as mydate_ansi,
           ...
     ...
Fisheye: Tag 1.1 refers to a dead (removed) revision in file `openacs-4/packages/acs-core-docs/www/xml/for-everyone/release-notes-5-10-1.xml'.
Fisheye: No comparison available.  Pass `N' to diff?
Fisheye: Tag 1.1.2.2 refers to a dead (removed) revision in file `openacs-4/packages/acs-core-docs/www/xml/for-everyone/release-notes-5-10.1.xml'.
Fisheye: No comparison available.  Pass `N' to diff?
Index: openacs-4/packages/acs-messaging/www/doc/requirements.adp
===================================================================
RCS file: /usr/local/cvsroot/openacs-4/packages/acs-messaging/www/doc/requirements.adp,v
diff -u -r1.7.2.2 -r1.7.2.3
--- openacs-4/packages/acs-messaging/www/doc/requirements.adp	31 Jul 2024 09:59:29 -0000	1.7.2.2
+++ openacs-4/packages/acs-messaging/www/doc/requirements.adp	1 Aug 2024 08:03:42 -0000	1.7.2.3
@@ -156,5 +156,5 @@
 <hr>
 <address><a href="mailto:kapoor\@maya.com"></a></address>
 
-Last modified: $&zwnj;Id: requirements.html,v 1.3.2.1 2019/08/15 10:20:04
+Last modified: $&zwnj;Id: requirements.html,v 1.3.2.2 2024/08/01 07:38:16
 gustafn Exp $
Index: openacs-4/packages/acs-service-contract/www/doc/index.adp
===================================================================
RCS file: /usr/local/cvsroot/openacs-4/packages/acs-service-contract/www/doc/index.adp,v
diff -u -r1.7.2.3 -r1.7.2.4
--- openacs-4/packages/acs-service-contract/www/doc/index.adp	31 Jul 2024 09:59:29 -0000	1.7.2.3
+++ openacs-4/packages/acs-service-contract/www/doc/index.adp	1 Aug 2024 08:03:42 -0000	1.7.2.4
@@ -57,8 +57,8 @@
 <h2>FAQ</h2>
 <h3>Why Does an implementation reference an interface?</h3>
 <p>This might seem a little strange since a binding is the official
-reference between an implementation and an interface. However, it is
-quite possible that an implementation for interface might exist
+reference between an implementation and an interface. However, it
+is quite possible that an implementation for interface might exist
 prior to the interface being defined, ie the interface defining
 package is not installed. By retaining this information the
 interface defining package can be installed and the implementations
Index: openacs-4/packages/acs-templating/www/doc/index.adp
===================================================================
RCS file: /usr/local/cvsroot/openacs-4/packages/acs-templating/www/doc/index.adp,v
diff -u -r1.4.2.2 -r1.4.2.3
--- openacs-4/packages/acs-templating/www/doc/index.adp	1 Aug 2023 14:59:56 -0000	1.4.2.2
+++ openacs-4/packages/acs-templating/www/doc/index.adp	1 Aug 2024 08:03:38 -0000	1.4.2.3
@@ -34,8 +34,6 @@
 </tr><tr>
 <td colspan="2"><a href="demo/">Demonstration</a></td><td>Samples of the various mechanisms, with both Tcl and ADP
 parts.</td>
-</tr><tr>
-<td colspan="2"><a href="gadgets/">Gadgets</a></td><td>Eye candies and other general-purpose features.</td>
 </tr>
 </table>
 <h2>Release Notes</h2>
Index: openacs-4/packages/assessment/www/doc/data_collection.adp
===================================================================
RCS file: /usr/local/cvsroot/openacs-4/packages/assessment/www/doc/data_collection.adp,v
diff -u -r1.5.2.4 -r1.5.2.5
--- openacs-4/packages/assessment/www/doc/data_collection.adp	31 Jul 2024 09:59:29 -0000	1.5.2.4
+++ openacs-4/packages/assessment/www/doc/data_collection.adp	1 Aug 2024 08:03:42 -0000	1.5.2.5
@@ -250,7 +250,7 @@
 </ul>
 <ul><li>
 <span style="font-weight: bold;">Signing of content</span>
-allows one to verify that the data submitted is actually from the
+allows to verify that the data submitted is actually from the
 person it is pretended to be from. This assumes a public key
 environment where the public key is stored along with the user
 information (e.g. with the users table) and the data stored in
Index: openacs-4/packages/assessment/www/doc/index.adp
===================================================================
RCS file: /usr/local/cvsroot/openacs-4/packages/assessment/www/doc/index.adp,v
diff -u -r1.5.2.3 -r1.5.2.4
--- openacs-4/packages/assessment/www/doc/index.adp	31 Jul 2024 09:59:29 -0000	1.5.2.3
+++ openacs-4/packages/assessment/www/doc/index.adp	1 Aug 2024 08:03:42 -0000	1.5.2.4
@@ -7,9 +7,9 @@
 members of the OpenACS community for data collection functionality
 within the OpenACS framework. We&#39;re using the term
 "Assessment" instead of "Survey" or
-"Questionnaire" (or "Case Report Form" aka
-CRF, the term used in clinical trials) because it is a term used by
-IMS and because it connotes the more generic nature of the data
+"Questionnaire" (or "Case Report Form" aka CRF,
+the term used in clinical trials) because it is a term used by IMS
+and because it connotes the more generic nature of the data
 collection system we&#39;re focusing on.</p>
 <p>There has been considerable recent interest in expanding the
 capabilities of generic data collection packages within OpenACS.
Index: openacs-4/packages/assessment/www/doc/user_interface/assessment_creation.adp
===================================================================
RCS file: /usr/local/cvsroot/openacs-4/packages/assessment/www/doc/user_interface/assessment_creation.adp,v
diff -u -r1.9.2.4 -r1.9.2.5
--- openacs-4/packages/assessment/www/doc/user_interface/assessment_creation.adp	31 Jul 2024 09:59:30 -0000	1.9.2.4
+++ openacs-4/packages/assessment/www/doc/user_interface/assessment_creation.adp	1 Aug 2024 08:03:42 -0000	1.9.2.5
@@ -155,8 +155,8 @@
 </ul>
 </li><li>Survey Import / Export
 <ul>
-<li>Type: (select box): CSV, WebCT, SCORM, Blackboard, IMS</li><li>File: file (file for import)</li><li>Download filename: short_text. Filename for the download of
-the export.</li>
+<li>Type: (select box): CSV, WebCT, SCORM, Blackboard, IMS</li><li>File: file (file for import)</li><li>Download filename: short_text. Filename for the download of the
+export.</li>
 </ul>
 </li><li>Delete assessment with / without responses</li><li>Assign category to the assessment<br>
 </li><li>Link to a mapping and browsing page to link sections to this
Index: openacs-4/packages/file-storage/www/doc/design.adp
===================================================================
RCS file: /usr/local/cvsroot/openacs-4/packages/file-storage/www/doc/design.adp,v
diff -u -r1.4.2.5 -r1.4.2.6
--- openacs-4/packages/file-storage/www/doc/design.adp	31 Jul 2024 09:59:30 -0000	1.4.2.5
+++ openacs-4/packages/file-storage/www/doc/design.adp	1 Aug 2024 08:03:42 -0000	1.4.2.6
@@ -52,7 +52,7 @@
 from a Web browser. The cracker is now executing arbitrary code on
 your server with all the privileges that you&#39;ve given your Web
 server.</p>
-<p>The File Storage application is not a web-based filesystem, and
+<p>The File Storage application is not a web-based file system, and
 can not be fairly compared against such systems. The role of File
 Storage is to provide a simple web location where users can share a
 versioned document. It does not allow much functionality with
@@ -207,7 +207,7 @@
 <h3><a href="/api-doc/proc-view?proc=fs%5ffile%5fdownloader">fs_file_downloader</a></h3><pre>
 fs_file_downloader <em>conn</em><em>key</em>
 </pre><blockquote>Sends the requested file to the user. Note that the
-path has the original filename, so the browser will have a
+path has the original file name, so the browser will have a
 sensible name if you save the file. Version downloads are supported
 by looking for the form variable version_id. We don&#39;t actually
 check that the version_id matches the path, we just serve it up.
@@ -325,7 +325,7 @@
 improvements in Content Repository will allow archiving of the
 contents instead of actually deleting them from the database.</p>
 <h3>VIII. User Interface</h3>
-<p>The user interface attempts to replicate the filesystem
+<p>The user interface attempts to replicate the file system
 metaphors familiar to most computer users, with folders containing
 files. Adding files and folders are hyperlinked options, and a web
 form is used to handle the search function. Files and folders are