Index: openacs-4/packages/acs-core-docs/www/acs-admin.adp =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/acs-admin.adp,v diff -u -N -r1.3 -r1.4 --- openacs-4/packages/acs-core-docs/www/acs-admin.adp 8 Nov 2017 09:42:09 -0000 1.3 +++ openacs-4/packages/acs-core-docs/www/acs-admin.adp 25 Apr 2018 08:38:27 -0000 1.4 @@ -1,17 +1,14 @@ -{/doc/acs-core-docs {ACS Core Documentation}} {Part II. Administrator's -Guide} -Part II. Administrator's -Guide +{/doc/acs-core-docs {ACS Core Documentation}} {Part II. Administrator's Guide} +Part II. Administrator's Guide -
+ leftLink="release-notes" leftLabel="Prev" + title="" + rightLink="install-overview" rightLabel="Next"> +

-Part II. Administrator's -Guide

+Part II. Administrator's Guide

Table of Contents

2. Installation Overview
@@ -99,9 +96,9 @@
- \ No newline at end of file + leftLink="release-notes" leftLabel="Prev" leftTitle="OpenACS Release Notes" + rightLink="install-overview" rightLabel="Next" rightTitle="Chapter 2. Installation +Overview" + homeLink="index" homeLabel="Home" + upLink="index" upLabel="Up"> + \ No newline at end of file Index: openacs-4/packages/acs-core-docs/www/acs-package-dev.adp =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/acs-package-dev.adp,v diff -u -N -r1.2 -r1.3 --- openacs-4/packages/acs-core-docs/www/acs-package-dev.adp 7 Aug 2017 23:47:48 -0000 1.2 +++ openacs-4/packages/acs-core-docs/www/acs-package-dev.adp 25 Apr 2018 08:38:27 -0000 1.3 @@ -1,17 +1,15 @@ -{/doc/acs-core-docs {ACS Core Documentation}} {Part III. For OpenACS Package -Developers} -Part III. For OpenACS Package -Developers +{/doc/acs-core-docs {ACS Core Documentation}} {Part III. For OpenACS Package Developers} +Part III. For OpenACS Package Developers -
+ leftLink="install-resources" leftLabel="Prev" + title="" + rightLink="tutorial" rightLabel="Next"> +

-Part III. For OpenACS -Package Developers

+Part III. For OpenACS Package +Developers

Tutorials and reference material for creating new OpenACS packages.

Table of Contents

@@ -87,9 +85,9 @@
- \ No newline at end of file + leftLink="install-resources" leftLabel="Prev" leftTitle="Resources" + rightLink="tutorial" rightLabel="Next" rightTitle="Chapter 9. Development +Tutorial" + homeLink="index" homeLabel="Home" + upLink="index" upLabel="Up"> + \ No newline at end of file Index: openacs-4/packages/acs-core-docs/www/acs-plat-dev.adp =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/acs-plat-dev.adp,v diff -u -N -r1.2 -r1.3 --- openacs-4/packages/acs-core-docs/www/acs-plat-dev.adp 7 Aug 2017 23:47:49 -0000 1.2 +++ openacs-4/packages/acs-core-docs/www/acs-plat-dev.adp 25 Apr 2018 08:38:27 -0000 1.3 @@ -1,17 +1,15 @@ -{/doc/acs-core-docs {ACS Core Documentation}} {Part IV. For OpenACS Platform -Developers} -Part IV. For OpenACS Platform -Developers +{/doc/acs-core-docs {ACS Core Documentation}} {Part IV. For OpenACS Platform Developers} +Part IV. For OpenACS Platform Developers -
+ leftLink="cvs-tips" leftLabel="Prev" + title="" + rightLink="kernel-doc" rightLabel="Next"> +

-Part IV. For OpenACS -Platform Developers

+Part IV. For OpenACS Platform +Developers

Table of Contents

15. Kernel Documentation
@@ -44,11 +42,10 @@
- \ No newline at end of file + leftLink="cvs-tips" leftLabel="Prev" leftTitle="Appendix D. Using CVS with +an OpenACS Site" + rightLink="kernel-doc" rightLabel="Next" rightTitle="Chapter 15. Kernel +Documentation" + homeLink="index" homeLabel="Home" + upLink="index" upLabel="Up"> + \ No newline at end of file Index: openacs-4/packages/acs-core-docs/www/analog-install.adp =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/analog-install.adp,v diff -u -N -r1.3 -r1.4 --- openacs-4/packages/acs-core-docs/www/analog-install.adp 8 Nov 2017 09:42:09 -0000 1.3 +++ openacs-4/packages/acs-core-docs/www/analog-install.adp 25 Apr 2018 08:38:27 -0000 1.4 @@ -3,16 +3,14 @@ Install Analog web file analyzer -
+ leftLink="install-qmail" leftLabel="Prev" + title="Appendix B. Install +additional supporting software" + rightLink="install-nspam" rightLabel="Next"> +

Install Analog web file analyzer

Download the Analog source tarball in /tmp. Unpack, compile, and install -analog.

-[root aolserver]# cd /usr/local/src
+analog.

[root aolserver]# cd /usr/local/src
 [root src]# tar xzf /tmp/analog-5.32.tar.gz
 [root src]# cd analog-5.32
 [root analog-5.32]# make
@@ -31,14 +29,13 @@
 make
 cd ..
 mv analog-5.32 /usr/share/
-

See also the section called -“Set up Log Analysis -Reports” +

See also the section called “Set up Log +Analysis Reports”

- \ No newline at end of file + leftLink="install-qmail" leftLabel="Prev" leftTitle="Install qmail (OPTIONAL)" + rightLink="install-nspam" rightLabel="Next" rightTitle="Install nspam" + homeLink="index" homeLabel="Home" + upLink="install-more-software" upLabel="Up"> + \ No newline at end of file Index: openacs-4/packages/acs-core-docs/www/analog-setup.adp =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/analog-setup.adp,v diff -u -N -r1.3 -r1.4 --- openacs-4/packages/acs-core-docs/www/analog-setup.adp 8 Nov 2017 09:42:10 -0000 1.3 +++ openacs-4/packages/acs-core-docs/www/analog-setup.adp 25 Apr 2018 08:38:27 -0000 1.4 @@ -3,19 +3,18 @@ Set up Log Analysis Reports -
+ leftLink="install-ssl" leftLabel="Prev" + title="Chapter 6. Production +Environments" + rightLink="uptime" rightLabel="Next"> +

Set up Log Analysis Reports

Analog is a program with processes webserver access logs, performs DNS lookup, and outputs HTML reports. Analog should already be installed. A modified configuration file is included in the OpenACS tarball.

  1. -
    -[root src]# su - $OPENACS_SERVICE_NAME
    +
    [root src]# su - $OPENACS_SERVICE_NAME
     [$OPENACS_SERVICE_NAME $OPENACS_SERVICE_NAME]$ cd /var/lib/aolserver/$OPENACS_SERVICE_NAME
     [$OPENACS_SERVICE_NAME $OPENACS_SERVICE_NAME]$ mkdir www/log
     [$OPENACS_SERVICE_NAME $OPENACS_SERVICE_NAME]$ cp -r /usr/share/analog-5.32/images www/log/
    @@ -41,32 +40,27 @@
       /home/$OPENACS_SERVICE_NAME/dnscache: ignoring it
       (For help on all errors and warnings, see docs/errors.html)
     /usr/share/analog-5.32/analog: Warning R: Turning off empty Search Word Report
    -[$OPENACS_SERVICE_NAME $OPENACS_SERVICE_NAME]$
    -

    Verify that it works by browing to http://yourserver.test:8000/log/traffic.html +[$OPENACS_SERVICE_NAME $OPENACS_SERVICE_NAME]$

    Verify that it works by browing to http://yourserver.test:8000/log/traffic.html

  2. Automate this by creating a file in /etc/cron.daily.

     [$OPENACS_SERVICE_NAME $OPENACS_SERVICE_NAME]$ exit
     logout
     
     [root root]# emacs /etc/cron.daily/analog
    -

    Put this into the file:

    -#!/bin/sh
    +

    Put this into the file:

    #!/bin/sh
     
    -/usr/share/analog-5.32/analog -G -g/var/lib/aolserver/$OPENACS_SERVICE_NAME/etc/analog.cfg
    -
    -[root root]# chmod 755 /etc/cron.daily/analog
    -

    Test it by running the script.

    -[root root]# sh /etc/cron.daily/analog
    +/usr/share/analog-5.32/analog -G -g/var/lib/aolserver/$OPENACS_SERVICE_NAME/etc/analog.cfg
    [root root]# chmod 755 /etc/cron.daily/analog
    +

    Test it by running the script.

    [root root]# sh /etc/cron.daily/analog
     

    Browse to http://yourserver.test/log/traffic.html

- \ No newline at end of file + rightLink="uptime" rightLabel="Next" rightTitle="External uptime validation" + homeLink="index" homeLabel="Home" + upLink="maintenance-web" upLabel="Up"> + \ No newline at end of file Index: openacs-4/packages/acs-core-docs/www/aolserver.adp =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/aolserver.adp,v diff -u -N -r1.3 -r1.4 --- openacs-4/packages/acs-core-docs/www/aolserver.adp 8 Nov 2017 09:42:10 -0000 1.3 +++ openacs-4/packages/acs-core-docs/www/aolserver.adp 25 Apr 2018 08:38:27 -0000 1.4 @@ -3,12 +3,11 @@ Install AOLserver 3.3oacs1 -
+ leftLink="install-ldap-radius" leftLabel="Prev" + title="Appendix B. Install +additional supporting software" + rightLink="credits" rightLabel="Next"> +

Install AOLserver 3.3oacs1

<authorblurb>

by Vinod Kurup

</authorblurb>

We recommend the use of AOLserver 4.0.1 or later. These @@ -19,10 +18,9 @@ but if not, you should stick to installing from source.

  1. -Unpack the Aolserver tarball.  -Download the aolserver tarball -and unpack it.

    -[root root]# cd /usr/local/src
    +Unpack the Aolserver tarball.  Download
    +the aolserver tarball
    +and unpack it.

    [root root]# cd /usr/local/src
     [root src]# wget --passive http://uptime.openacs.org/aolserver-openacs/aolserver3.3oacs1.tar.gz
     --15:38:08--  http://uptime.openacs.org/aolserver-openacs/aolserver3.3oacs1.tar.gz
                => `aolserver3.3oacs1.tar.gz'
    @@ -40,16 +38,13 @@
     wget --passive http://uptime.openacs.org/aolserver-openacs/aolserver3.3oacs1.tar.gz
     tar xzf aolserver3.3oacs1.tar.gz
     

    This section also relies on some OpenACS files, which you can -get with the section called -“Unpack the OpenACS -tarball”.

    +get with the section called “Unpack the OpenACS +tarball”.

  2. -Compile AOLserver.  Compile and -install AOLserver. First, prepare the installation directory and -the source code. The message about BUILD-MODULES can be -ignored.

    -root\@yourserver root]# mkdir -p /usr/local/aolserver
    +Compile AOLserver.  Compile and install
    +AOLserver. First, prepare the installation directory and the source
    +code. The message about BUILD-MODULES can be ignored.

    root\@yourserver root]# mkdir -p /usr/local/aolserver
     [root root]# cd /usr/local/src/aolserver
     [root aolserver]# ./conf-clean
     cat: BUILD-MODULES: No such file or directory
    @@ -63,10 +58,8 @@
     properly.

    conf-inst should contain the location where AOLserver is to be installed. Overwrite the -tarball's default value with our default value, /usr/local/aolserver:

    -[root aolserver]# echo "/usr/local/aolserver" > conf-inst
    -[root aolserver]#
    -

    +tarball's default value with our default value, /usr/local/aolserver:

    [root aolserver]# echo "/usr/local/aolserver" > conf-inst
    +[root aolserver]#

    conf-make should contain the name of the GNU Make command on your system. It defaults to gmake. Debian users: @@ -77,8 +70,7 @@ AOLserver 3.3+ad13 and postgresql from apt-get may need to make these symlinks: ln -s /usr/include/postgresql/ /usr/include/pgsql and ln -s /usr/lib/postgresql -/usr/local/pgsql)

    -[root aolserver]# export POSTGRES=/usr/local/pgsql; ./conf
    +/usr/local/pgsql)

    [root aolserver]# export POSTGRES=/usr/local/pgsql; ./conf
     Building in /usr/local/aolserver
     with the following modules:
     AOLserver
    @@ -99,8 +91,7 @@
     Creating  ...
     ==================================================================
     Done Building Sat Mar  8 10:31:35 PST 2003
    -[root aolserver]# 
    -

    This takes about 5 minutes. It builds aolserver, several +[root aolserver]#

    This takes about 5 minutes. It builds aolserver, several modules, and the database driver. (Upgraders, note that the postgres database driver has changed from postgres.so to nspostgres.so). All of the results are logged to files in @@ -109,15 +100,14 @@ build errors.

  3. -Add a database-specific wrapper -script.  This script sets database environment -variables before starting AOLserver; this allows the AOLserver -instance can communicate with the database. There is one script -each for Oracle and PostgreSQL. They don't conflict, so if you -plan to use both databases, install both.

      +Add a database-specific wrapper script.  +This script sets database environment variables before starting +AOLserver; this allows the AOLserver instance can communicate with +the database. There is one script each for Oracle and PostgreSQL. +They don't conflict, so if you plan to use both databases, +install both.

      • -

        Oracle

        -[root aolserver]# cd /usr/local/aolserver/bin
        +

        Oracle

        [root aolserver]# cd /usr/local/aolserver/bin
         [root bin]# cp /var/tmp/openacs-5.9.0/packages/acs-core-docs/www/files/nsd-oracle.txt ./nsd-oracle
         [root bin]# chmod 750 nsd-oracle
         [root bin]#
        @@ -126,8 +116,7 @@
         chmod 750 nsd-oracle
         
      • -

        PostgreSQL

        -[root aolserver]# cd /usr/local/aolserver/bin
        +

        PostgreSQL

        [root aolserver]# cd /usr/local/aolserver/bin
         [root bin]# cp /var/tmp/openacs-5.9.0/packages/acs-core-docs/www/files/nsd-postgres.txt ./nsd-postgres
         [root bin]# chmod 755 nsd-postgres
         [root bin]#
        @@ -139,11 +128,9 @@
         
    • -Install tDOM.  Download the -tDOM +Install tDOM.  Download the tDOM tarball, unpack it, adjust the configuration file to match our -patched distribution of aolserver, and compile it.

      -[root root]# cd /usr/local/src
      +patched distribution of aolserver, and compile it.

      [root root]# cd /usr/local/src
       [root src]# wget --passive http://www.tdom.org/tDOM-0.7.8.tar.gz
       --16:40:58--  http://www.tdom.org/tDOM-0.7.8.tar.gz
                  => `tDOM-0.7.8.tar.gz'
      @@ -168,15 +155,12 @@
       # aolsrc="/usr/src/aolserver-3.4"
       # ../configure --enable-threads --disable-tdomalloc \
       #   --with-aolserver=$aolsrc \
      -#   --with-tcl=$aolsrc/tcl8.3.4/unix 
      -

      to

      +#   --with-tcl=$aolsrc/tcl8.3.4/unix 

      to

       # ----------------------------------------------------
       aolsrc="/usr/local/src/aolserver/aolserver"
       ../configure --enable-threads --disable-tdomalloc \
         --with-aolserver=$aolsrc \
      -  --with-tcl=$aolsrc/tcl8.3.2/unix
      -

      And configure and compile:

      -[root unix]# sh CONFIG
      +  --with-tcl=$aolsrc/tcl8.3.2/unix

      And configure and compile:

      [root unix]# sh CONFIG
       creating cache ./config.cache
       checking for memmove... yes
         (many lines omitted)
      @@ -212,8 +196,7 @@
       sample-config.tcl configuration writes to the default log
       locations, so we need to give it permission to do so or it will
       fail. Grant the web group
      -permission to write to /usr/local/aolserver/log and /usr/local/aolserver/servers.

      -[root root]# cd /usr/local/aolserver
      +permission to write to /usr/local/aolserver/log and /usr/local/aolserver/servers.

      [root root]# cd /usr/local/aolserver
       [root aolserver]# chown -R root.web log servers
       [root aolserver]# chmod -R g+w log servers
       [root aolserver]# ls -l
      @@ -239,15 +222,13 @@
       correctly. We'll use the sample config file provided with
       AOLserver. This file will attempt to guess your IP address and
       hostname. It will then start up the server at port 8000 of that IP
      -address.

      -[root aolserver]# ./bin/nsd -t sample-config.tcl -u nobody -g web
      +address.

      [root aolserver]# ./bin/nsd -t sample-config.tcl -u nobody -g web
       [root aolserver]# [08/Mar/2003:15:07:18][31175.8192][-main-] Notice: config.tcl: starting to read config file...
       [08/Mar/2003:15:07:18][31175.8192][-main-] Warning: config.tcl: nsssl not loaded -- key/cert files do not exist.
       [08/Mar/2003:15:07:18][31175.8192][-main-] Warning: config.tcl: nscp not loaded
       -- user/password is not set.
       [08/Mar/2003:15:07:18][31175.8192][-main-] Notice: config.tcl: finished reading
      -config file.
      -

      The first warning, about nsssl, can be ignored. We won't be +config file.

      The first warning, about nsssl, can be ignored. We won't be using nsssl; we'll be using nsopenssl instead, and we haven't fully configured it yet. The nscp warning refers to the fact that, without a user and password in the config file, the @@ -257,57 +238,50 @@ computer and surfing over to your web page. If you browse from another computer and the sample config file didn't guess your hostname or ip correctly, you'll get a false -negative test.

      -[root aolserver]# lynx localhost:8000
      +negative test.

      [root aolserver]# lynx localhost:8000
       

      You should see a "Welcome to AOLserver" page. If this doesn't work, try going to http://127.0.0.1:8000/. If this still doesn't work, check out the Troubleshooting AOLserver section below. Note that you will not be able to browse to the web page from another machine, because AOLserver is -only listening to the local address.

      Shutdown the test server:

      -[root aolserver]# killall nsd
      -[root aolserver]#
      -

      The killall command will +only listening to the local address.

      Shutdown the test server:

      [root aolserver]# killall nsd
      +[root aolserver]#

      The killall command will kill all processes with the name nsd, but clearly this is not a good tool to use for managing your services in general. We cover this topic in the Keep AOLserver alive section.

    • -Troubleshooting.  If you can't -view the welcome page, it's likely there's a problem with -your server configuration. Start by viewing your AOLserver log, -which is in /usr/local/aolserver/log/server.log. You +Troubleshooting.  If you can't view +the welcome page, it's likely there's a problem with your +server configuration. Start by viewing your AOLserver log, which is +in /usr/local/aolserver/log/server.log. You should also try to find lines of the form:

       [01/Jun/2000:12:11:20][5914.4051][-nssock-] Notice: nssock: listening on http://localhost.localdomain:8000 (127.0.0.1:8000)
      -[01/Jun/2000:12:11:20][5914.4051][-nssock-] Notice: accepting connections
      -

      If you can find these lines, try entering the URL the server is +[01/Jun/2000:12:11:20][5914.4051][-nssock-] Notice: accepting connections

      If you can find these lines, try entering the URL the server is listening on. If you cannot find these lines, there must be an error somewhere in the file. Search for lines beginning with the word Error instead of Notice.

      The sample-config.tcl file grabs your address and hostname from your OS settings.

       set hostname        [ns_info hostname]
      -set address         [ns_info address]
      -

      If you get an error that nssock can't get the requested +set address [ns_info address]

      If you get an error that nssock can't get the requested address, you can set these manually. If you type 0.0.0.0, AOLserver will try to listen on all available addresses. Note: ns_info address doesn't appear to be supported in current versions of AOLserver.

       set hostname        [ns_info hostname]
       #set address         [ns_info address]
      -set address 0.0.0.0
      -
      +set address 0.0.0.0
    • Install Analog web file analyzer. (OPTIONAL)

($‌Id: aolserver.xml,v 1.23 2017/08/07 23:47:54 gustafn Exp $)

- \ No newline at end of file + rightLink="credits" rightLabel="Next" rightTitle="Appendix C. Credits" + homeLink="index" homeLabel="Home" + upLink="install-more-software" upLabel="Up"> + \ No newline at end of file Index: openacs-4/packages/acs-core-docs/www/aolserver4.adp =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/aolserver4.adp,v diff -u -N -r1.3 -r1.4 --- openacs-4/packages/acs-core-docs/www/aolserver4.adp 8 Nov 2017 09:42:10 -0000 1.3 +++ openacs-4/packages/acs-core-docs/www/aolserver4.adp 25 Apr 2018 08:38:27 -0000 1.4 @@ -3,11 +3,11 @@ Install AOLserver 4 -
+ leftLink="postgres" leftLabel="Prev" + title="Chapter 3. Complete +Installation" + rightLink="openacs" rightLabel="Next"> +

Install AOLserver 4

<authorblurb>

by Malte Sussdorff @@ -16,8 +16,7 @@

Check suitability of previously installed TCL.  Start Tcl (type tclsh or find it using -which tclsh).

-[root root]% info exists tcl_platform(threaded)
+which tclsh).

[root root]% info exists tcl_platform(threaded)
 1
 [root root]% info patchlevel
 8.4.7
@@ -30,8 +29,8 @@
 threaded and the version is 8.4 or higher, then installing Tcl from
 source is optional.

Retrieve -Tcl 8.4 (or higher).  Download and install Tcl -8.4 from source

Note for Debian users: you can apt-get install tcl8.4-dev if you +Tcl 8.4 (or higher).  Download and install Tcl 8.4 +from source

Note for Debian users: you can apt-get install tcl8.4-dev if you have the right version (stable users will need to add tcl8.4 to their sources.list file as described on the Install Postgres page). You'll have to use /usr/lib/tcl8.4/ instead of @@ -44,8 +43,7 @@ instructions. On Mac OS X type sudo su - to become root.

Alternatively use curl -L -O instead of wget (especially on Mac OS -X).

-[root root]# cd /usr/local/src
+X).

[root root]# cd /usr/local/src
 [root src]# wget http://heanet.dl.sourceforge.net/sourceforge/tcl/tcl8.4.9-src.tar.gz
 [root src]# tar xfz tcl8.4.9-src.tar.gz
 [root src]# cd tcl8.4.9/unix
@@ -62,8 +60,7 @@
 
  • Retrieve AOLserver.  Download the -AOLserver from CVS.

    -[root root]# cd /usr/local/src
    +AOLserver from CVS.

    [root root]# cd /usr/local/src
     [root src]# mkdir aolserver40r10
     [root src]# cd aolserver40r10
     [root aolserver]# cvs -z3 -d:pserver:anonymous\@cvs.sourceforge.net:/cvsroot/aolserver login
    @@ -90,11 +87,10 @@
     
  • -Configure, compile and install -AOLserver.  Many people need to run more than -one version of AOLserver in parallel. This section accommodates -future upgrades by installing AOLserver 4 in /usr/local/aolserver40r9.

    -[root aolserver]# cd /usr/local/src/aolserver40r10/aolserver
    +Configure, compile and install AOLserver. 
    +Many people need to run more than one version of AOLserver in
    +parallel. This section accommodates future upgrades by installing
    +AOLserver 4 in /usr/local/aolserver40r9.

    [root aolserver]# cd /usr/local/src/aolserver40r10/aolserver
     [root aolserver]# ./configure --prefix=/usr/local/aolserver40r10 --with-tcl=/usr/local/lib/
     [root aolserver]# make installcd /usr/local/src/aolserver40r10/aolserver
     ./configure --prefix=/usr/local/aolserver40r10 --with-tcl=/usr/local/lib/
    @@ -106,95 +102,79 @@
     /usr/local/aolserver40r10
     instead of /usr/local/aolserver
     in the steps below and check both scripts and makefiles to ensure
    -they use the correct path.

    -[root aolserver]# ln -s /usr/local/aolserver40r10 /usr/local/aolserver
    +they use the correct path.

    [root aolserver]# ln -s /usr/local/aolserver40r10 /usr/local/aolserver
     
  • Configure, compile and install the modules. 

    1. -

      Install nscache

      -[root aolserver]# cd /usr/local/src/aolserver40r10/nscache
      +

      Install nscache

      [root aolserver]# cd /usr/local/src/aolserver40r10/nscache
       [root nscache]# make install AOLSERVER=/usr/local/aolserver
       
    2. -

      Install nsoracle (if you want to use Oracle)

      -[root nscache]# cd ../nsoracle
      +

      Install nsoracle (if you want to use Oracle)

      [root nscache]# cd ../nsoracle
       [root nsoracle]# make install AOLSERVER=/usr/local/aolserver
       

      OpenACS looks for the Oracle driver at /usr/local/aolserver/bin/ora8.so, but some versions of nsoracle may create nsoracle.so instead. In that case, you can symlink (ln -s nsoracle.so ora8.so) to fix it.

    3. -

      Install nspostgres (if you want to use Postgres)

      -[root nscache]# cd ../nspostgres
      +

      Install nspostgres (if you want to use Postgres)

      [root nscache]# cd ../nspostgres
       [root nspostgres]# export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/pgsql/lib:/usr/local/aolserver/lib
       [root nspostgres]# make install POSTGRES=LSB ACS=1 INST=/usr/local/aolserver  AOLSERVER=/usr/local/aolserver
       

      If you get errors like:

       nspostgres.c: In function `Ns_PgTableList':
      -nspostgres.c:679: warning: passing arg 3 of `Tcl_DStringAppend' as signed due to prototype
      -

      then PostGreSQL is probably not in the standard location. The +nspostgres.c:679: warning: passing arg 3 of `Tcl_DStringAppend' as signed due to prototype

      then PostGreSQL is probably not in the standard location. The location of PostGreSQL is very dependent on which method was used to install it. To correct the problem, replace LSB with the path to the path to your PostGreSQL installation. Often this is /usr/local/pgsql.

      You can use the ldd command to verify that all libraries are linked in: ldd /usr/local/src/aolserver40r10/nspostgres/nspostgres.so

      If you run into problems with libpq.a do the following (and -repeat the step above)

      -[root nspostgres]# ranlib /usr/local/pgsql/lib/libpq.a
      +repeat the step above)

      [root nspostgres]# ranlib /usr/local/pgsql/lib/libpq.a
       

      If you run into problems with the linker, edit the Makefile. Add --lnsdb to the MODLIBS var.

      -MODLIBS = -L$(PGLIB) -lpq -lnsdb
      +-lnsdb to the MODLIBS var.

      MODLIBS = -L$(PGLIB) -lpq -lnsdb
       
    4. -

      Install nssha1

      -[root nspostgres]# cd ../nssha1
      -

      Now install nssha1:

      -[root nssha1]# make install AOLSERVER=/usr/local/aolserver
      +

      Install nssha1

      [root nspostgres]# cd ../nssha1
      +

      Now install nssha1:

      [root nssha1]# make install AOLSERVER=/usr/local/aolserver
       

      If the make fails you will have to edit nssha1.c. Comment out the following 2 lines (lines 139-140):

       // typedef unsigned int u_int32_t;
      -// typedef unsigned char u_int8_t;
      -
      +// typedef unsigned char u_int8_t;
    5. -

      Install tDOM

      -[root nssha1]# cd ../tDOM-0.8.0/unix
      +

      Install tDOM

      [root nssha1]# cd ../tDOM-0.8.0/unix
       

      Edit the CONFIG file. Uncomment the instructions meant for AOLserver 4, but edit it to look like this:

       ../configure --enable-threads --disable-tdomalloc
      -          --prefix=/usr/local/aolserver --with-tcl=/usr/local/lib
      -

      Note that the location of the Tcl library may vary on different -platforms (e.g. for Debian 3.0: --with-tcl=/usr/lib/tcl8.4)

      Now you can compile and configure tDOM

      -[root unix]# sh CONFIG
      +          --prefix=/usr/local/aolserver --with-tcl=/usr/local/lib

      Note that the location of the Tcl library may vary on different +platforms (e.g. for Debian 3.0: --with-tcl=/usr/lib/tcl8.4)

      Now you can compile and configure tDOM

      [root unix]# sh CONFIG
       [root unix]# make install
       
    6. -

      Install TCLLIB

      -[root nssha1]# cd ../tcllib
      -

      Configure and compile TCLLIB

      -[root unix]# ./configure -prefix=/usr/local/aolserver40r10
      +

      Install TCLLIB

      [root nssha1]# cd ../tcllib
      +

      Configure and compile TCLLIB

      [root unix]# ./configure -prefix=/usr/local/aolserver40r10
       [root unix]# make install
       
  • -Add a database-specific wrapper -script.  This script sets database environment -variables before starting AOLserver; this allows the AOLserver -instance to communicate with the database. There is one script for -Oracle and one for PostgreSQL. They do not conflict. If you plan to -use both databases, install both. Note that this section requires -you to have OpenACS files available, which you can get through CVS, +Add a database-specific wrapper script.  +This script sets database environment variables before starting +AOLserver; this allows the AOLserver instance to communicate with +the database. There is one script for Oracle and one for +PostgreSQL. They do not conflict. If you plan to use both +databases, install both. Note that this section requires you to +have OpenACS files available, which you can get through CVS, through a tarball, or by other means. You can come back to this section after you acquire the OpenACS code, but don't forget to come back. (Note to maintainers: this should be moved to the next page and integrated into the text there)

    • -

      Oracle

      -[root aolserver]# cd /usr/local/aolserver/bin
      +

      Oracle

      [root aolserver]# cd /usr/local/aolserver/bin
       [root bin]# cp /tmp/openacs-5.9.0/packages/acs-core-docs/www/files/nsd-oracle.txt ./nsd-oracle
       [root bin]# chmod 750 nsd-oracle
       [root bin]#
      @@ -203,8 +183,7 @@
       chmod 750 nsd-oracle
       
    • -

      PostgreSQL

      -[root aolserver]# cd /usr/local/aolserver/bin
      +

      PostgreSQL

      [root aolserver]# cd /usr/local/aolserver/bin
       [root bin]# cp /var/tmp/openacs-5.9.0/packages/acs-core-docs/www/files/nsd-postgres.txt ./nsd-postgres
       [root bin]# chmod 755 nsd-postgres
       [root bin]#
      @@ -216,8 +195,8 @@
       

    You may need to edit these scripts if you are not using /usr/local/aolserver as the directory of Aolserver4.

  • -Change startup script (optional).  -If you want to run AOLserver on a port below 1024 (normally, for a +Change startup script (optional).  If you +want to run AOLserver on a port below 1024 (normally, for a webserver you will use 80), you will have to change the /var/lib/aolserver/service0/etc/daemontools/run script according to the documentation found there (namely: Add the @@ -229,8 +208,8 @@ 23:47:54 gustafn Exp $)

  • - \ No newline at end of file + leftLink="postgres" leftLabel="Prev" leftTitle="Install PostgreSQL" + rightLink="openacs" rightLabel="Next" rightTitle="Install OpenACS 5.9.0" + homeLink="index" homeLabel="Home" + upLink="complete-install" upLabel="Up"> + \ No newline at end of file Index: openacs-4/packages/acs-core-docs/www/apm-design.adp =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/apm-design.adp,v diff -u -N -r1.3 -r1.4 --- openacs-4/packages/acs-core-docs/www/apm-design.adp 8 Nov 2017 09:42:10 -0000 1.3 +++ openacs-4/packages/acs-core-docs/www/apm-design.adp 25 Apr 2018 08:38:27 -0000 1.4 @@ -3,11 +3,11 @@ Package Manager Design -
    + leftLink="apm-requirements" leftLabel="Prev" + title="Chapter 15. Kernel +Documentation" + rightLink="db-api-detailed" rightLabel="Next"> +

    Package Manager Design

    <authorblurb>

    By Bryan Quinn

    </authorblurb>

    @@ -46,8 +46,8 @@ OpenACS Services: the aforementioned building blocks. Examples of services include the OpenACS Content Repository, the OpenACS Templating System, -and the OpenACS -Kernel, which includes APM.

    +and the OpenACS Kernel, +which includes APM.

    An installation of the OpenACS includes the OpenACS Kernel, some services that extend the kernel's functionality, and some applications intended for end-users. Packages function as @@ -690,8 +690,8 @@

    - \ No newline at end of file + leftLink="apm-requirements" leftLabel="Prev" leftTitle="Package Manager Requirements" + rightLink="db-api-detailed" rightLabel="Next" rightTitle="Database Access API" + homeLink="index" homeLabel="Home" + upLink="kernel-doc" upLabel="Up"> + \ No newline at end of file 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 -N -r1.3 -r1.4 --- openacs-4/packages/acs-core-docs/www/apm-requirements.adp 8 Nov 2017 09:42:10 -0000 1.3 +++ openacs-4/packages/acs-core-docs/www/apm-requirements.adp 25 Apr 2018 08:38:27 -0000 1.4 @@ -3,11 +3,11 @@ Package Manager Requirements -
    + leftLink="subsites-design" leftLabel="Prev" + title="Chapter 15. Kernel +Documentation" + rightLink="apm-design" rightLabel="Next"> +

    Package Manager Requirements

    <authorblurb>

    By Bryan Quinn and Todd Nightingale

    </authorblurb>
    @@ -696,8 +696,8 @@
    - \ No newline at end of file + leftLink="subsites-design" leftLabel="Prev" leftTitle="Subsites Design Document" + rightLink="apm-design" rightLabel="Next" rightTitle="Package Manager Design" + homeLink="index" homeLabel="Home" + upLink="kernel-doc" upLabel="Up"> + \ No newline at end of file Index: openacs-4/packages/acs-core-docs/www/automated-backup.adp =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/automated-backup.adp,v diff -u -N -r1.3 -r1.4 --- openacs-4/packages/acs-core-docs/www/automated-backup.adp 8 Nov 2017 09:42:10 -0000 1.3 +++ openacs-4/packages/acs-core-docs/www/automated-backup.adp 25 Apr 2018 08:38:27 -0000 1.4 @@ -3,11 +3,11 @@ Automated Backup -
    + leftLink="snapshot-backup" leftLabel="Prev" + title="Chapter 8. Backup and +Recovery" + rightLink="backups-with-cvs" rightLabel="Next"> +

    Automated Backup

    The recommended backup strategy for a production sit is to use an automated script which first backs up the database to a file in @@ -19,21 +19,18 @@

  • Make sure that the manual backup process described above works.

  • Customize the default backup script. Edit /var/lib/aolserver/$OPENACS_SERVICE_NAME/etc/backup.sh with your specific parameters.

  • -

    Make sure the file is executable:

    -chmod +x backup.sh
    -
    +

    Make sure the file is executable:

    chmod +x backup.sh
  • Set this file to run automatically by adding a line to root's crontab. (Typically, with export EDITOR=emacs; crontab -e.) This example runs the backup script at 1:30 am every day.

    -30 1 * * *        sh /var/lib/aolserver/$OPENACS_SERVICE_NAME/etc/backup.sh
    -
    +30 1 * * * sh /var/lib/aolserver/$OPENACS_SERVICE_NAME/etc/backup.sh
  • - \ No newline at end of file + leftLink="snapshot-backup" leftLabel="Prev" leftTitle="Manual backup and recovery" + rightLink="backups-with-cvs" rightLabel="Next" rightTitle="Using CVS for backup-recovery" + homeLink="index" homeLabel="Home" + upLink="backup-recovery" upLabel="Up"> + \ No newline at end of file Index: openacs-4/packages/acs-core-docs/www/automated-testing-best-practices.adp =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/automated-testing-best-practices.adp,v diff -u -N -r1.3 -r1.4 --- openacs-4/packages/acs-core-docs/www/automated-testing-best-practices.adp 8 Nov 2017 09:42:10 -0000 1.3 +++ openacs-4/packages/acs-core-docs/www/automated-testing-best-practices.adp 25 Apr 2018 08:38:27 -0000 1.4 @@ -3,58 +3,56 @@ Automated Testing -
    + leftLink="variables" leftLabel="Prev" + title="Chapter 12. Engineering +Standards" + rightLink="doc-standards" rightLabel="Next"> +

    Automated Testing

    <authorblurb>

    By Jeff Davis

    </authorblurb>

    Best practices in writing OpenACS automated tests

    • -Special characters in Tcl.  Try -strings starting with a -Bad -and strings containing [BAD], +Special characters in Tcl.  Try strings +starting with a -Bad and +strings containing [BAD], {, \077, and $Bad. For user input, [BAD] should never be evaluated, \077 should not be turned into a ? and $Bad should not be interpolated. The string -Bad [BAD] \077 { $Bad should be valid user input, should pass through the system unaltered, and if it isn't that's a bug.

    • -Quoting issues.  Put some html in -plain text fields and make sure the result is properly quoted -anywhere it shows up (I use "<b>bold</b>" -usually). Look out especially for quoting errors in the context bar -and in round trips via an edit form. For fields that disallow html -tags you can use &amp; to -check that the field is quoted properly. If it is not displayed as -&amp; then the quoting for -the field is incorrect. (It's not clear whether this should be -considered an error but given that data for text fields can come -from various sources if it's text it should be properly quoted -and we should not rely on input validation to prevent XSS security -holes.)

    • -Whitespace input.  Check that -whitespace is not considered valid input for a field if it does not -make sense. For example, the subject of a forum post is used to +Quoting issues.  Put some html in plain +text fields and make sure the result is properly quoted anywhere it +shows up (I use "<b>bold</b>" usually). Look +out especially for quoting errors in the context bar and in round +trips via an edit form. For fields that disallow html tags you can +use &amp; to check that the +field is quoted properly. If it is not displayed as &amp; then the quoting for the field is +incorrect. (It's not clear whether this should be considered an +error but given that data for text fields can come from various +sources if it's text it should be properly quoted and we should +not rely on input validation to prevent XSS security holes.)

    • +Whitespace input.  Check that whitespace +is not considered valid input for a field if it does not make +sense. For example, the subject of a forum post is used to construct a link and if it is " " it will have a link of <a href="..."> </a> which would not be clickable if whitespace was allowed as a valid input.

    • -Doubleclick.  Make sure that if you -submit a form, use the back button, and submit again that the -behavior is reasonable (correct behavior depends on what the form -is for, but a server error is not reasonable).

    • -Duplicate names.  Make sure that if -a duplicate name is entered that there is a reasonable error rather +Doubleclick.  Make sure that if you submit +a form, use the back button, and submit again that the behavior is +reasonable (correct behavior depends on what the form is for, but a +server error is not reasonable).

    • +Duplicate names.  Make sure that if a +duplicate name is entered that there is a reasonable error rather than a server error. Check for insert, move, copy, and rename.

    ($‌Id: auto-testing.xml,v 1.4 2017/08/07 23:47:54 gustafn Exp $)

    - \ No newline at end of file + leftLink="variables" leftLabel="Prev" leftTitle="Variables" + rightLink="doc-standards" rightLabel="Next" rightTitle="Chapter 13. Documentation +Standards" + homeLink="index" homeLabel="Home" + upLink="eng-standards" upLabel="Up"> + \ No newline at end of file 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 -N -r1.3 -r1.4 --- openacs-4/packages/acs-core-docs/www/backup-recovery.adp 8 Nov 2017 09:42:10 -0000 1.3 +++ openacs-4/packages/acs-core-docs/www/backup-recovery.adp 25 Apr 2018 08:38:27 -0000 1.4 @@ -1,18 +1,15 @@ -{/doc/acs-core-docs {ACS Core Documentation}} {Chapter 8. Backup and -Recovery} -Chapter 8. Backup and -Recovery +{/doc/acs-core-docs {ACS Core Documentation}} {Chapter 8. Backup and Recovery} +Chapter 8. Backup and Recovery -
    + rightLink="install-next-backups" rightLabel="Next"> +

    -Chapter 8. Backup and -Recovery

    +Chapter 8. Backup and Recovery
    - \ No newline at end of file + leftLink="install-next-nightly-vacuum" leftLabel="Prev" leftTitle="Vacuum Postgres nightly" + rightLink="install-next-backups" rightLabel="Next" rightTitle="Backup Strategy" + homeLink="index" homeLabel="Home" + upLink="acs-admin" upLabel="Up"> + \ No newline at end of file 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 -N -r1.45 -r1.46 --- openacs-4/packages/acs-core-docs/www/backup-recovery.html 8 Nov 2017 09:42:10 -0000 1.45 +++ openacs-4/packages/acs-core-docs/www/backup-recovery.html 25 Apr 2018 08:38:27 -0000 1.46 @@ -15,7 +15,7 @@

    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).

    -

    Figure 8.1. Backup and Recovery Strategy

    +

    Figure 8.1. Backup and Recovery Strategy

    Backup and Recovery Strategy


    Index: openacs-4/packages/acs-core-docs/www/backups-with-cvs.adp =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/backups-with-cvs.adp,v diff -u -N -r1.3 -r1.4 --- openacs-4/packages/acs-core-docs/www/backups-with-cvs.adp 8 Nov 2017 09:42:10 -0000 1.3 +++ openacs-4/packages/acs-core-docs/www/backups-with-cvs.adp 25 Apr 2018 08:38:27 -0000 1.4 @@ -3,11 +3,11 @@ Using CVS for backup-recovery -

    + leftLink="automated-backup" leftLabel="Prev" + title="Chapter 8. Backup and +Recovery" + rightLink="install-redhat" rightLabel="Next"> +

    Using CVS for backup-recovery

    CVS-only backup is often appropriate for development sites. If you are already using CVS and your data is not important, you @@ -17,8 +17,7 @@ down to the minute. For maximum safety, you can apply a tag to your current files. You will still need to back up your database.

    Note that, if you did the CVS options in this document, the /var/lib/aolserver/$OPENACS_SERVICE_NAME/etc -directory is not included in cvs and you may want to add it.

    -[root root]# su - $OPENACS_SERVICE_NAME
    +directory is not included in cvs and you may want to add it.

    [root root]# su - $OPENACS_SERVICE_NAME
     [$OPENACS_SERVICE_NAME $OPENACS_SERVICE_NAME]$ cd /var/lib/aolserver/$OPENACS_SERVICE_NAME
     
     [$OPENACS_SERVICE_NAME $OPENACS_SERVICE_NAME]$ cvs commit -m "last-minute commits before upgrade to 4.6"
    @@ -37,8 +36,7 @@
     cvs commit -m "last-minute commits before upgrade to 4.6"
     cvs tag before_upgrade_to_4_6
     exit
    -

    To restore files from a cvs tag such as the one used above:

    -[root root]# su - $OPENACS_SERVICE_NAME
    +

    To restore files from a cvs tag such as the one used above:

    [root root]# su - $OPENACS_SERVICE_NAME
     [$OPENACS_SERVICE_NAME $OPENACS_SERVICE_NAME]$ cd /var/lib/aolserver/$OPENACS_SERVICE_NAME
     
     [$OPENACS_SERVICE_NAME $OPENACS_SERVICE_NAME]$ cvs up -r current
    @@ -48,9 +46,9 @@
     
    - \ No newline at end of file + leftLink="automated-backup" leftLabel="Prev" leftTitle="Automated Backup" + rightLink="install-redhat" rightLabel="Next" rightTitle="Appendix A. Install Red Hat +8/9" + homeLink="index" homeLabel="Home" + upLink="backup-recovery" upLabel="Up"> + \ No newline at end of file Index: openacs-4/packages/acs-core-docs/www/bootstrap-acs.adp =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/bootstrap-acs.adp,v diff -u -N -r1.3 -r1.4 --- openacs-4/packages/acs-core-docs/www/bootstrap-acs.adp 8 Nov 2017 09:42:10 -0000 1.3 +++ openacs-4/packages/acs-core-docs/www/bootstrap-acs.adp 25 Apr 2018 08:38:27 -0000 1.4 @@ -3,11 +3,11 @@ Bootstrapping OpenACS -
    + leftLink="tcl-doc" leftLabel="Prev" + title="Chapter 15. Kernel +Documentation" + rightLink="ext-auth-requirements" rightLabel="Next"> +

    Bootstrapping OpenACS

    <authorblurb>

    By Jon Salz

    </authorblurb>
    • Tcl code: /tcl/0-acs-init.tcl and @@ -105,10 +105,10 @@

    - \ No newline at end of file + homeLink="index" homeLabel="Home" + upLink="kernel-doc" upLabel="Up"> + \ No newline at end of file Index: openacs-4/packages/acs-core-docs/www/complete-install.adp =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/complete-install.adp,v diff -u -N -r1.2 -r1.3 --- openacs-4/packages/acs-core-docs/www/complete-install.adp 7 Aug 2017 23:47:49 -0000 1.2 +++ openacs-4/packages/acs-core-docs/www/complete-install.adp 25 Apr 2018 08:38:27 -0000 1.3 @@ -1,15 +1,13 @@ -{/doc/acs-core-docs {ACS Core Documentation}} {Chapter 3. Complete -Installation} -Chapter 3. Complete -Installation +{/doc/acs-core-docs {ACS Core Documentation}} {Chapter 3. Complete Installation} +Chapter 3. Complete Installation -
    + rightLink="unix-installation" rightLabel="Next"> +

    Chapter 3. Complete Installation

    @@ -26,9 +24,9 @@
    - \ No newline at end of file + homeLink="index" homeLabel="Home" + upLink="acs-admin" upLabel="Up"> + \ No newline at end of file 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 -N -r1.3 -r1.4 --- openacs-4/packages/acs-core-docs/www/configuring-configuring-packages.adp 8 Nov 2017 09:42:10 -0000 1.3 +++ openacs-4/packages/acs-core-docs/www/configuring-configuring-packages.adp 25 Apr 2018 08:38:27 -0000 1.4 @@ -3,18 +3,17 @@ Configuring an OpenACS package -
    + leftLink="configuring-mounting-packages" leftLabel="Prev" + title="Chapter 4. Configuring a +new OpenACS Site" + rightLink="configuring-configuring-permissions" rightLabel="Next"> +

    Configuring an OpenACS package

    <authorblurb>

    by Jade Rubick

    </authorblurb>

    -Configuring an OpenACS package

    After you've installed and mounted your package, you can +Configuring an OpenACS package

    After you've installed and mounted your package, you can configure each instance to act as you would like.

    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' @@ -23,9 +22,9 @@

    - \ No newline at end of file + homeLink="index" homeLabel="Home" + upLink="configuring-new-site" upLabel="Up"> + \ No newline at end of file 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 -N -r1.12 -r1.13 --- openacs-4/packages/acs-core-docs/www/configuring-configuring-packages.html 8 Nov 2017 09:42:10 -0000 1.12 +++ openacs-4/packages/acs-core-docs/www/configuring-configuring-packages.html 25 Apr 2018 08:38:27 -0000 1.13 @@ -4,7 +4,7 @@ <authorblurb>

    by Jade Rubick

    </authorblurb>
    -

    Configuring an OpenACS package

    +

    Configuring an OpenACS package

    After you've installed and mounted your package, you can configure each instance to act as you would like.

    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 -N -r1.3 -r1.4 --- openacs-4/packages/acs-core-docs/www/configuring-configuring-permissions.adp 8 Nov 2017 09:42:10 -0000 1.3 +++ openacs-4/packages/acs-core-docs/www/configuring-configuring-permissions.adp 25 Apr 2018 08:38:27 -0000 1.4 @@ -3,18 +3,17 @@ Setting Permissions on an OpenACS package -
    + leftLink="configuring-configuring-packages" leftLabel="Prev" + title="Chapter 4. Configuring a +new OpenACS Site" + rightLink="how-do-I" rightLabel="Next"> +

    Setting Permissions on an OpenACS package

    <authorblurb>

    by Jade Rubick

    </authorblurb>

    -Setting Permission on an OpenACS +Setting Permission on an OpenACS package

    After you've installed and mounted your package, you can configure each instance to act as you would like.

    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 @@ -30,8 +29,8 @@

    - \ No newline at end of file + leftLink="configuring-configuring-packages" leftLabel="Prev" leftTitle="Configuring an OpenACS package" + rightLink="how-do-I" rightLabel="Next" rightTitle="How Do I?" + homeLink="index" homeLabel="Home" + upLink="configuring-new-site" upLabel="Up"> + \ No newline at end of file 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 -N -r1.12 -r1.13 --- openacs-4/packages/acs-core-docs/www/configuring-configuring-permissions.html 8 Nov 2017 09:42:10 -0000 1.12 +++ openacs-4/packages/acs-core-docs/www/configuring-configuring-permissions.html 25 Apr 2018 08:38:27 -0000 1.13 @@ -4,7 +4,7 @@ <authorblurb>

    by Jade Rubick

    </authorblurb>
    -

    Setting Permission on an OpenACS package

    +

    Setting Permission on an OpenACS package

    After you've installed and mounted your package, you can configure each instance to act as you would like.

    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 -N -r1.3 -r1.4 --- openacs-4/packages/acs-core-docs/www/configuring-install-packages.adp 8 Nov 2017 09:42:10 -0000 1.3 +++ openacs-4/packages/acs-core-docs/www/configuring-install-packages.adp 25 Apr 2018 08:38:27 -0000 1.4 @@ -3,17 +3,16 @@ Installing OpenACS packages -
    + leftLink="configuring-new-site" leftLabel="Prev" + title="Chapter 4. Configuring a +new OpenACS Site" + rightLink="configuring-mounting-packages" rightLabel="Next"> +

    Installing OpenACS packages

    <authorblurb>

    by Jade Rubick

    </authorblurb>

    -Installing OpenACS packages

    An OpenACS package extends your website and lets it do things it +Installing OpenACS packages

    An OpenACS package extends your website and lets it do things it wasn't able to do before. You can have a weblog, a forums, a calendar, or even do sophisticated project-management via your website.

    After you've installed OpenACS, you can congratulate @@ -32,20 +31,18 @@ system will check to make sure you have all necessary packages that the package you want depends on. If you're installing from Local Files, and you are missing any packages, you may have to add -the packages your desired package depends on: the section called -“Upgrading the OpenACS -files” +the packages your desired package depends on: the section called “Upgrading the +OpenACS files”

    If you run into any errors at all, check your /var/lib/aolserver/$OPENACS_SERVICE_NAME/log/error.log file, and post your error on the OpenACS forums

    Once the package has been installed, then you will need to 'mount' the package. The next section handles that.

    - \ No newline at end of file + leftLink="configuring-new-site" leftLabel="Prev" leftTitle="Chapter 4. Configuring a new +OpenACS Site" + rightLink="configuring-mounting-packages" rightLabel="Next" rightTitle="Mounting OpenACS packages" + homeLink="index" homeLabel="Home" + upLink="configuring-new-site" upLabel="Up"> + \ No newline at end of file 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 -N -r1.12 -r1.13 --- openacs-4/packages/acs-core-docs/www/configuring-install-packages.html 8 Nov 2017 09:42:10 -0000 1.12 +++ openacs-4/packages/acs-core-docs/www/configuring-install-packages.html 25 Apr 2018 08:38:27 -0000 1.13 @@ -4,7 +4,7 @@ <authorblurb>

    by Jade Rubick

    </authorblurb>
    -

    Installing OpenACS packages

    +

    Installing OpenACS packages

    An OpenACS package extends your website and lets it do 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 -N -r1.3 -r1.4 --- openacs-4/packages/acs-core-docs/www/configuring-mounting-packages.adp 8 Nov 2017 09:42:10 -0000 1.3 +++ openacs-4/packages/acs-core-docs/www/configuring-mounting-packages.adp 25 Apr 2018 08:38:27 -0000 1.4 @@ -3,17 +3,16 @@ Mounting OpenACS packages -

    + leftLink="configuring-install-packages" leftLabel="Prev" + title="Chapter 4. Configuring a +new OpenACS Site" + rightLink="configuring-configuring-packages" rightLabel="Next"> +

    Mounting OpenACS packages

    <authorblurb>

    by Jade Rubick

    </authorblurb>

    -Mounting OpenACS packages

    After you've installed your packages, you have to +Mounting OpenACS packages

    After you've installed your packages, you have to 'mount' them in order to make them appear on your website.

    Make sure you are logged in, and then click on the 'Admin' or 'Control Panel' link to get to the @@ -34,8 +33,8 @@

    - \ No newline at end of file + leftLink="configuring-install-packages" leftLabel="Prev" leftTitle="Installing OpenACS packages" + rightLink="configuring-configuring-packages" rightLabel="Next" rightTitle="Configuring an OpenACS package" + homeLink="index" homeLabel="Home" + upLink="configuring-new-site" upLabel="Up"> + \ No newline at end of file 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 -N -r1.12 -r1.13 --- openacs-4/packages/acs-core-docs/www/configuring-mounting-packages.html 8 Nov 2017 09:42:10 -0000 1.12 +++ openacs-4/packages/acs-core-docs/www/configuring-mounting-packages.html 25 Apr 2018 08:38:27 -0000 1.13 @@ -4,7 +4,7 @@ <authorblurb>

    by Jade Rubick

    </authorblurb>
    -

    Mounting OpenACS packages

    +

    Mounting OpenACS packages

    After you've installed your packages, you have to 'mount' Index: openacs-4/packages/acs-core-docs/www/configuring-new-site.adp =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/configuring-new-site.adp,v diff -u -N -r1.3 -r1.4 --- openacs-4/packages/acs-core-docs/www/configuring-new-site.adp 8 Nov 2017 09:42:10 -0000 1.3 +++ openacs-4/packages/acs-core-docs/www/configuring-new-site.adp 25 Apr 2018 08:38:27 -0000 1.4 @@ -1,18 +1,16 @@ -{/doc/acs-core-docs {ACS Core Documentation}} {Chapter 4. Configuring a new OpenACS -Site} -Chapter 4. Configuring a new OpenACS -Site +{/doc/acs-core-docs {ACS Core Documentation}} {Chapter 4. Configuring a new OpenACS Site} +Chapter 4. Configuring a new OpenACS Site -

    + rightLink="configuring-install-packages" rightLabel="Next"> +

    -Chapter 4. Configuring -a new OpenACS Site

    +Chapter 4. Configuring a new +OpenACS Site
    - \ No newline at end of file + rightLink="configuring-install-packages" rightLabel="Next" rightTitle="Installing OpenACS packages" + homeLink="index" homeLabel="Home" + upLink="acs-admin" upLabel="Up"> + \ No newline at end of file Index: openacs-4/packages/acs-core-docs/www/credits.adp =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/credits.adp,v diff -u -N -r1.4 -r1.5 --- openacs-4/packages/acs-core-docs/www/credits.adp 4 Apr 2018 18:51:56 -0000 1.4 +++ openacs-4/packages/acs-core-docs/www/credits.adp 25 Apr 2018 08:38:27 -0000 1.5 @@ -3,11 +3,11 @@ Appendix C. Credits -
    + rightLink="install-origins" rightLabel="Next"> +

    Appendix C. Credits

    Table of Contents

    @@ -41,13 +41,13 @@ Malte Sussdorff, Stan Kaufman and Pascal Scheffers.

    All questions and comments regarding this guide should be posted on -the OpenACS forums.

    ($‌Id: credits.xml,v 1.13 2017/08/07 -23:47:54 gustafn Exp $)

    +the OpenACS forums.

    ($‌Id: credits.xml,v 1.14 2018/04/04 +18:51:56 hectorr Exp $)

    - + homeLink="index" homeLabel="Home" + upLink="acs-admin" upLabel="Up"> + \ No newline at end of file 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 -N -r1.4 -r1.5 --- openacs-4/packages/acs-core-docs/www/cvs-guidelines.adp 27 Mar 2018 11:17:59 -0000 1.4 +++ openacs-4/packages/acs-core-docs/www/cvs-guidelines.adp 25 Apr 2018 08:38:27 -0000 1.5 @@ -3,21 +3,21 @@ CVS Guidelines -
    + leftLink="style-guide" leftLabel="Prev" + title="Chapter 12. Engineering +Standards" + rightLink="eng-standards-versioning" rightLabel="Next"> +

    CVS Guidelines

    <authorblurb>

    ($‌Id: cvs.xml,v -1.7 2017/08/07 23:47:54 gustafn Exp $)

    By Joel Aufrecht with input from Jeff Davis, Branimir Dolicki, +1.8 2018/03/27 11:18:00 hectorr Exp $)

    By Joel Aufrecht with input from Jeff Davis, Branimir Dolicki, and Jade Rubick.

    </authorblurb>

    Using CVS with OpenACS

    -Getting Started

    All OpenACS code is available anonymously. To get code +Getting Started

    All OpenACS code is available anonymously. To get code anonymously, use the parameter -d:pserver:anonymous\@cvs.openacs.org:/cvsroot immediately after cvs in a cvs command to check out or export code.

    If you are an OpenACS developer, you should check out code so @@ -36,8 +36,7 @@ export CVS_RSH=ssh into ~/.bash_profile.). If your local account name does not match your cvs.openacs.org account -name, create a file ~/.ssh/config with an entry like:

    -Host cvs.openacs.org
    +name, create a file ~/.ssh/config with an entry like:

    Host cvs.openacs.org
         User joel
     

    With this setup, you will be asked for your password with each cvs command. To avoid this, set up ssh certificate authentication @@ -61,15 +60,12 @@

    Grant cvs access to the user account. On any machine, in a temporary directory:

    cvs -d :ext:cvs.openacs.org:/cvsroot co CVSROOT
     cd CVSROOT
    -emacs avail

    Add an avail line of the form:

    -avail|username|openacs-4
    -
    cvs commit -m "added commit on X for username" avail
    +emacs avail

    Add an avail line of the form:

    avail|username|openacs-4
    cvs commit -m "added commit on X for username" avail

    -Checkout for Package Development

    If you are actively developing a non-core package, you should +Checkout for Package Development

    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 +93,7 @@ packages and their current state.

    -Checkout for Core Development

    If you are actively developing packages in the OpenACS Core, +Checkout for Core Development

    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 +102,7 @@ developer account:

    cvs -d:ext:cvs.openacs.org:/cvsroot checkout acs-core

    To check out HEAD anonymously:

    cvs -d:pserver:anonymous\@cvs.openacs.org:/cvsroot checkout acs-core

    -Checkout .LRN

    .LRN consists of a given version OpenACS core, plus a set of +Checkout .LRN

    .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 +127,7 @@

    OpenACS CVS Concepts

    -Modules

    All OpenACS code resides within a single CVS module, +Modules

    All OpenACS code resides within a single CVS module, openacs-4. (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 @@ -140,8 +136,7 @@ acs-core contains only critical common packages. It does not have any user applications, such as forums, bug-tracker, calendar, or ecommerce. These can be -added at any time.

    The complete list of core packages is:

    -acs-admin 
    +added at any time.

    The complete list of core packages is:

    acs-admin 
     acs-api-browser 
     acs-authentication 
     acs-automated-testing 
    @@ -157,8 +152,7 @@
     acs-subsite 
     acs-tcl
     acs-templating 
    -ref-timezones search
    -

    +ref-timezones search

    dotlrn-all contains the packages required, in combination with acs-core, to run the .LRN system.

    @@ -168,7 +162,7 @@ module of the same name.

    - Tags and Branches

    Tags and Branches look similar in commands, but behave + Tags and Branches

    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 @@ -233,9 +227,8 @@ repository:

    1. Use one of the checkout methods described above to get files to your system. This takes the place of steps 1 and 2 in the section called -“Installation Option 2: Install from -tarball”. Continue setting up the site as described -there.

    2. Fix bugs and add features.

    3. +“Installation Option 2: Install from tarball”. Continue setting +up the site as described there.

    4. Fix bugs and add features.

    5. Commit that file (or files):

      cvs commit -m "what I did and why" filename

      Because this occurs in your personal checkout and not an anonymous one, this commit automagically moves back upstream to the Mother Ship repository at cvs.openacs.org. The names of the changed @@ -266,7 +259,6 @@ Checking in modules;
      /cvsroot/CVSROOT/modules,v  <--  modules
      - new revision: 1.94; previous revision: 1.93
      done
      @@ -275,13 +267,11 @@

      Although you should add your package on HEAD, you should do package development on the latest release branch that your code is compatible with. So, after completing the import, you may want to -branch your package:

      -cd /var/lib/aolserver/service0/packages/newpackage
      +branch your package:

      cd /var/lib/aolserver/service0/packages/newpackage
       cvs tag -b oacs-5-1
       
    6. See the section called -“How to package and release an OpenACS -Package” +“How to package and release an OpenACS Package”

    Note

    Some packages are already in cvs at openacs-4/contrib/packages. Starting with @@ -291,8 +281,7 @@ /packages. This must be done by an OpenACS administrator. On cvs.openacs.org:

    1. -cp -r /cvsroot/openacs-4/contrib/packages/package0 /cvsroot/openacs-4/packages
      -
    2. Update the modules file as described above.

    3. Remove the directory from cvs in the old location using +cp -r /cvsroot/openacs-4/contrib/packages/package0 /cvsroot/openacs-4/packages

    4. Update the modules file as described above.

    5. Remove the directory from cvs in the old location using cvs rm. One approach for file in `find | grep -v CVS`; do rm $file; cvs remove $file; done @@ -409,7 +398,7 @@

    - Informal Guidelines

    Informal guidelines which may be obsolete in places and should + Informal Guidelines

    Informal guidelines which may be obsolete in places and should be reviewed:

    - + leftLink="style-guide" leftLabel="Prev" leftTitle="OpenACS Style Guide" + rightLink="eng-standards-versioning" rightLabel="Next" rightTitle="Release Version Numbering" + homeLink="index" homeLabel="Home" + upLink="eng-standards" upLabel="Up"> + \ No newline at end of file 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 -N -r1.13 -r1.14 --- openacs-4/packages/acs-core-docs/www/cvs-guidelines.html 27 Mar 2018 11:17:59 -0000 1.13 +++ openacs-4/packages/acs-core-docs/www/cvs-guidelines.html 25 Apr 2018 08:38:27 -0000 1.14 @@ -11,7 +11,7 @@ </authorblurb>

    Using CVS with OpenACS

    -

    Getting Started

    +

    Getting Started

    All OpenACS code is available anonymously. To get code @@ -91,7 +91,7 @@

    -

    Checkout for Package Development

    +

    Checkout for Package Development

    If you are actively developing a non-core package, you should work from the latest core release branch. Currently this @@ -120,7 +120,7 @@

    -

    Checkout for Core Development

    +

    Checkout for Core Development

    If you are actively developing packages in the OpenACS Core, work from the HEAD branch. HEAD is used for active @@ -136,7 +136,7 @@

    cvs -d:pserver:anonymous@cvs.openacs.org:/cvsroot checkout acs-core
    -

    Checkout .LRN

    +

    Checkout .LRN

    .LRN consists of a given version OpenACS core, plus a set of @@ -165,7 +165,7 @@

    OpenACS CVS Concepts

    -

    Modules

    +

    Modules

    All OpenACS code resides within a single CVS module, openacs-4. (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 openacs-4 are repackaged as smaller modules.

    @@ -209,7 +209,7 @@
    -

    +

    Tags and Branches

    @@ -559,7 +559,7 @@

    -

    +

    Informal Guidelines

    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 -N -r1.3 -r1.4 --- openacs-4/packages/acs-core-docs/www/cvs-tips.adp 8 Nov 2017 09:42:10 -0000 1.3 +++ openacs-4/packages/acs-core-docs/www/cvs-tips.adp 25 Apr 2018 08:38:27 -0000 1.4 @@ -1,27 +1,24 @@ -{/doc/acs-core-docs {ACS Core Documentation}} {Appendix D. Using CVS with an -OpenACS Site} -Appendix D. Using CVS with an -OpenACS Site +{/doc/acs-core-docs {ACS Core Documentation}} {Appendix D. Using CVS with an OpenACS Site} +Appendix D. Using CVS with an OpenACS Site -
    + leftLink="i18n-translators" leftLabel="Prev" + title="Part III. For OpenACS +Package Developers" + rightLink="acs-plat-dev" rightLabel="Next"> +

    -Appendix D. Using CVS with -an OpenACS Site

    <authorblurb>

    By Joel +Appendix D. Using CVS with an OpenACS +Site

    <authorblurb>

    By Joel Aufrecht

    </authorblurb>

    -Add the Service to CVS - OPTIONAL.  These steps take an existing OpenACS -directory and add it to a CVS repository.

      +Add the Service to CVS - OPTIONAL.  +These steps take an existing OpenACS directory and add it to a +CVS repository.

      1. Create and set permissions on a subdirectory in the local cvs -repository.

        -[root root]# mkdir /cvsroot/$OPENACS_SERVICE_NAME
        +repository.

        [root root]# mkdir /cvsroot/$OPENACS_SERVICE_NAME
         
         [root root]# chown $OPENACS_SERVICE_NAME.$OPENACS_SERVICE_NAME /cvsroot/$OPENACS_SERVICE_NAME
         
        @@ -33,18 +30,14 @@
         
      2. Add the repository location to the user environment. On some systems, you may get better results with .bash_profile instead of -.bashrc.

        -[root root]# su - $OPENACS_SERVICE_NAME
        +.bashrc.

        [root root]# su - $OPENACS_SERVICE_NAME
         
         [$OPENACS_SERVICE_NAME $OPENACS_SERVICE_NAME]$ emacs .bashrc
        -

        Put this string into /home/$OPENACS_SERVICE_NAME/.bashrc:

        -export CVSROOT=/cvsroot
        -
        +

        Put this string into /home/$OPENACS_SERVICE_NAME/.bashrc:

        export CVSROOT=/cvsroot
         [$OPENACS_SERVICE_NAME $OPENACS_SERVICE_NAME]$ exit
         logout
         
        -[root root]#
        -
        +[root root]#
      3. Import all files into cvs. In order to work on files with source control, the files must be checked out from cvs. So we will import, @@ -55,8 +48,7 @@ . "OpenACS" is the vendor tag, and "oacs-5-9-0-final" is the release tag. These tags will be -useful in upgrading and branching. -m sets the version comment.

        -[root root]# su - $OPENACS_SERVICE_NAME
        +useful in upgrading and branching. -m sets the version comment.

        [root root]# su - $OPENACS_SERVICE_NAME
         
         [$OPENACS_SERVICE_NAME $OPENACS_SERVICE_NAME]$ cd /var/lib/aolserver/$OPENACS_SERVICE_NAME
         
        @@ -75,8 +67,7 @@
         cvs import -m "initial install" $OPENACS_SERVICE_NAME OpenACS oacs-5-9-0-final
         exit
         

        Move the original directory to a temporary location, and check -out the cvs repository in its place.

        -[root root]# mv /var/lib/aolserver/$OPENACS_SERVICE_NAME /var/tmp
        +out the cvs repository in its place.

        [root root]# mv /var/lib/aolserver/$OPENACS_SERVICE_NAME /var/tmp
         [root root]# mkdir /var/lib/aolserver/$OPENACS_SERVICE_NAME
         
         [root root]# chown $OPENACS_SERVICE_NAME.$OPENACS_SERVICE_NAME /var/lib/aolserver/$OPENACS_SERVICE_NAME
        @@ -109,9 +100,9 @@
         
    - \ No newline at end of file + leftLink="i18n-translators" leftLabel="Prev" leftTitle="Translator's Guide" + rightLink="acs-plat-dev" rightLabel="Next" rightTitle="Part IV. For OpenACS +Platform Developers" + homeLink="index" homeLabel="Home" + upLink="acs-package-dev" upLabel="Up"> + \ No newline at end of file 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 -N -r1.36 -r1.37 --- openacs-4/packages/acs-core-docs/www/cvs-tips.html 8 Nov 2017 09:42:10 -0000 1.36 +++ openacs-4/packages/acs-core-docs/www/cvs-tips.html 25 Apr 2018 08:38:27 -0000 1.37 @@ -7,7 +7,7 @@ </authorblurb>

    Add the Service to CVS - OPTIONAL.  - + These steps take an existing OpenACS directory and add it to a CVS repository. Index: openacs-4/packages/acs-core-docs/www/database-management.adp =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/database-management.adp,v diff -u -N -r1.3 -r1.4 --- openacs-4/packages/acs-core-docs/www/database-management.adp 8 Nov 2017 09:42:10 -0000 1.3 +++ openacs-4/packages/acs-core-docs/www/database-management.adp 25 Apr 2018 08:38:27 -0000 1.4 @@ -1,15 +1,13 @@ -{/doc/acs-core-docs {ACS Core Documentation}} {Chapter 7. Database -Management} -Chapter 7. Database -Management +{/doc/acs-core-docs {ACS Core Documentation}} {Chapter 7. Database Management} +Chapter 7. Database Management -

    + rightLink="remote-postgres" rightLabel="Next"> +

    Chapter 7. Database Management

    @@ -24,9 +22,9 @@

    </authorblurb>
    - \ No newline at end of file + homeLink="index" homeLabel="Home" + upLink="acs-admin" upLabel="Up"> + \ No newline at end of file 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 -N -r1.4 -r1.5 --- openacs-4/packages/acs-core-docs/www/db-api-detailed.adp 11 Apr 2018 21:35:06 -0000 1.4 +++ openacs-4/packages/acs-core-docs/www/db-api-detailed.adp 25 Apr 2018 08:38:27 -0000 1.5 @@ -3,11 +3,11 @@ Database Access API -
    + leftLink="apm-design" leftLabel="Prev" + title="Chapter 15. Kernel +Documentation" + rightLink="i18n-requirements" rightLabel="Next"> +

    Database Access API

    <authorblurb>

    By Jon Salz. Revised and expanded by Roberto Mello (rmello at fslc dot usu dot edu), July @@ -620,8 +620,7 @@ } { set user_url [acs_community_member_url -user_id $user_id] } - - +

    db_resultrows
    db_resultrows

    Returns the number of rows affected or returned by the previous @@ -664,24 +663,21 @@ db_compatible_rdbms_p

     db_compatible_rdbms_p db_type
    -                
    -

    Returns 1 if the given db_type is compatible with the current +

    Returns 1 if the given db_type is compatible with the current RDBMS.

    db_package_supports_rdbms_p
     db_package_supports_rdbms_p db_type_list
    -                
    -

    Returns 1 if db_type_list contains the current RDMBS type. A +

    Returns 1 if db_type_list contains the current RDMBS type. A package intended to run with a given RDBMS must note this in -its package info file regardless of whether or not it actually +it's package info file regardless of whether or not it actually uses the database.

    db_legacy_package_p
     db_legacy_package_p db_type_list
    -                
    -

    Returns 1 if the package is a legacy package. We can only tell +

    Returns 1 if the package is a legacy package. We can only tell for certain if it explicitly supports Oracle 8.1.6 rather than the OpenACS more general oracle.

    @@ -706,9 +702,9 @@
    - + homeLink="index" homeLabel="Home" + upLink="kernel-doc" upLabel="Up"> + \ No newline at end of file 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 -N -r1.51 -r1.52 --- openacs-4/packages/acs-core-docs/www/db-api-detailed.html 11 Apr 2018 21:35:06 -0000 1.51 +++ openacs-4/packages/acs-core-docs/www/db-api-detailed.html 25 Apr 2018 08:38:27 -0000 1.52 @@ -1017,7 +1017,7 @@

    Returns 1 if db_type_list contains the current RDMBS type. A package - intended to run with a given RDBMS must note this in its package info + intended to run with a given RDBMS must note this in it's package info file regardless of whether or not it actually uses the database.

    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 -N -r1.3 -r1.4 --- openacs-4/packages/acs-core-docs/www/db-api.adp 8 Nov 2017 09:42:10 -0000 1.3 +++ openacs-4/packages/acs-core-docs/www/db-api.adp 25 Apr 2018 08:38:27 -0000 1.4 @@ -3,11 +3,11 @@ The OpenACS Database Access API -
    + leftLink="request-processor" leftLabel="Prev" + title="Chapter 11. Development +Reference" + rightLink="templates" rightLabel="Next"> +

    The OpenACS Database Access API

    By Pete Su and Jon Salz. Modified by Roberto Mello.

    @@ -39,8 +39,7 @@ foreach row $rows { call_some_proc $foo $bar $baz } -} -

    There are several things to note here:

      +}

      There are several things to note here:

      1. No explicit code for grabbing and releasing handles. Usage of the Database API implicitly deals with all handle management issues.

      2. The db_transaction command @@ -64,8 +63,7 @@ select foo, bar, baz from some_table, some_other_table where some_table.id=some_other_table.id -and some_table.condition_p = '$foo' -

        There are a few problems with this:

          +and some_table.condition_p = '$foo'

          There are a few problems with this:

          1. If the value of $foo is a huge string, then we waste a lot of time in the database server doing useless parsing.

          2. Second, if the literal value contains characters like single quotes, we have to be careful to properly escape them, because not @@ -115,8 +113,7 @@ set condition "where foo = bar" db_foreach my_query { select :table from some_table where :condition } - -

            SQL will not allow a literal to occur where we've put the +

            SQL will not allow a literal to occur where we've put the bind variables, so the query is syntactically incorrect. You have to remember that while the bind variable syntax looks similar to variable interpolation in Tcl, It is not @@ -149,8 +146,7 @@ # of "administrator" } - -

            The value of the local Tcl variable user_id (123456) is bound to the +

            The value of the local Tcl variable user_id (123456) is bound to the user_id bind variable.

            The -bind switch can takes the name of an ns_set containing keys for each bind variable named in the query, @@ -171,8 +167,7 @@ # of "administrator" } - -

            Alternatively, as an argument to -bind you can specify a list of alternating +

            Alternatively, as an argument to -bind you can specify a list of alternating name/value pairs for bind variables:

                     
             db_foreach user_group_memberships_by_role {
            @@ -186,8 +181,7 @@
                 # of "administrator"
             }
             
            -      
            -
            +

          Nulls and Bind Variables

          When processing a DML statement, Oracle coerces empty strings @@ -222,22 +216,19 @@ # null, because Oracle has coerced the empty string (even for the # numeric column "bar") into null in both cases - -

          Since databases other than Oracle do not coerce empty strings +

          Since databases other than Oracle do not coerce empty strings into null, this code has different semantics depending on the underlying database (i.e., the row that gets inserted may not have null as its column values), which defeats the purpose of SQL abstraction.

          Therefore, the Database Access API provides a database-independent way to represent null (instead of the Oracle-specific idiom of the empty string): db_null.

          Use it instead of the empty string whenever you want to set a -column value explicitly to null, e.g.:

          -set bar [db_null]
          +column value explicitly to null, e.g.:

          set bar [db_null]
           set baz [db_null]
           
           db_dml foo_create "insert into foo(bar, baz) values(:bar, :baz)"
           #
          -# sets the values for both the "bar" and "baz" columns to null
          -
          +# sets the values for both the "bar" and "baz" columns to null

        @@ -259,8 +250,7 @@ [ns/server/yourservername/acs/security] PoolSequence.sec_id_seq=20 - -

        The database library will allocate this number of sequence +

        The database library will allocate this number of sequence values at server startup. It will periodically scan pools and allocate new values for sequences which are less than half-full. (This normally occurs every 60 seconds, and is configurable via the @@ -276,8 +266,7 @@ db_abort_transaction

     db_abort_transaction
    -          
    -

    Aborts all levels of a transaction. That is if this is called +

    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 db_dml "abort" "abort transaction".

    @@ -327,8 +316,7 @@ } { set user_url [acs_community_member_url -user_id $user_id] } - -

    You can also iterate over a multirow after it has been created - +

    You can also iterate over a multirow after it has been created - check the documentation for template::multirow

    For example,

     db_multirow assets assets {
       select asset_id,
    @@ -341,8 +329,7 @@
     multirow foreach assets {
       lappend asset_id_l $asset_id
     }
    -          
    -

    Technically it's equivalent to using a code block on the end +

    Technically it's equivalent to using a code block on the end of your db_multirow.

    db_null
    @@ -368,33 +355,29 @@ doc_body_append "<li>There are no greebles in the database.\n" } - -

    The code block may contain break statements (which terminate the loop +

    The code block may contain break statements (which terminate the loop and flush the database handle) and continue statements (which continue to the next row of the loop).

    db_1row
     db_1row statement-namesql [ -bind bind_set_id | -bind bind_value_list ] \
         [ -column_array array_name | -column_set set_name ]
    -          
    -

    Performs the SQL query sql, setting variables to +

    Performs the SQL query sql, setting variables to column values. Raises an error if the query does not return exactly 1 row.

    Example:

     
     db_1row select_foo "select foo, bar from greeble where greeble_id = $greeble_id"
     # Bombs if there's no such greeble!
     # Now $foo and $bar are set.
     
    -          
    -
    +
    db_0or1row
     db_0or1row statement-namesql [ -bind bind_set_id | -bind bind_value_list ] \
         [ -column_array array_name | -column_set set_name ]
    -          
    -

    Performs the SQL query sql. If a row is returned, sets +

    Performs the SQL query sql. If a row is returned, sets variables to column values and returns 1. If no rows are returned, returns 0. If more than one row is returned, throws an error.

    @@ -417,8 +400,7 @@ db_string
     db_string statement-namesql [ -default default ] [ -bind bind_set_id | -bind bind_value_list ]
    -          
    -

    Returns the first column of the result of SQL query sql. +

    Returns the first column of the result of SQL query sql. If sql doesn't return a row, returns default (or throws an error if default is unspecified). @@ -427,17 +409,15 @@ db_list

     db_list statement-namesql [ -bind bind_set_id | -bind bind_value_list ]
    -          
    -

    Returns a Tcl list of the values in the first column of the +

    Returns a Tcl list of the values in the first column of the result of SQL query sql. If sql doesn't return any rows, returns an empty list. Analogous to database_to_tcl_list.

    db_list_of_lists
     db_list_of_lists statement-namesql [ -bind bind_set_id | -bind bind_value_list ]
    -          
    -

    Returns a Tcl list, each element of which is a list of all +

    Returns a Tcl list, each element of which is a list of all column values in a row of the result of SQL query sql. If sql doesn't return any rows, returns an empty list. (Analogous to database_to_tcl_list_list.)

    @@ -448,8 +428,7 @@ [ -bind bind_set_id | -bind bind_value_list ] \ [ -blobs blob_list | -clobs clob_list | -blob_files blob_file_list | -clob_files clob_file_list ] - -

    Performs the DML or DDL statement sql.

    If a length-n list of +

    Performs the DML or DDL statement sql.

    If a length-n list of blobs or clobs is provided, then the SQL should return n blobs or clobs into the bind variables :1, :2, ... :n. blobs or clobs, if specified, should be @@ -464,8 +443,7 @@ returning image, thumbnail_image into :1, :2 } -blob_files [list "/var/tmp/the_photo" "/var/tmp/the_thumbnail"] - -

    This inserts a new row into the photos table, with the contents of the +

    This inserts a new row into the photos table, with the contents of the files /var/tmp/the_photo and /var/tmp/the_thumbnail in the image and thumbnail columns, respectively.

    @@ -483,21 +461,18 @@ db_write_blob statement-namesql [ -bind bind_set_id | -bind bind_value_list ] db_blob_get_file statement-namesql [ -bind bind_set_id | -bind bind_value_list ] - -

    Analogous to ns_ora +

    Analogous to ns_ora write_clob/write_blob/blob_get_file.

    db_release_unused_handles
                 db_release_unused_handles
    -          
    -

    Releases any allocated, unused database handles.

    +

    Releases any allocated, unused database handles.

    db_transaction
     db_transaction code_block [ on_error { code_block } ]
    -          
    -

    Executes code_block transactionally. +

    Executes code_block transactionally. Nested transactions are supported (end transaction is transparently ns_db dml'ed when the outermost transaction completes). The db_abort_transaction command can be used to @@ -535,14 +510,12 @@ print_the_foo ; # Writes out "foo is 8" - - +

    db_resultrows
     db_resultrows
    -          
    -

    Returns the number of rows affected or returned by the previous +

    Returns the number of rows affected or returned by the previous statement.

    db_with_handle
    @@ -569,8 +542,7 @@ } } - - +
    db_nullify_empty_string
    @@ -593,14 +565,12 @@
     # the empty string we just inserted (because of Oracle's coercion
     # quirk)
     
    -          
    -

    To balance out this asymmetry, you can explicitly set +

    To balance out this asymmetry, you can explicitly set baz to null by writing:

     
     db_dml foo_insert {insert into foo(baz) values(:1)} {[db_nullify_empty_string $baz]}
     
    -          
    -
    +

    ($‌Id: db-api.xml,v 1.14 2017/08/07 23:47:54 gustafn Exp $)

    @@ -637,13 +607,12 @@ db_flush_cache -cache_key_pattern page_${page_id}_* - - +
    - \ No newline at end of file + leftLink="request-processor" leftLabel="Prev" leftTitle="The Request Processor" + rightLink="templates" rightLabel="Next" rightTitle="Using Templates in OpenACS" + homeLink="index" homeLabel="Home" + upLink="dev-guide" upLabel="Up"> + \ No newline at end of file Index: openacs-4/packages/acs-core-docs/www/dev-guide.adp =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/dev-guide.adp,v diff -u -N -r1.2 -r1.3 --- openacs-4/packages/acs-core-docs/www/dev-guide.adp 7 Aug 2017 23:47:49 -0000 1.2 +++ openacs-4/packages/acs-core-docs/www/dev-guide.adp 25 Apr 2018 08:38:27 -0000 1.3 @@ -1,19 +1,15 @@ -{/doc/acs-core-docs {ACS Core Documentation}} {Chapter 11. Development -Reference} -Chapter 11. Development -Reference +{/doc/acs-core-docs {ACS Core Documentation}} {Chapter 11. Development Reference} +Chapter 11. Development Reference -
    + leftLink="tutorial-future-topics" leftLabel="Prev" + title="Part III. For OpenACS +Package Developers" + rightLink="packages" rightLabel="Next"> +

    -Chapter 11. Development -Reference

    +Chapter 11. Development Reference
    - \ No newline at end of file + leftLink="tutorial-future-topics" leftLabel="Prev" leftTitle="Future Topics" + rightLink="packages" rightLabel="Next" rightTitle="OpenACS Packages" + homeLink="index" homeLabel="Home" + upLink="acs-package-dev" upLabel="Up"> + \ No newline at end of file Index: openacs-4/packages/acs-core-docs/www/doc-standards.adp =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/doc-standards.adp,v diff -u -N -r1.2 -r1.3 --- openacs-4/packages/acs-core-docs/www/doc-standards.adp 7 Aug 2017 23:47:49 -0000 1.2 +++ openacs-4/packages/acs-core-docs/www/doc-standards.adp 25 Apr 2018 08:38:27 -0000 1.3 @@ -1,16 +1,13 @@ -{/doc/acs-core-docs {ACS Core Documentation}} {Chapter 13. Documentation -Standards} -Chapter 13. Documentation -Standards +{/doc/acs-core-docs {ACS Core Documentation}} {Chapter 13. Documentation Standards} +Chapter 13. Documentation Standards -
    + leftLink="automated-testing-best-practices" leftLabel="Prev" + title="Part III. For OpenACS +Package Developers" + rightLink="docbook-primer" rightLabel="Next"> +

    Chapter 13. Documentation Standards

    @@ -25,8 +22,8 @@
    - \ No newline at end of file + leftLink="automated-testing-best-practices" leftLabel="Prev" leftTitle="Automated Testing" + rightLink="docbook-primer" rightLabel="Next" rightTitle="OpenACS Documentation Guide" + homeLink="index" homeLabel="Home" + upLink="acs-package-dev" upLabel="Up"> + \ No newline at end of file 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 -N -r1.4 -r1.5 --- openacs-4/packages/acs-core-docs/www/docbook-primer.adp 29 Mar 2018 17:28:50 -0000 1.4 +++ openacs-4/packages/acs-core-docs/www/docbook-primer.adp 25 Apr 2018 08:38:27 -0000 1.5 @@ -3,22 +3,22 @@ OpenACS Documentation Guide -
    + leftLink="doc-standards" leftLabel="Prev" + title="Chapter 13. Documentation +Standards" + rightLink="psgml-mode" rightLabel="Next"> +

    OpenACS Documentation Guide

    By Claus Rasmussen, with additions by Roberto Mello, Vinod Kurup, and the OpenACS Community

    Overview of OpenACS Documentation

    -OpenACSâ„¢ is -a powerful system with incredible possibilities and applications, -but this power comes with some complexity and a steep learning -curve that is only attenuated by good documentation. Our goal is to -write superb documentation, so that users, developers and -administrators of OpenACS installations can enjoy the system.

    The history of OpenACS documentation: ..began by building on a +OpenACS™ is a powerful system +with incredible possibilities and applications, but this power +comes with some complexity and a steep learning curve that is only +attenuated by good documentation. Our goal is to write superb +documentation, so that users, developers and administrators of +OpenACS installations can enjoy the system.

    The history of OpenACS documentation: ..began by building on a good documentation base from ArsDigita's ACS in the late 1990's. Some sections of the documentation, however, lacked details and examples; others simply did not exist. The OpenACS @@ -159,8 +159,7 @@

    Use generic DocBook syntax to maximize reader familiarity with the documents.

                     <book><title><part label="Part 1"><etc...>
    -              
    -
    +
    @@ -391,12 +390,12 @@

    OpenACS Documentation Strategy

    OpenACS documentation development is subject to the constraints of the software project development and release methods and cycles -(the section called -“Using CVS with OpenACS”). -Essentially, all phases of work may be active to accommodate the -asynchronous nature of multiple subprojects evolving by the efforts -of a global base of participants with culturally diverse time -references and scheduling idiosyncrasies.

    The documentation strategy is to use project methods to involve +(the section called “Using CVS with +OpenACS”). Essentially, all phases of work may be active to +accommodate the asynchronous nature of multiple subprojects +evolving by the efforts of a global base of participants with +culturally diverse time references and scheduling +idiosyncrasies.

    The documentation strategy is to use project methods to involve others by collaborating or obtaining guidance or feedback (peer review) to distribute the workload and increase the overall value of output for the OpenACS project.

    @@ -410,7 +409,7 @@ tools will be marked up to conform to the DocBook XML DTD. The remaining discussion is about publishing using Docbook.

    - is a publishing standard based on XML + is a publishing standard based on XML with similar goals to the OpenACS Documentation project. Some specific reasons why we are using DocBook:

    • It is open-source.

    • The DocBook community mailing lists @@ -450,7 +449,7 @@ of elements 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 as long as -you remember to: +you remember to:

      • Always close your tags with corresponding end-tags and to not use other tag @@ -491,7 +490,7 @@

        Document Structure

        The documentation for each package will make up a little "book" that is structured like this - examples are -emphasized: +emphasized:

             book                        : Docs for one package - templating
              |
        @@ -516,20 +515,19 @@
         

      Headlines, Sections

      - Given that your job starts at the + Given that your job starts at the sect1-level, all your documents should open with a <sect1>-tag and end with the corresponding </sect1>.

      - You need to feed every <sect1> two attributes. The first + You need to feed every <sect1> two attributes. The first attribute, id, 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 the section called -“Links”). The value of +links in the section called “Links”). The value of id has to be unique throughout the book you're making since the id's in your sect1's will turn into filenames when the book is parsed into HTML.

      - The other attribute is xreflabel. The value of this is the text + The other attribute is xreflabel. The value of this is the text that will appear as the link when referring to this sect1.

      Right after the opening tag you put the title of the document - this is usually the same as xreflabel-attribute. E.g. the top level of the document you're reading right now looks like this:

      @@ -540,7 +538,7 @@
       
       </sect1>
       

      - Inside this container your document will + Inside this container your document will be split up into <sect2>'s, each with the same requirements - id and xreflabel attributes, and a <title>-tag inside. Actually, the xreflabel is never required in @@ -550,7 +548,7 @@

      Code

      - For displaying a snippet of code, 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 <computeroutput> and <code> tags. These replace the HTML-tag <code> tag, @@ -564,15 +562,15 @@

      Links

      - Linking falls into two different + Linking falls into two different categories: inside the book you're making and outside:

      1. Inside linking, cross-referencing other parts of your book

      By having unique id's you can cross-reference any part of your book with a simple tag, regardless of where that part is.

      -Check out how I link to a subsection of +Check out how I link to a subsection of the Developer's Guide:

      Put this in your XML:

       - Find information about creating a package in
       <xref linkend="packages-making-a-package"></xref>.
      @@ -590,17 +588,16 @@
       <xref linkend="packages-looks"></xref>.
       

      And the output is:

       - Find information about what a package looks like in 
      -the section called “What a Package Looks Like”.
      +the section called “What a Package Looks Like”.
       

      Note that since I haven't provided an xreflabel for the subsection, packages-looks, the parser will try its best to explain where the link takes you.

      2. Linking outside the documentation

      - If you're hyper-linking out of the + If you're hyper-linking out of the documentation, it works almost the same way as HTML - the tag is just a little different (<ulink>):

      -<ulink url="http://www.oracle.com/">Oracle Corporation</ulink>
      -

      ....will create a hyper-link to Oracle in the HTML-version of +<ulink url="http://www.oracle.com/">Oracle Corporation</ulink>

      ....will create a hyper-link to Oracle in the HTML-version of the documentation.

      NOTE: Do NOT use ampersands in your hyperlinks. These are reserved for referencing @@ -615,7 +612,7 @@ Note: The graphics guidelines are not written in stone. Use another valid approach if it works better for you.

      - To insert a graphic we use the elements + To insert a graphic we use the elements <mediaobject>, <imageobject>, <imagedata>, @@ -640,7 +637,7 @@

      Lists

      - Here's how you make the DocBook + Here's how you make the DocBook equivalent of the three usual HTML-lists:

      1. How to make an <ul>
      @@ -693,7 +690,7 @@

      Tables

      - DocBook supports several types of tables, + DocBook supports several types of tables, but in most cases, the <informaltable> is enough:

       <informaltable frame="all">
         <tgroup cols="3">
      @@ -739,7 +736,7 @@
       

      Emphasis

      - Our documentation uses two flavors of + Our documentation uses two flavors of emphasis - italics and bold type. DocBook uses one - <emphasis>.

      The <emphasis> tag defaults to italics when parsed. If you're looking for emphasizing with bold type, use <emphasis @@ -799,9 +796,9 @@

      - + leftLink="doc-standards" leftLabel="Prev" leftTitle="Chapter 13. Documentation +Standards" + rightLink="psgml-mode" rightLabel="Next" rightTitle="Using PSGML mode in Emacs" + homeLink="index" homeLabel="Home" + upLink="doc-standards" upLabel="Up"> + \ No newline at end of file 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 -N -r1.55 -r1.56 --- openacs-4/packages/acs-core-docs/www/docbook-primer.html 29 Mar 2018 17:28:50 -0000 1.55 +++ openacs-4/packages/acs-core-docs/www/docbook-primer.html 25 Apr 2018 08:38:27 -0000 1.56 @@ -674,7 +674,7 @@ Docbook.

      - + is a publishing standard based on XML with similar goals to the OpenACS Documentation project. Some specific reasons why we are using DocBook:

      @@ -743,7 +743,7 @@ list of elements 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 as long as you remember to: - +

      • @@ -826,7 +826,7 @@ The documentation for each package will make up a little "book" that is structured like this - examples are emphasized: - +

        @@ -862,14 +862,14 @@

        - + Given that your job starts at the sect1-level, all your documents should open with a <sect1>-tag and end with the corresponding </sect1>.

        - + You need to feed every <sect1> two attributes. The first attribute, id, 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 the section called “Links”). @@ -879,7 +879,7 @@

        - + The other attribute is xreflabel. The value of this is the text that will appear as the link when referring to this sect1.

        @@ -900,7 +900,7 @@

        - + Inside this container your document will be split up into <sect2>'s, each with the same requirements - id and xreflabel @@ -920,7 +920,7 @@

        - + For displaying a snippet of code, a filename or anything else you just want to appear as a part of a sentence, we use <computeroutput> @@ -948,7 +948,7 @@

        - + Linking falls into two different categories: inside the book you're making and outside:

        @@ -958,7 +958,7 @@ with a simple tag, regardless of where that part is.

        -

        Check out how I link to a subsection of the Developer's Guide:

        +

        Check out how I link to a subsection of the Developer's Guide:

        Put this in your XML:

        @@ -1015,7 +1015,7 @@
        2. Linking outside the documentation

        - + If you're hyper-linking out of the documentation, it works almost the same way as HTML - the tag is just a little different @@ -1051,7 +1051,7 @@

        - + To insert a graphic we use the elements <mediaobject>, <imageobject>, @@ -1088,7 +1088,7 @@

        - + Here's how you make the DocBook equivalent of the three usual HTML-lists:

        @@ -1155,7 +1155,7 @@

        - + DocBook supports several types of tables, but in most cases, the <informaltable> is enough: @@ -1211,7 +1211,7 @@

        - + Our documentation uses two flavors of emphasis - italics and bold type. DocBook uses one - <emphasis>.

        Index: openacs-4/packages/acs-core-docs/www/eng-standards-constraint-naming.adp =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/eng-standards-constraint-naming.adp,v diff -u -N -r1.5 -r1.6 --- openacs-4/packages/acs-core-docs/www/eng-standards-constraint-naming.adp 24 Mar 2018 00:14:57 -0000 1.5 +++ openacs-4/packages/acs-core-docs/www/eng-standards-constraint-naming.adp 25 Apr 2018 08:38:27 -0000 1.6 @@ -3,11 +3,11 @@ Constraint naming standard -
        + leftLink="eng-standards-versioning" leftLabel="Prev" + title="Chapter 12. Engineering +Standards" + rightLink="eng-standards-filenaming" rightLabel="Next"> +

        Constraint naming standard

        <authorblurb>

        By Michael Bryzek

        </authorblurb>
        @@ -18,7 +18,7 @@ understandable. By correctly naming all constraints, we can quickly associate a particular constraint with our data model. This gives us two real advantages:

          -
        • We can quickly identify and fix any errors.

        • We can reliabily modify or drop constraints

        • +
        • We can quickly identify and fix any errors.

        • We can reliability modify or drop constraints

        Why do we need a naming convention?Oracle limits names, in general, to 30 characters, which is hardly enough for a human readable constraint @@ -124,14 +124,14 @@ immeditately in error debugging (e.g. the error will say something like "Cannot insert null value into column"), we recommend naming not null constraints to be consistent in our -naming of all constraints.

        ($‌Id: constraint-naming.xml,v 1.7 -2017/08/07 23:47:54 gustafn Exp $)

        +naming of all constraints.

        ($‌Id: constraint-naming.xml,v 1.10 +2018/03/24 00:14:57 hectorr Exp $)

        - + homeLink="index" homeLabel="Home" + upLink="eng-standards" upLabel="Up"> + \ No newline at end of file Index: openacs-4/packages/acs-core-docs/www/eng-standards-constraint-naming.html =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/eng-standards-constraint-naming.html,v diff -u -N -r1.52 -r1.53 --- openacs-4/packages/acs-core-docs/www/eng-standards-constraint-naming.html 24 Mar 2018 00:14:57 -0000 1.52 +++ openacs-4/packages/acs-core-docs/www/eng-standards-constraint-naming.html 25 Apr 2018 08:38:27 -0000 1.53 @@ -17,7 +17,7 @@ with our data model. This gives us two real advantages:

        -
        • We can quickly identify and fix any errors.

        • We can reliabily modify or drop constraints

        +
        • We can quickly identify and fix any errors.

        • We can reliability modify or drop constraints

        Why do we need a naming convention? Index: openacs-4/packages/acs-core-docs/www/eng-standards-filenaming.adp =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/eng-standards-filenaming.adp,v diff -u -N -r1.3 -r1.4 --- openacs-4/packages/acs-core-docs/www/eng-standards-filenaming.adp 8 Nov 2017 09:42:10 -0000 1.3 +++ openacs-4/packages/acs-core-docs/www/eng-standards-filenaming.adp 25 Apr 2018 08:38:27 -0000 1.4 @@ -3,11 +3,11 @@ ACS File Naming and Formatting Standards -

        + leftLink="eng-standards-constraint-naming" leftLabel="Prev" + title="Chapter 12. Engineering +Standards" + rightLink="eng-standards-plsql" rightLabel="Next"> +

        ACS File Naming and Formatting Standards

        <authorblurb>

        By Michael Yoon and Aurelius @@ -219,8 +219,8 @@

        - \ No newline at end of file + leftLink="eng-standards-constraint-naming" leftLabel="Prev" leftTitle="Constraint naming standard" + rightLink="eng-standards-plsql" rightLabel="Next" rightTitle="PL/SQL Standards" + homeLink="index" homeLabel="Home" + upLink="eng-standards" upLabel="Up"> + \ No newline at end of file Index: openacs-4/packages/acs-core-docs/www/eng-standards-plsql.adp =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/eng-standards-plsql.adp,v diff -u -N -r1.4 -r1.5 --- openacs-4/packages/acs-core-docs/www/eng-standards-plsql.adp 18 Apr 2018 08:07:33 -0000 1.4 +++ openacs-4/packages/acs-core-docs/www/eng-standards-plsql.adp 25 Apr 2018 08:38:27 -0000 1.5 @@ -3,11 +3,11 @@ PL/SQL Standards -
        + leftLink="eng-standards-filenaming" leftLabel="Prev" + title="Chapter 12. Engineering +Standards" + rightLink="variables" rightLabel="Next"> +

        PL/SQL Standards

        <authorblurb>

        By Richard Li and Yon Feldman

        </authorblurb>

        Like any other part of the OpenACS, PL/SQL (or pl/pgsql) code @@ -140,14 +140,14 @@ browsers. This means that we should try to make it as consistent as possible to all source code readers.

      • Lowercase everything, with the exception of %TYPE and %ROWTYPE.

      • -

      ($‌Id: plsql.xml,v 1.7 2017/08/07 23:47:54 +

      ($‌Id: plsql.xml,v 1.8 2018/03/28 07:55:07 gustafn Exp $)

    - + rightLink="variables" rightLabel="Next" rightTitle="Variables" + homeLink="index" homeLabel="Home" + upLink="eng-standards" upLabel="Up"> + \ No newline at end of file Index: openacs-4/packages/acs-core-docs/www/eng-standards-versioning.adp =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/eng-standards-versioning.adp,v diff -u -N -r1.3 -r1.4 --- openacs-4/packages/acs-core-docs/www/eng-standards-versioning.adp 8 Nov 2017 09:42:10 -0000 1.3 +++ openacs-4/packages/acs-core-docs/www/eng-standards-versioning.adp 25 Apr 2018 08:38:27 -0000 1.4 @@ -3,11 +3,11 @@ Release Version Numbering -
    + leftLink="cvs-guidelines" leftLabel="Prev" + title="Chapter 12. Engineering +Standards" + rightLink="eng-standards-constraint-naming" rightLabel="Next"> +

    Release Version Numbering

    <authorblurb>

    ($‌Id: eng-standards-versioning.xml,v 1.11 2017/08/07 23:47:54 gustafn Exp @@ -45,8 +45,7 @@

    Milestone markers are numbered: d1, d2, ..., a1, b1, rc1, etc.

    -

    A complete sequence of milestones between two releases:

    -5.0.0
    +

    A complete sequence of milestones between two releases:

    5.0.0
     5.0.0rc2
     5.0.0rc1
     5.0.0b4
    @@ -55,8 +54,7 @@
     5.0.0a3
     5.0.0a1
     5.0.0d1
    -4.6.3
    -

    Version numbers are also recorded in the CVS repository so that +4.6.3

    Version numbers are also recorded in the CVS repository so that the code tree can be restored to the exact state it was in for a particular release. To translate between a distribution tar file (acs-3.2.2.tar.gz) and a CVS tag, just swap '.' for @@ -112,8 +110,7 @@ <maturity>1</maturity> <callbacks> ... - -

      +
      • Level -1: Incompatible. This package is not supported for @@ -172,8 +169,8 @@

    - \ No newline at end of file + leftLink="cvs-guidelines" leftLabel="Prev" leftTitle="CVS Guidelines" + rightLink="eng-standards-constraint-naming" rightLabel="Next" rightTitle="Constraint naming standard" + homeLink="index" homeLabel="Home" + upLink="eng-standards" upLabel="Up"> + \ No newline at end of file Index: openacs-4/packages/acs-core-docs/www/eng-standards.adp =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/eng-standards.adp,v diff -u -N -r1.2 -r1.3 --- openacs-4/packages/acs-core-docs/www/eng-standards.adp 7 Aug 2017 23:47:49 -0000 1.2 +++ openacs-4/packages/acs-core-docs/www/eng-standards.adp 25 Apr 2018 08:38:27 -0000 1.3 @@ -1,16 +1,13 @@ -{/doc/acs-core-docs {ACS Core Documentation}} {Chapter 12. Engineering -Standards} -Chapter 12. Engineering -Standards +{/doc/acs-core-docs {ACS Core Documentation}} {Chapter 12. Engineering Standards} +Chapter 12. Engineering Standards -
    + leftLink="form-builder" leftLabel="Prev" + title="Part III. For OpenACS +Package Developers" + rightLink="style-guide" rightLabel="Next"> +

    Chapter 12. Engineering Standards

    @@ -27,9 +24,9 @@
    - \ No newline at end of file + rightLink="style-guide" rightLabel="Next" rightTitle="OpenACS Style Guide" + homeLink="index" homeLabel="Home" + upLink="acs-package-dev" upLabel="Up"> + \ No newline at end of file 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 -N -r1.5 -r1.6 --- openacs-4/packages/acs-core-docs/www/ext-auth-requirements.adp 28 Mar 2018 21:55:34 -0000 1.5 +++ openacs-4/packages/acs-core-docs/www/ext-auth-requirements.adp 25 Apr 2018 08:38:27 -0000 1.6 @@ -3,16 +3,16 @@ External Authentication Requirements -
    + leftLink="bootstrap-acs" leftLabel="Prev" + title="Chapter 15. Kernel +Documentation" + rightLink="releasing-openacs" rightLabel="Next"> +

    External Authentication Requirements

    -Vision

    People have plenty of usernames and passwords already, we +Vision

    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.

    Besides, administrators have better things to do than create @@ -74,7 +74,7 @@

    Requirements

    -New API

    +New API
    New @@ -160,9 +160,9 @@ will either already be in the users table through a batch synchronization job, or that the relevant authentication implementation supports real-time synchronization of user data. -Specifically, if you want remote users who haven't yet logged -in to OpenACS to show up in user searches, you'll have to do -the batch synchronization.

    All in all, the login box will be an includeable template and +Specifically, if you want remote users who haven't yet +logged-in to OpenACS to show up in user searches, you'll have +to do the batch synchronization.

    All in all, the login box will be an includeable template and look like this:

     Username:  ________
     Password:  ________
    @@ -436,16 +436,16 @@
     :
     Untrusted Logins

    I like the idea of having multiple login levels:

      -
    1. Not logged in

    2. Untrusted login: We'll show you un-sensitive personal +

    3. Not logged-in

    4. Untrusted login: We'll show you un-sensitive personal content, but won't let you modify anything or see personal data. A normal login becomes untrusted after a certain amount of time, and the user will have to re-enter his/her password in order to gain access to personal data. Untrusted login never expires, unless explicitly done so through either changing password or -clicking a special "expire all logins" link.

    5. Normal login: The user is logged, and has type his password +clicking a special "expire all logins" link.

    6. Normal login: The user is logged-in, and has type his password sufficiently recently that we trust the login. All normal operations are allowed. Will degrade to untrusted login after a -specified amount of time.

    7. Secure login: The user is logged in over a secure connection +specified amount of time.

    8. Secure login: The user is logged-in over a secure connection (HTTPS), potentially even using a special secure password. This would be for sensitive actions, such as credit card transactions.

    9. @@ -463,13 +463,14 @@ only when you want to post do you need to log in. This makes it even more feasible to have a more secure login expiration setting.

      By default, auth::require_login -would bounce to the login page if the user is only logged in at the +would bounce to the login page if the user is only logged-in at the untrusted level. Only if you explicitly say auth::require_login -untrusted will we give you -the user_id of a user who's only logged in in untrusted +the user_id of a user who's only logged-in in untrusted mode.

      Similarly, ad_conn user_id will -continue to return 0 (not logged in) when the user is only logged -in untrusted, and we'll supply another variable, ad_conn untrusted_user_id, which wlll be set to -the user_id for all login levels.

      This should ensure that we get full access to the new feature, +continue to return 0 (not logged-in) when the user is only +logged-in untrusted, and we'll supply another variable, +ad_conn untrusted_user_id, which wlll +be set to the user_id for all login levels.

      This should ensure that we get full access to the new feature, while leaving all current code just as secure as it was before.

    @@ -518,10 +519,10 @@ : rewrite cookie handling

    Currently, if you've ever left a permanent login cookie on -someone elses machine, that person will be forever logged in until +someone elses machine, that person will be forever logged-in until he/she explicitly logs out. You can change your password, you can do anything you want, but unless a logout is requested from that -particular browser, that browser will be logged in forever.

    I want to change our session handling code so that old login +particular browser, that browser will be logged-in forever.

    I want to change our session handling code so that old login cookies can be expired. This would be done automatically whenever you change your password, and we could also offer a link which does this without changing passwords. It's an important security @@ -798,9 +799,9 @@

    - + leftLink="bootstrap-acs" leftLabel="Prev" leftTitle="Bootstrapping OpenACS" + rightLink="releasing-openacs" rightLabel="Next" rightTitle="Chapter 16. Releasing +OpenACS" + homeLink="index" homeLabel="Home" + upLink="kernel-doc" upLabel="Up"> + \ No newline at end of file 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 -N -r1.44 -r1.45 --- openacs-4/packages/acs-core-docs/www/ext-auth-requirements.html 28 Mar 2018 21:55:34 -0000 1.44 +++ openacs-4/packages/acs-core-docs/www/ext-auth-requirements.html 25 Apr 2018 08:38:27 -0000 1.45 @@ -1,7 +1,7 @@ External Authentication Requirements

    External Authentication Requirements

    -

    Vision

    +

    Vision

    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 @@ -72,7 +72,7 @@

    Requirements

    -

    New API

    +

    New API

    @@ -147,7 +147,7 @@ either already be in the users table through a batch synchronization job, or that the relevant authentication implementation supports real-time synchronization of user data. -Specifically, if you want remote users who haven't yet logged in to +Specifically, if you want remote users who haven't yet logged-in to OpenACS to show up in user searches, you'll have to do the batch synchronization.

    All in all, the login box will be an includeable template and @@ -451,16 +451,16 @@

    I like the idea of having multiple login levels:

    -
    1. Not logged in

    2. Untrusted login: We'll show you un-sensitive personal +

      1. Not logged-in

      2. Untrusted login: We'll show you un-sensitive personal content, but won't let you modify anything or see personal data. A normal login becomes untrusted after a certain amount of time, and the user will have to re-enter his/her password in order to gain access to personal data. Untrusted login never expires, unless explicitly done so through either changing password or clicking a - special "expire all logins" link.

      3. Normal login: The user is logged, and has type his + special "expire all logins" link.

      4. Normal login: The user is logged-in, and has type his password sufficiently recently that we trust the login. All normal operations are allowed. Will degrade to untrusted login after a - specified amount of time.

      5. Secure login: The user is logged in over a secure + specified amount of time.

      6. Secure login: The user is logged-in over a secure connection (HTTPS), potentially even using a special secure password. This would be for sensitive actions, such as credit card transactions.

      @@ -480,13 +480,13 @@ even more feasible to have a more secure login expiration setting.

      By default, auth::require_login would -bounce to the login page if the user is only logged in at the +bounce to the login page if the user is only logged-in at the untrusted level. Only if you explicitly say auth::require_login -untrusted will we give you -the user_id of a user who's only logged in in untrusted +the user_id of a user who's only logged-in in untrusted mode.

      Similarly, ad_conn user_id will continue -to return 0 (not logged in) when the user is only logged in +to return 0 (not logged-in) when the user is only logged-in untrusted, and we'll supply another variable, ad_conn untrusted_user_id, which wlll be set to the user_id for all login levels.

      @@ -555,10 +555,10 @@

    Currently, if you've ever left a permanent login cookie on -someone elses machine, that person will be forever logged in until +someone elses machine, that person will be forever logged-in until he/she explicitly logs out. You can change your password, you can do anything you want, but unless a logout is requested from that -particular browser, that browser will be logged in forever.

    +particular browser, that browser will be logged-in forever.

    I want to change our session handling code so that old login cookies can be expired. This would be done automatically whenever you change your password, and we could also offer a link which does Index: openacs-4/packages/acs-core-docs/www/filename.adp =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/filename.adp,v diff -u -N -r1.3 -r1.4 --- openacs-4/packages/acs-core-docs/www/filename.adp 8 Nov 2017 09:42:10 -0000 1.3 +++ openacs-4/packages/acs-core-docs/www/filename.adp 25 Apr 2018 08:38:27 -0000 1.4 @@ -3,11 +3,11 @@ Detailed Design Documentation Template -

    + leftLink="nxml-mode" leftLabel="Prev" + title="Chapter 13. Documentation +Standards" + rightLink="requirements-template" rightLabel="Next"> +

    Detailed Design Documentation Template

    By You

    @@ -199,9 +199,9 @@
    - \ No newline at end of file + homeLink="index" homeLabel="Home" + upLink="doc-standards" upLabel="Up"> + \ No newline at end of file Index: openacs-4/packages/acs-core-docs/www/for-everyone.adp =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/for-everyone.adp,v diff -u -N -r1.2 -r1.3 --- openacs-4/packages/acs-core-docs/www/for-everyone.adp 7 Aug 2017 23:47:50 -0000 1.2 +++ openacs-4/packages/acs-core-docs/www/for-everyone.adp 25 Apr 2018 08:38:27 -0000 1.3 @@ -3,13 +3,12 @@ Part I. OpenACS For Everyone -
    + leftLink="index" leftLabel="Prev" + title="" + rightLink="general-documents" rightLabel="Next"> +

    -Part I. OpenACS For -Everyone

    +Part I. OpenACS For Everyone

    Table of Contents

    1. High level information: What is OpenACS?
    @@ -20,10 +19,9 @@
    - \ No newline at end of file + leftLink="index" leftLabel="Prev" leftTitle="OpenACS Core Documentation" + rightLink="general-documents" rightLabel="Next" rightTitle="Chapter 1. High level +information: What is OpenACS?" + homeLink="index" homeLabel="Home" + upLink="index" upLabel="Up"> + \ No newline at end of file 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 -N -r1.3 -r1.4 --- openacs-4/packages/acs-core-docs/www/form-builder.adp 8 Nov 2017 09:42:10 -0000 1.3 +++ openacs-4/packages/acs-core-docs/www/form-builder.adp 25 Apr 2018 08:38:27 -0000 1.4 @@ -3,11 +3,11 @@ Using Form Builder: building html forms dynamically -
    + leftLink="programming-with-aolserver" leftLabel="Prev" + title="Chapter 11. Development +Reference" + rightLink="eng-standards" rightLabel="Next"> +

    Using Form Builder: building html forms dynamically

    @@ -25,10 +25,10 @@ Multi-part Elements

    Some elements have more than one choice, or can submit more than one value.

    -SELECT elements

    1. +SELECT elements
    1. -Creating the form element.  -Populate a list of lists with values for the option list.

      +Creating the form element.  Populate a
      +list of lists with values for the option list.

       set foo_options [db_list_of_lists foo_option_list "
           select foo,
                  foo_id
      @@ -37,12 +37,10 @@
       

      The variable foo_options should resemble {{first foo} 1234} {{second foo} 1235} -

      Within ad_form, set up the element to use this list:

      -{foo:text(select)
      +

      Within ad_form, set up the element to use this list:

      {foo:text(select)
               {label "Which Foo"}
               {options $foo_options}
      -    }
      -

      This will result in a single name/value pair coming back in the + }

      This will result in a single name/value pair coming back in the submitted form. Handle this within the same ad_form structure, in the -new_data and -edit_data. In the example, it is available as $foo @@ -57,29 +55,25 @@ form items from a sub-category when the first category is selected. Ad_form makes this fairly easy to do. In the definition of your form element, include an html section

      -    {pm_task_id:integer(select),optional
      +{pm_task_id:integer(select),optional
               {label "Subject"}
               {options {$task_options}}
               {html {onChange "document.form_name.__refreshing_p.value='1';submit()"}}
               {value $pm_task_id}
           }
      -    
      -

      What this will do is set the value for pm_task_id and all the +

      What this will do is set the value for pm_task_id and all the other form elements, and resubmit the form. If you then include a block that extends the form, you'll have the opportunity to add in subcategories:

      -    if {[info exists pm_task_id] && $pm_task_id ne ""} {
      +if {[info exists pm_task_id] && $pm_task_id ne ""} {
           db_1row get_task_values { }
           ad_form -extend -name form_name -form { ... }
      -    
      -

      Note that you will get strange results when you try to set the +

      Note that you will get strange results when you try to set the values for the form. You'll need to set them explicitly in an -on_refresh section of your ad_form. In that section, you'll -get the values from the database, and set the values as so:

      -    db_1row get_task_values { }
      +get the values from the database, and set the values as so:

          db_1row get_task_values { }
           template::element set_value form_name estimated_hours_work $estimated_hours_work
      -    
      -
      +

    Troubleshooting

    A good way to troubleshoot when you're using ad_form is to @@ -93,8 +87,7 @@ ns_log notice the following form was submitted on my page ns_set print $mypage } - - +

    Tips @@ -106,14 +99,14 @@ Errors

    Here are some common errors and what to do when you encounter them:

    -Error when selecting values

    This generally happens when there is an error in your query.

    +Error when selecting values

    This generally happens when there is an error in your query.

    - \ No newline at end of file + leftLink="programming-with-aolserver" leftLabel="Prev" leftTitle="Programming with AOLserver" + rightLink="eng-standards" rightLabel="Next" rightTitle="Chapter 12. Engineering +Standards" + homeLink="index" homeLabel="Home" + upLink="dev-guide" upLabel="Up"> + \ No newline at end of file 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 -N -r1.32 -r1.33 --- openacs-4/packages/acs-core-docs/www/form-builder.html 8 Nov 2017 09:42:10 -0000 1.32 +++ openacs-4/packages/acs-core-docs/www/form-builder.html 25 Apr 2018 08:38:27 -0000 1.33 @@ -19,7 +19,7 @@

    Multi-part Elements

    Some elements have more than one choice, or can submit more than one value.

    -

    SELECT elements

    +

    SELECT elements

    1. @@ -114,7 +114,7 @@

      Here are some common errors and what to do when you encounter them:

      -

      Error when selecting values

      +

      Error when selecting values

      This generally happens when there is an error in your query.

      Index: openacs-4/packages/acs-core-docs/www/general-documents.adp =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/general-documents.adp,v diff -u -N -r1.2 -r1.3 --- openacs-4/packages/acs-core-docs/www/general-documents.adp 7 Aug 2017 23:47:50 -0000 1.2 +++ openacs-4/packages/acs-core-docs/www/general-documents.adp 25 Apr 2018 08:38:27 -0000 1.3 @@ -1,28 +1,28 @@ -{/doc/acs-core-docs {ACS Core Documentation}} {Chapter 1. High level information: -What is OpenACS?} -Chapter 1. High level information: -What is OpenACS? +{/doc/acs-core-docs {ACS Core Documentation}} {Chapter 1. High level information: What is +OpenACS?} +Chapter 1. High level information: What is +OpenACS? -
      + leftLink="for-everyone" leftLabel="Prev" + title="Part I. OpenACS For +Everyone" + rightLink="openacs-overview" rightLabel="Next"> +

      -Chapter 1. High -level information: What is OpenACS?

      +Chapter 1. High level +information: What is OpenACS?

      Table of Contents

      Overview
      OpenACS Release Notes
      - \ No newline at end of file + leftLink="for-everyone" leftLabel="Prev" leftTitle="Part I. OpenACS For +Everyone" + rightLink="openacs-overview" rightLabel="Next" rightTitle="Overview" + homeLink="index" homeLabel="Home" + upLink="for-everyone" upLabel="Up"> + \ No newline at end of file Index: openacs-4/packages/acs-core-docs/www/groups-design.adp =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/groups-design.adp,v diff -u -N -r1.3 -r1.4 --- openacs-4/packages/acs-core-docs/www/groups-design.adp 8 Nov 2017 09:42:10 -0000 1.3 +++ openacs-4/packages/acs-core-docs/www/groups-design.adp 25 Apr 2018 08:38:27 -0000 1.4 @@ -3,11 +3,11 @@ Groups Design -
      + leftLink="groups-requirements" leftLabel="Prev" + title="Chapter 15. Kernel +Documentation" + rightLink="subsites-requirements" rightLabel="Next"> +

      Groups Design

      <authorblurb>

      By Rafael H. Schloming and Mark Thomas

      </authorblurb>
      @@ -408,8 +408,8 @@
      - \ No newline at end of file + leftLink="groups-requirements" leftLabel="Prev" leftTitle="Groups Requirements" + rightLink="subsites-requirements" rightLabel="Next" rightTitle="Subsites Requirements" + homeLink="index" homeLabel="Home" + upLink="kernel-doc" upLabel="Up"> + \ No newline at end of file Index: openacs-4/packages/acs-core-docs/www/groups-requirements.adp =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/groups-requirements.adp,v diff -u -N -r1.3 -r1.4 --- openacs-4/packages/acs-core-docs/www/groups-requirements.adp 8 Nov 2017 09:42:10 -0000 1.3 +++ openacs-4/packages/acs-core-docs/www/groups-requirements.adp 25 Apr 2018 08:38:27 -0000 1.4 @@ -3,11 +3,11 @@ Groups Requirements -
      + leftLink="permissions-design" leftLabel="Prev" + title="Chapter 15. Kernel +Documentation" + rightLink="groups-design" rightLabel="Next"> +

      Groups Requirements

      <authorblurb>

      By Rafael H. Schloming, Mark Thomas

      </authorblurb>
      @@ -22,9 +22,9 @@

      Vision Statement

      A powerful web service that can meet the needs of large -enterprises must be able to model the the real world's very -rich organizational structures and many ways of decomposing the -same organization. For example, a corporation can be broken into +enterprises must be able to model the real world's very rich +organizational structures and many ways of decomposing the same +organization. For example, a corporation can be broken into structures (the corporation, its divisions, and their departments) or regions (the Boston office, the LA office); a person who is employed by (is a member of) a specific department is also a member @@ -383,8 +383,8 @@

      - \ No newline at end of file + leftLink="permissions-design" leftLabel="Prev" leftTitle="Permissions Design" + rightLink="groups-design" rightLabel="Next" rightTitle="Groups Design" + homeLink="index" homeLabel="Home" + upLink="kernel-doc" upLabel="Up"> + \ No newline at end of file Index: openacs-4/packages/acs-core-docs/www/groups-requirements.html =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/groups-requirements.html,v diff -u -N -r1.36 -r1.37 --- openacs-4/packages/acs-core-docs/www/groups-requirements.html 8 Nov 2017 09:42:10 -0000 1.36 +++ openacs-4/packages/acs-core-docs/www/groups-requirements.html 25 Apr 2018 08:38:27 -0000 1.37 @@ -25,7 +25,7 @@

      A powerful web service that can meet the needs of large enterprises must - be able to model the the real world's very rich organizational structures + be able to model the real world's very rich organizational structures and many ways of decomposing the same organization. For example, a corporation can be broken into structures (the corporation, its divisions, and their departments) or regions (the Boston office, the LA office); a 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 -N -r1.3 -r1.4 --- openacs-4/packages/acs-core-docs/www/high-avail.adp 8 Nov 2017 09:42:10 -0000 1.3 +++ openacs-4/packages/acs-core-docs/www/high-avail.adp 25 Apr 2018 08:38:27 -0000 1.4 @@ -3,25 +3,24 @@ High Availability/High Performance Configurations -

      + leftLink="install-next-add-server" leftLabel="Prev" + title="Chapter 6. Production +Environments" + rightLink="maintenance-deploy" rightLabel="Next"> +

      High Availability/High Performance Configurations

      See also the section -called “Running a PostgreSQL database on another -server”.

      -

      Figure 6.1. Multiple-server +called “Running a PostgreSQL database on another server”.

      +

      Figure 6.1. Multiple-server configuration

      Multiple-server configuration

      - \ No newline at end of file + homeLink="index" homeLabel="Home" + upLink="maintenance-web" upLabel="Up"> + \ No newline at end of file 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 -N -r1.26 -r1.27 --- openacs-4/packages/acs-core-docs/www/high-avail.html 8 Nov 2017 09:42:10 -0000 1.26 +++ openacs-4/packages/acs-core-docs/www/high-avail.html 25 Apr 2018 08:38:27 -0000 1.27 @@ -2,7 +2,7 @@ High Availability/High Performance Configurations

      High Availability/High Performance Configurations

      See also the section called “Running a PostgreSQL database on another server”.

      -

      Figure 6.1. Multiple-server configuration

      +

      Figure 6.1. Multiple-server configuration

      Multiple-server configuration

      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 -N -r1.4 -r1.5 --- openacs-4/packages/acs-core-docs/www/how-do-I.adp 27 Mar 2018 12:22:17 -0000 1.4 +++ openacs-4/packages/acs-core-docs/www/how-do-I.adp 25 Apr 2018 08:38:27 -0000 1.5 @@ -3,29 +3,28 @@ How Do I? -
      + leftLink="configuring-configuring-permissions" leftLabel="Prev" + title="Chapter 4. Configuring a +new OpenACS Site" + rightLink="upgrade" rightLabel="Next"> +

      How Do I?

      -How do I edit the front page of a new site +How do I edit the front page of a new site through a web interface?

      The easiest way is to install the Edit-This-Page package.

      1. Log in to the web site as an administrator.

      2. Click on Admin > Install Software > Install from OpenACS Repository / Install new application

      3. Choose Edit This Page and install

      4. Follow the instructions within Edit This Page (the link will only work after Edit This Page is installed).

      -How do I let anybody who registers post to +How do I let anybody who registers post to a weblog?

      Go to /admin/permissions and grant Create to Registered Users

      -How do I replace the front page of a new +How do I replace the front page of a new site with the front page of an application on that site

      Suppose you install a new site and install Weblogger, and you want all visitors to see weblogger automatically.

      1. On the front page, click the Admin button.

      2. On the administration page, click Parameters link.

      3. Change the parameter IndexRedirectUrl to be the URI of the @@ -35,7 +34,7 @@

      -How do I put custom functionality on front +How do I put custom functionality on front page of a new site?

      Every page within an OpenACS site is part of a subsiteMore information). The home page of the entire site is the front page is a special, default instance of a subsite, served from /var/lib/aolserver/$OPENACS_SERVICE_NAME/www. @@ -50,14 +49,12 @@

    -How do I change the site-wide style?

    Almost all pages on an OpenACS site use ACS Templating, and so +How do I change the site-wide style?

    Almost all pages on an OpenACS site use ACS Templating, and so their appearance is driven by a layer of different files. Let's examine how this works:

    • A templated page uses an ADP/Tcl pair. The first line in the ADP -file is usually:

      -<master>
      -

      If it appears exactly like this, without any arguments, the +file is usually:

      <master>

      If it appears exactly like this, without any arguments, the template processor uses default-master for that subsite. For pages in /var/lib/aolserver/$OPENACS_SERVICE_NAME/www, this is /var/lib/aolserver/$OPENACS_SERVICE_NAME/www/default-master.adp @@ -74,73 +71,70 @@ navigation "meta" elements such as Translator widgets and Admin widgets.

    -

    Figure 4.1. Site +

    Figure 4.1. Site Templates

    Site Templates

    -How do I diagnose a permissions +How do I diagnose a permissions problem?

    • -Steps to Reproduce.  The events -package does not allow users to register for new events.

        +Steps to Reproduce.  The events package +does not allow users to register for new events.

        1. 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.

        2. Select an available event

        3. A link such as Registration: -Deadline is 03/15/2004 10:00am. » Login or sign up to -register for this event. is visible. Click on "Login or -sign up"

        4. Complete a new registration. Afterwards, you should be +Deadline is 03/15/2004 10:00am. » Login or sign up to register for +this event. is visible. Click on "Login or sign +up"

        5. Complete a new registration. Afterwards, you should be redirected back to the same page.

        Actual Results: The page says "You do not have permission to register for this event."

        Expected results: A link or form to sign up for the event is shown.

      1. -Finding the problem.  We start with -the page that has the error. In the URL it's http://myserver.net/events/event-info.tcl, +Finding the problem.  We start with the +page that has the error. In the URL it's http://myserver.net/events/event-info.tcl, so open the file /var/lib/aolserver/$OPENACS_SERVICE_NAME/packages/events/www/event-info.tcl. It contains this line:

        -set can_register_p [events::security::can_register_for_event_p -event_id $event_id]
        -

        We need to know what that procedure does, so go to /api-doc, paste +set can_register_p [events::security::can_register_for_event_p -event_id $event_id]

        We need to know what that procedure does, so go to /api-doc, 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

        -return [permission::permission_p -party_id $user_id -object_id $event_id -privilege write]
        -

        This means that a given user must have the write privilige on +return [permission::permission_p -party_id $user_id -object_id $event_id -privilege write]

        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 privilige on +privileges inherit, so that if a user has the write privilege on the whole package, they will have the write privilege on the event.

      2. -Setting Permissions.  A permission -has three parts: the privilige, the object of the privilige, and -the subject being granted the privilige. In this case the privilige -is "write," the object is the Events package, and the +Setting Permissions.  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.

        1. To grant permissions on a package, start at the site map. Find the event package and click "Set permissions".

        2. Click "Grant Permission"

        3. Grant the write permission to Registered Users.

          -

          Figure 4.2. Granting +

          Figure 4.2. Granting Permissions

          Granting Permissions

        OpenACS 5.0 offers a prettier version at /admin/applications.

        -

        Figure 4.3. Granting Permissions in -5.0

        Granting Permissions in 5.0
        +

        Figure 4.3. Granting Permissions +in 5.0

        Granting Permissions in 5.0

    - + rightLink="upgrade" rightLabel="Next" rightTitle="Chapter 5. Upgrading" + homeLink="index" homeLabel="Home" + upLink="configuring-new-site" upLabel="Up"> + \ No newline at end of file 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 -N -r1.30 -r1.31 --- openacs-4/packages/acs-core-docs/www/how-do-I.html 27 Mar 2018 12:22:17 -0000 1.30 +++ openacs-4/packages/acs-core-docs/www/how-do-I.html 25 Apr 2018 08:38:27 -0000 1.31 @@ -1,7 +1,7 @@ How Do I?

    How Do I?

    -

    How do I edit the front page of a new site through a web interface?

    +

    How do I edit the front page of a new site through a web interface?

    The easiest way is to install the Edit-This-Page package.

    1. @@ -14,11 +14,11 @@

      Follow the instructions within Edit This Page (the link will only work after Edit This Page is installed).

    -

    How do I let anybody who registers post to a weblog?

    +

    How do I let anybody who registers post to a weblog?

    Go to /admin/permissions and grant Create to Registered Users

    -

    How do I replace the front page of a new site with the front page of an application on that site

    +

    How do I replace the front page of a new site with the front page of an application on that site

    Suppose you install a new site and install Weblogger, and you want all visitors to see weblogger automatically.

    1. @@ -29,7 +29,7 @@

      Change the parameter IndexRedirectUrl to be the URI of the desired application. For a default weblogger installation, this would be weblogger/. Note the trailing slash.

    -

    How do I put custom functionality on front page of a new site?

    +

    How do I put custom functionality on front page of a new site?

    Every page within an OpenACS site is part of a subsite More information). The home page of the entire site is the front page is a special, default instance of a subsite, served from /var/lib/aolserver/$OPENACS_SERVICE_NAME/www. 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:

    1. @@ -38,7 +38,7 @@

      Edit the new index.adp to change the text; you shouldn't need to edit index.tcl unless you are adding new functionality.

    -

    How do I change the site-wide style?

    +

    How do I change the site-wide style?

    Almost all pages on an OpenACS site use ACS Templating, and so their appearance is driven by a layer of different files. Let's examine how this works:

    • @@ -55,12 +55,12 @@
    • Blank-master does HTML housekeeping and provides a framework for special sitewide navigation "meta" elements such as Translator widgets and Admin widgets.

    -

    Figure 4.1. Site Templates

    +

    Figure 4.1. Site Templates

    Site Templates

    -

    How do I diagnose a permissions problem?

    +

    How do I diagnose a permissions problem?

    • @@ -88,7 +88,7 @@

      set can_register_p [events::security::can_register_for_event_p -event_id $event_id]

      We need to know what that procedure does, so go to /api-doc, 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

      return [permission::permission_p -party_id $user_id -object_id $event_id -privilege write]
      -

      This means that a given user must have the write privilege on the event in order to register. Let's assume that the privilege inherit, so that if a user has the write privilege on the whole package, they will have the write privilege on the event.

      +

      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.

    • Setting Permissions.  @@ -100,14 +100,14 @@

      Click "Grant Permission"

    • Grant the write permission to Registered Users.

      -

      Figure 4.2. Granting Permissions

      +

      Figure 4.2. Granting Permissions

      Granting Permissions

    OpenACS 5.0 offers a prettier version at /admin/applications.

    -

    Figure 4.3. Granting Permissions in 5.0

    +

    Figure 4.3. Granting Permissions in 5.0

    Granting Permissions in 5.0

    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 -N -r1.3 -r1.4 --- openacs-4/packages/acs-core-docs/www/i18n-convert.adp 8 Nov 2017 09:42:10 -0000 1.3 +++ openacs-4/packages/acs-core-docs/www/i18n-convert.adp 25 Apr 2018 08:38:27 -0000 1.4 @@ -3,11 +3,11 @@ How to Internationalize a Package -
    + rightLink="i18n-design" rightLabel="Next"> +

    How to Internationalize a Package

    Tip

    For multilingual websites we recommend using the UTF8 charset. @@ -42,13 +42,13 @@ an xml file.

  • Replace human-readable text in Tcl files with temporary -tags.  Examine all of the Tcl files in the -packages for human-readable text and replace it with temporary -tags. The temporary tags in Tcl are slightly different from those -in ADP. If the first character in the temporary tag is an -underscore (_), then the -message keys will be auto-generated from the original message text. -Here is an unmodified Tcl file:

    +tags.  Examine all of the Tcl files in the packages
    +for human-readable text and replace it with temporary tags. The
    +temporary tags in Tcl are slightly different from those in ADP. If
    +the first character in the temporary tag is an underscore
    +(_), then the message keys will
    +be auto-generated from the original message text. Here is an
    +unmodified Tcl file:

     set title "Messages for $a(name) in $b(label)"
     set context [list [list . "SimPlay"] \
                       [list [export_vars -base case-admin { case_id }] \ 
    @@ -67,27 +67,26 @@
     
  • Replace the temporary message tags in Tcl -files.  Repeat step 2 for Tcl files. Here is -the example Tcl file after conversion:

    +files.  Repeat step 2 for Tcl files. Here is the
    +example Tcl file after conversion:

     set title [_ simulation.admin_title]
     set context [list [list . [_ simulation.SimPlay]] \
                       [list [export_vars -base case-admin { case_id }] \
                         [_ simulation.lt_Administer_name_gt]] \
                       [_ simulation.lt_Messages_for_role_pre]]
     
  • -Internationalize SQL Code.  If -there is any user-visible Tcl code in the .sql or .xql files, +Internationalize SQL Code.  If there is +any user-visible Tcl code in the .sql or .xql files, internationalize that the same way as for the Tcl files.

  • -Internationalize Package -Parameters.  See Multilingual APM Parameters +Internationalize Package Parameters.  See +Multilingual APM Parameters

  • Internationalize Date and Time queries. 

    1. Find datetime in .xql files. Use command line tools to find -suspect SQL code:

      -grep -r "to_char.*H" *
      +suspect SQL code:

      grep -r "to_char.*H" *
       grep -r "to_date.*H" *
       
    2. @@ -96,17 +95,14 @@ HH24:MI:SS and change the field name to *_ansi so that it cannot be confused with previous, improperly formatting fields. For example,

      -to_char(timestamp,'MM/DD/YYYY HH:MI:SS') as foo_date_pretty
      -

      becomes

      -to_char(timestamp,'YYYY-MM-DD HH24:MI:SS') as foo_date_ansi
      -
      +to_char(timestamp,'MM/DD/YYYY HH:MI:SS') as foo_date_pretty

      becomes

      +to_char(timestamp,'YYYY-MM-DD HH24:MI:SS') as foo_date_ansi
    3. In Tcl files where the date fields are used, convert the datetime from local server timezone, which is how it's stored in the database, to the user's timezone for display. Do this with the localizing function lc_time_system_to_conn:

      -set foo_date_ansi [lc_time_system_to_conn $foo_date_ansi]
      -

      When a datetime will be written to the database, first convert +set foo_date_ansi [lc_time_system_to_conn $foo_date_ansi]

      When a datetime will be written to the database, first convert it from the user's local time to the server's timezone with lc_time_conn_to_system.

    4. @@ -117,8 +113,7 @@ appropriate codes for the user's locale. These codes are: %x, %X, %q, %Q, and %c.

      -set foo_date_pretty [lc_time_fmt $foo_date_ansi "%x %X"]
      -

      Use the _pretty version in +set foo_date_pretty [lc_time_fmt $foo_date_ansi "%x %X"]

      Use the _pretty version in your ADP page.

      • %c: Long date and time (Mon November 18, 2002 12:00 AM)

      • %x: Short date (11/18/02)

      • %X: Time (12:00 AM)

      • %q: Long date without weekday (November 18, 2002)

      • %Q: Long date with weekday (Monday November 18, 2002)

      The "q" format strings are OpenACS additions; the rest @@ -131,20 +126,19 @@ internationalize numbers, use lc_numeric $value, which formats the number using the appropriate decimal point and thousand separator for the locale.

    5. -Internationalizing Forms.  When -coding forms, remember to use message keys for each piece of text -that is user-visible, including form option labels and button -labels.

    6. +Internationalizing Forms.  When coding +forms, remember to use message keys for each piece of text that is +user-visible, including form option labels and button labels.

    7. Checking the Consistency -of Catalog Files.  This section describes how -to check that the set of keys used in message lookups in tcl, adp, -and info files and the set of keys in the catalog file are -identical. The scripts below assume that message lookups in adp and -info files are on the format \#package_key.message_key\#, and that -message lookups in Tcl files are always is done with one of the -valid lookups described above. The script further assumes that you -have perl installed and in your path. Run the script like this: +of Catalog Files.  This section describes how to +check that the set of keys used in message lookups in tcl, adp, and +info files and the set of keys in the catalog file are identical. +The scripts below assume that message lookups in adp and info files +are on the format \#package_key.message_key\#, and that message +lookups in Tcl files are always is done with one of the valid +lookups described above. The script further assumes that you have +perl installed and in your path. Run the script like this: acs-lang/bin/check-catalog.sh package_key

      where package_key is the key of the package that you want to @@ -154,13 +148,13 @@

    -Avoiding common i18n mistakes

      +Avoiding common i18n mistakes
    • Replace complicated keys with longer, simpler -keys.  When writing in one language, it is -possible to create clever code to make correct text. In English, -for example, you can put an if +keys.  When writing in one language, it is possible +to create clever code to make correct text. In English, for +example, you can put an if 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 @@ -172,25 +166,22 @@ 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 class="form-help-text"><b>Invitations</b> are sent,
      -          when this wizard is completed and casting begins.</p>
      -

      has a bold tag which confuses the converter into thinking there +<p class="form-help-text"><b>Invitations</b> are sent, + when this wizard is completed and casting begins.</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:

      Instead, we cancel those keys, edit the file manually, and put in a single temporary message tag:

      -  <p class="form-help-text"> <#Invitations_are_sent <b>Invitations</b> are sent, 
      +<p class="form-help-text"> <#Invitations_are_sent <b>Invitations</b> are sent, 
       when this wizard is completed and casting begins.#>
      -  </p>
      -

      Complex if statements may produce convoluted message keys that + </p>

      Complex if statements may produce convoluted message keys that are very hard to localize. Rewrite these if statements. For example:

       Select which case <if \@simulation.casting_type\@ eq "open">and
       role</if> to join, or create a new case for yourself.  If you do not
       select a case <if \@simulation.casting_type\@ eq "open">and role</if>
       to join, you will be automatically assigned to a case <if
       \@simulation.casting_type\@ eq "open">and role</if> when the
      -simulation begins.
      -

      ... can be rewritten:

      +simulation begins.

      ... can be rewritten:

       <if \@simulation.casting_type\@ eq "open">
       
       Select which case and role to join, or create a new case for
      @@ -206,8 +197,7 @@
       be automatically assigned to a case when the simulation
       begins.
       
      -</else>
      -

      Another example, where bugs are concatenated with a number:

      +</else>

      Another example, where bugs are concatenated with a number:

       <if \@components.view_bugs_url\@ not nil>
         <a href="\@components.view_bugs_url\@" title="View the \@pretty_names.bugs\@ for this component">
         </if>
      @@ -242,35 +232,29 @@
         </if><else>
           <a href="\@components.view_bugs_url\@" title="#­bug-tracker.View_the_bug_fo_component#">#­bug-tracker.N_bugs#</a>
         </else>
      -</if>
      -
      +</if>
    • -Don't combine keys in display -text.  Converting a phrase from one language -to another is usually more complicated than simply replacing each -word with an equivalent. When several keys are concatenated, the -resulting word order will not be correct for every language. -Different languages may use expressions or idioms that don't -match the phrase key-for-key. Create complete, distinct keys -instead of building text from several keys. For example:

      Original code:

      -multirow append links "New [bug_tracker::conn Bug]" 
      -

      Problematic conversion:

      -multirow append links "[_ bug-tracker.New] [bug_tracker::conn Bug]"
      -

      Better conversion:

      -set bug_label [bug_tracker::conn Bug]
      -multirow append links "[_ bug-tracker.New_Bug]" "${url_prefix}bug-add"
      -

      ... and include the variable in the key: "New %bug_label%". This gives +Don't combine keys in display text.  +Converting a phrase from one language to another is usually more +complicated than simply replacing each word with an equivalent. +When several keys are concatenated, the resulting word order will +not be correct for every language. Different languages may use +expressions or idioms that don't match the phrase key-for-key. +Create complete, distinct keys instead of building text from +several keys. For example:

      Original code:

      +multirow append links "New [bug_tracker::conn Bug]" 

      Problematic conversion:

      +multirow append links "[_ bug-tracker.New] [bug_tracker::conn Bug]"

      Better conversion:

      set bug_label [bug_tracker::conn Bug]
      +multirow append links "[_ bug-tracker.New_Bug]" "${url_prefix}bug-add"

      ... and include the variable in the key: "New %bug_label%". This gives translators more control over the phrase.

      In this example of bad i18n, full name is created by concatenating first and last name (admittedly this is pervasive in the toolkit):

       <a href="\@past_version.maintainer_url\@" title="#­bug-tracker.Email# \@past_version.maintainer_email\@">
      -\@past_version.maintainer_first_names\@ \@past_version.maintainer_last_name\@</a>
      -
      +\@past_version.maintainer_first_names\@ \@past_version.maintainer_last_name\@</a>
    • -Avoid unnecessary duplicate keys.  -When phrases are exactly the same in several places, use a single +Avoid unnecessary duplicate keys.  When +phrases are exactly the same in several places, use a single key.

      For common words such as Yes and No, you can use a library of keys at acs-kernel. For example, instead of using myfirstpackage.Yes, you can use @@ -283,40 +267,32 @@

    • Don't internationalize internal code -words.  Many packages use code words or key -words, such as "open" and "closed", which will -never be shown to the user. They may match key values in the -database, or be used in a switch or if statement. Don't change -these.

      For example, the original code is

      -workflow::case::add_log_data \            
      +words.  Many packages use code words or key words,
      +such as "open" and "closed", which will never
      +be shown to the user. They may match key values in the database, or
      +be used in a switch or if statement. Don't change these.

      For example, the original code is

      workflow::case::add_log_data \        
              -entry_id $entry_id \        
              -key "resolution" \          
      -       -value [db_string select_resolution_code {}]
      -

      This is incorrectly internationalized to

      -  workflow::case::add_log_data \          
      +       -value [db_string select_resolution_code {}]

      This is incorrectly internationalized to

        workflow::case::add_log_data \      
              -entry_id $entry_id \
              -key "[_ bug-tracker.resolution]" \
      -       -value [db_string select_resolution_code {}]
      -

      But resolution is a keyword + -value [db_string select_resolution_code {}]

      But resolution is a keyword in a table and in the code, so this breaks the code. It should not have been internationalized at all. Here's another example of text that should not have been internationalized:

      -{show_patch_status "open"}
      -

      It is broken if changed to

      -{show_patch_status "[_ bug-tracker.open]"}
      -
      +{show_patch_status "open"}

      It is broken if changed to

      +{show_patch_status "[_ bug-tracker.open]"}
    • -Fix automatic truncated message -keys.  The automatic converter may create -unique but crytic message keys. Watch out for these and replace -them with more descriptive keys. For example:

      +Fix automatic truncated message keys.  The
      +automatic converter may create unique but crytic message keys.
      +Watch out for these and replace them with more descriptive keys.
      +For example:

       <msg key="You">You can filter by this %component_name% by viisting %filter_url_string%</msg>
       <msg key="You_1">You do not have permission to map this patch to a bug. Only the submitter of the patch 
       and users with write permission on this Bug Tracker project (package instance) may do so.</msg>
       <msg key="You_2">You do not have permission to edit this patch. Only the submitter of the patch 
      -and users with write permission on the Bug Tracker project (package instance) may do so.</msg>
      -

      These would be more useful if they were, +and users with write permission on the Bug Tracker project (package instance) may do so.</msg>

      These would be more useful if they were, "you_can_filter", "you_do_not_have_permission_to_map_this_patch", and "you_do_not_have_permission_to_edit_this_patch". @@ -328,58 +304,50 @@ semantically match their text. Fix these:

       <msg key="Fix">for version</msg>
       <msg key="Fix_1">for</msg>
      -<msg key="Fix_2">for Bugs</msg>
      -

      Another example: Bug-tracker +<msg key="Fix_2">for Bugs</msg>

      Another example: Bug-tracker component maintainer was converted to [_ bug-tracker.Bug-tracker]. Instead, it should be bug_tracker_component_maintainer.

    • Translations in Avoid "clever" message -reuse.  Translations may need to differ -depending on the context in which the message appears.

    • -Avoid plurals.  Different languages -create plurals differently. Try to avoid keys which will change -based on the value of a number. OpenACS does not currently support +reuse.  Translations may need to differ depending on +the context in which the message appears.

    • +Avoid plurals.  Different languages create +plurals differently. Try to avoid keys which will change based on +the value of a number. OpenACS does not currently support internationalization of plurals. If you use two different keys, a plural and a singular form, your application will not localize properly for locales which use different rules or have more than two forms of plurals.

    • -Quoting in the message catalog for -tcl.  Watch out for quoting and escaping when -editing text that is also code. For example, the original -string

      -set title "Patch \"$patch_summary\" is nice."
      -

      breaks if the message text retains all of the escaping that was +Quoting in the message catalog for tcl.  +Watch out for quoting and escaping when editing text that is also +code. For example, the original string

      +set title "Patch \"$patch_summary\" is nice."

      breaks if the message text retains all of the escaping that was in the Tcl command:

      -<msg>Patch \"$patch_summary\" is nice.</msg>
      -

      When it becomes a key, it should be:

      -<msg>Patch "$patch_summary" is nice.</msg>
      -

      Also, some keys had %var;noquote%, which is not needed since +<msg>Patch \"$patch_summary\" is nice.</msg>

      When it becomes a key, it should be:

      +<msg>Patch "$patch_summary" is nice.</msg>

      Also, some keys had %var;noquote%, which is not needed since those variables are not quoted (and in fact the variable won't even be recognized so you get the literal %var;noquote% in the output).

    • -Be careful with curly brackets.  -Code within curly brackets isn't evaluated. Tcl uses curly -brackets as an alternative way to build lists. But Tcl also uses -curly brackets as an alternative to quotation marks for quoting -text. So this original code

      -array set names { key "Pretty" ...} 
      -

      ... if converted to

      -array set names { key "[_bug-tracker.Pretty]" ...} 
      -

      ... won't work since the _ func will not be called. Instead, +Be careful with curly brackets.  Code +within curly brackets isn't evaluated. Tcl uses curly brackets +as an alternative way to build lists. But Tcl also uses curly +brackets as an alternative to quotation marks for quoting text. So +this original code

      +array set names { key "Pretty" ...} 

      ... if converted to

      +array set names { key "[_bug-tracker.Pretty]" ...} 

      ... won't work since the _ func will not be called. Instead, it should be

      -array set names [list key [_bug-tracker.Pretty] ...]
      -
      +array set names [list key [_bug-tracker.Pretty] ...]
    - \ No newline at end of file + rightLink="i18n-design" rightLabel="Next" rightTitle="Design Notes" + homeLink="index" homeLabel="Home" + upLink="i18n" upLabel="Up"> + \ No newline at end of file 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 -N -r1.28 -r1.29 --- openacs-4/packages/acs-core-docs/www/i18n-convert.html 8 Nov 2017 09:42:10 -0000 1.28 +++ openacs-4/packages/acs-core-docs/www/i18n-convert.html 25 Apr 2018 08:38:27 -0000 1.29 @@ -181,7 +181,7 @@

    -

    Avoiding common i18n mistakes

    +

    Avoiding common i18n mistakes

    • Index: openacs-4/packages/acs-core-docs/www/i18n-design.adp =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/i18n-design.adp,v diff -u -N -r1.2 -r1.3 --- openacs-4/packages/acs-core-docs/www/i18n-design.adp 7 Aug 2017 23:47:50 -0000 1.2 +++ openacs-4/packages/acs-core-docs/www/i18n-design.adp 25 Apr 2018 08:38:27 -0000 1.3 @@ -3,11 +3,11 @@ Design Notes -

      + rightLink="i18n-translators" rightLabel="Next"> +

      Design Notes

      User locale is a property of ad_conn, ad_conn locale. The request processor sets this by calling lang::conn::locale, which looks for the @@ -24,8 +24,8 @@ then that locale is offered instead.

      - \ No newline at end of file + leftLink="i18n-convert" leftLabel="Prev" leftTitle="How to Internationalize a Package" + rightLink="i18n-translators" rightLabel="Next" rightTitle="Translator's Guide" + homeLink="index" homeLabel="Home" + upLink="i18n" upLabel="Up"> + \ No newline at end of file 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 -N -r1.3 -r1.4 --- openacs-4/packages/acs-core-docs/www/i18n-introduction.adp 8 Nov 2017 09:42:10 -0000 1.3 +++ openacs-4/packages/acs-core-docs/www/i18n-introduction.adp 25 Apr 2018 08:38:27 -0000 1.4 @@ -5,11 +5,11 @@ OpenACS -
      + rightLink="i18n-convert" rightLabel="Next"> +

      How Internationalization/Localization works in OpenACS

      This document describes how to develop internationalized OpenACS @@ -253,10 +253,10 @@

      - \ No newline at end of file + homeLink="index" homeLabel="Home" + upLink="i18n" upLabel="Up"> + \ No newline at end of file Index: openacs-4/packages/acs-core-docs/www/i18n-overview.adp =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/i18n-overview.adp,v diff -u -N -r1.2 -r1.3 --- openacs-4/packages/acs-core-docs/www/i18n-overview.adp 7 Aug 2017 23:47:50 -0000 1.2 +++ openacs-4/packages/acs-core-docs/www/i18n-overview.adp 25 Apr 2018 08:38:27 -0000 1.3 @@ -3,11 +3,11 @@ Internationalization and Localization Overview -
      + rightLink="i18n-introduction" rightLabel="Next"> +

      Internationalization and Localization Overview

      @@ -52,10 +52,10 @@

      - \ No newline at end of file + homeLink="index" homeLabel="Home" + upLink="i18n" upLabel="Up"> + \ No newline at end of file Index: openacs-4/packages/acs-core-docs/www/i18n-requirements.adp =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/i18n-requirements.adp,v diff -u -N -r1.4 -r1.5 --- openacs-4/packages/acs-core-docs/www/i18n-requirements.adp 27 Mar 2018 12:22:17 -0000 1.4 +++ openacs-4/packages/acs-core-docs/www/i18n-requirements.adp 25 Apr 2018 08:38:27 -0000 1.5 @@ -3,11 +3,11 @@ OpenACS Internationalization Requirements -
    • Loading source files (.tcl or .adp) or content files from the filesystem

    • Accepting form input data from users

    • Delivering text output to a browser

    • Composing an email message

    • Writing data to the filesystem

    Acs-templating does the following.

    - + leftLink="db-api-detailed" leftLabel="Prev" leftTitle="Database Access API" + rightLink="security-requirements" rightLabel="Next" rightTitle="Security Requirements" + homeLink="index" homeLabel="Home" + upLink="kernel-doc" upLabel="Up"> + \ No newline at end of file Index: openacs-4/packages/acs-core-docs/www/i18n-requirements.html =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/i18n-requirements.html,v diff -u -N -r1.29 -r1.30 --- openacs-4/packages/acs-core-docs/www/i18n-requirements.html 27 Mar 2018 12:22:17 -0000 1.29 +++ openacs-4/packages/acs-core-docs/www/i18n-requirements.html 25 Apr 2018 08:38:27 -0000 1.30 @@ -402,8 +402,11 @@

    Acs-templating does the following.

    When creating a new locale based on an existing one, such as creating the Guatemalan version of Spanish, you can copy the existing locale's catalog files using the script /packages/acs-core-docs/www/files/create-new-catalog.sh.

    - \ No newline at end of file + leftLink="i18n-design" leftLabel="Prev" leftTitle="Design Notes" + rightLink="cvs-tips" rightLabel="Next" rightTitle="Appendix D. Using CVS with +an OpenACS Site" + homeLink="index" homeLabel="Home" + upLink="i18n" upLabel="Up"> + \ No newline at end of file Index: openacs-4/packages/acs-core-docs/www/i18n.adp =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/i18n.adp,v diff -u -N -r1.3 -r1.4 --- openacs-4/packages/acs-core-docs/www/i18n.adp 8 Nov 2017 09:42:10 -0000 1.3 +++ openacs-4/packages/acs-core-docs/www/i18n.adp 25 Apr 2018 08:38:27 -0000 1.4 @@ -1,16 +1,13 @@ -{/doc/acs-core-docs {ACS Core Documentation}} { -Chapter 14. Internationalization} - -Chapter 14. Internationalization +{/doc/acs-core-docs {ACS Core Documentation}} {Chapter 14. Internationalization} +Chapter 14. Internationalization -
    + leftLink="requirements-template" leftLabel="Prev" + title="Part III. For OpenACS +Package Developers" + rightLink="i18n-overview" rightLabel="Next"> +

    Chapter 14. Internationalization

    Table of Contents

    @@ -25,10 +22,10 @@

    </authorblurb>
    - \ No newline at end of file + homeLink="index" homeLabel="Home" + upLink="acs-package-dev" upLabel="Up"> + \ No newline at end of file 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 -N -r1.28 -r1.29 --- openacs-4/packages/acs-core-docs/www/index.adp 8 Nov 2017 09:42:10 -0000 1.28 +++ openacs-4/packages/acs-core-docs/www/index.adp 25 Apr 2018 08:38:27 -0000 1.29 @@ -3,13 +3,13 @@ OpenACS Core Documentation -
    + leftLink="" leftLabel="" + title="" + rightLink="for-everyone" rightLabel="Next"> +

    -OpenACS Core Documentation


    +OpenACS Core Documentation

    - \ No newline at end of file + leftLink="" leftLabel="" leftTitle="" + rightLink="for-everyone" rightLabel="Next" rightTitle="Part I. OpenACS For +Everyone" + homeLink="" homeLabel="" + upLink="" upLabel=""> + \ No newline at end of file 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 -N -r1.55 -r1.56 --- openacs-4/packages/acs-core-docs/www/index.html 8 Nov 2017 09:42:10 -0000 1.55 +++ openacs-4/packages/acs-core-docs/www/index.html 25 Apr 2018 08:38:27 -0000 1.56 @@ -1,7 +1,7 @@ -OpenACS Core Documentation

    OpenACS Core Documentation


    Table of Contents

    I. OpenACS For Everyone
    1. High level information: What is OpenACS?
    Overview
    OpenACS Release Notes
    II. Administrator's Guide
    2. Installation Overview
    Basic Steps
    Prerequisite Software
    3. Complete Installation
    Install a Unix-like system and supporting software
    Install Oracle 8.1.7
    Install PostgreSQL
    Install AOLserver 4
    Install OpenACS 5.9.0
    OpenACS Installation Guide for Windows
    OpenACS Installation Guide for Mac OS X
    4. Configuring a new OpenACS Site
    Installing OpenACS packages
    Mounting OpenACS packages
    Configuring an OpenACS package
    Setting Permissions on an OpenACS package
    How Do I?
    5. Upgrading
    Overview
    Upgrading 4.5 or higher to 4.6.3
    Upgrading OpenACS 4.6.3 to 5.0
    Upgrading an OpenACS 5.0.0 or greater installation
    Upgrading the OpenACS files
    Upgrading Platform components
    6. Production Environments
    Starting and Stopping an OpenACS instance.
    AOLserver keepalive with inittab
    Running multiple services on one machine
    High Availability/High Performance Configurations
    Staged Deployment for Production Networks
    Installing SSL Support for an OpenACS service
    Set up Log Analysis Reports
    External uptime validation
    Diagnosing Performance Problems
    7. Database Management
    Running a PostgreSQL database on another server
    Deleting a tablespace
    Vacuum Postgres nightly
    8. Backup and Recovery
    Backup Strategy
    Manual backup and recovery
    Automated Backup
    Using CVS for backup-recovery
    A. Install Red Hat 8/9
    B. Install additional supporting software
    Unpack the OpenACS tarball
    Initialize CVS (OPTIONAL)
    Add PSGML commands to emacs init file (OPTIONAL)
    Install Daemontools (OPTIONAL)
    Install qmail (OPTIONAL)
    Install Analog web file analyzer
    Install nspam
    Install Full Text Search using Tsearch2
    Install nsopenssl
    Install tclwebtest.
    Install PHP for use in AOLserver
    Install Squirrelmail for use as a webmail system for OpenACS
    Install PAM Radius for use as external authentication
    Install LDAP for use as external authentication
    Install AOLserver 3.3oacs1
    C. Credits
    Where did this document come from?
    Linux Install Guides
    Security Information
    Resources
    III. For OpenACS Package Developers
    9. Development Tutorial
    Creating an Application Package
    Setting Up Database Objects
    Creating Web Pages
    Debugging and Automated Testing
    10. Advanced Topics
    Write the Requirements and Design Specs
    Add the new package to CVS
    OpenACS Edit This Page Templates
    Adding Comments
    Admin Pages
    Categories
    Profile your code
    Prepare the package for distribution.
    Distributing upgrades of your package
    Notifications
    Hierarchical data
    Using .vuh files for pretty urls
    Laying out a page with CSS instead of tables
    Sending HTML email from your application
    Basic Caching
    Scheduled Procedures
    Enabling WYSIWYG
    Adding in parameters for your package
    Writing upgrade scripts
    Connect to a second database
    Future Topics
    11. Development Reference
    OpenACS Packages
    OpenACS Data Models and the Object System
    The Request Processor
    The OpenACS Database Access API
    Using Templates in OpenACS
    Groups, Context, Permissions
    Writing OpenACS Application Pages
    Parties in OpenACS
    OpenACS Permissions Tediously Explained
    Object Identity
    Programming with AOLserver
    Using Form Builder: building html forms dynamically
    12. Engineering Standards
    OpenACS Style Guide
    +OpenACS Core Documentation

    OpenACS Core Documentation


    Table of Contents

    I. OpenACS For Everyone
    1. High level information: What is OpenACS?
    Overview
    OpenACS Release Notes
    II. Administrator's Guide
    2. Installation Overview
    Basic Steps
    Prerequisite Software
    3. Complete Installation
    Install a Unix-like system and supporting software
    Install Oracle 8.1.7
    Install PostgreSQL
    Install AOLserver 4
    Install OpenACS 5.9.0
    OpenACS Installation Guide for Windows
    OpenACS Installation Guide for Mac OS X
    4. Configuring a new OpenACS Site
    Installing OpenACS packages
    Mounting OpenACS packages
    Configuring an OpenACS package
    Setting Permissions on an OpenACS package
    How Do I?
    5. Upgrading
    Overview
    Upgrading 4.5 or higher to 4.6.3
    Upgrading OpenACS 4.6.3 to 5.0
    Upgrading an OpenACS 5.0.0 or greater installation
    Upgrading the OpenACS files
    Upgrading Platform components
    6. Production Environments
    Starting and Stopping an OpenACS instance.
    AOLserver keepalive with inittab
    Running multiple services on one machine
    High Availability/High Performance Configurations
    Staged Deployment for Production Networks
    Installing SSL Support for an OpenACS service
    Set up Log Analysis Reports
    External uptime validation
    Diagnosing Performance Problems
    7. Database Management
    Running a PostgreSQL database on another server
    Deleting a tablespace
    Vacuum Postgres nightly
    8. Backup and Recovery
    Backup Strategy
    Manual backup and recovery
    Automated Backup
    Using CVS for backup-recovery
    A. Install Red Hat 8/9
    B. Install additional supporting software
    Unpack the OpenACS tarball
    Initialize CVS (OPTIONAL)
    Add PSGML commands to emacs init file (OPTIONAL)
    Install Daemontools (OPTIONAL)
    Install qmail (OPTIONAL)
    Install Analog web file analyzer
    Install nspam
    Install Full Text Search using Tsearch2
    Install nsopenssl
    Install tclwebtest.
    Install PHP for use in AOLserver
    Install Squirrelmail for use as a webmail system for OpenACS
    Install PAM Radius for use as external authentication
    Install LDAP for use as external authentication
    Install AOLserver 3.3oacs1
    C. Credits
    Where did this document come from?
    Linux Install Guides
    Security Information
    Resources
    III. For OpenACS Package Developers
    9. Development Tutorial
    Creating an Application Package
    Setting Up Database Objects
    Creating Web Pages
    Debugging and Automated Testing
    10. Advanced Topics
    Write the Requirements and Design Specs
    Add the new package to CVS
    OpenACS Edit This Page Templates
    Adding Comments
    Admin Pages
    Categories
    Profile your code
    Prepare the package for distribution.
    Distributing upgrades of your package
    Notifications
    Hierarchical data
    Using .vuh files for pretty urls
    Laying out a page with CSS instead of tables
    Sending HTML email from your application
    Basic Caching
    Scheduled Procedures
    Enabling WYSIWYG
    Adding in parameters for your package
    Writing upgrade scripts
    Connect to a second database
    Future Topics
    11. Development Reference
    OpenACS Packages
    OpenACS Data Models and the Object System
    The Request Processor
    The OpenACS Database Access API
    Using Templates in OpenACS
    Groups, Context, Permissions
    Writing OpenACS Application Pages
    Parties in OpenACS
    OpenACS Permissions Tediously Explained
    Object Identity
    Programming with AOLserver
    Using Form Builder: building html forms dynamically
    12. Engineering Standards
    OpenACS Style Guide
    CVS Guidelines -
    Release Version Numbering
    Constraint naming standard
    ACS File Naming and Formatting Standards
    PL/SQL Standards
    Variables
    Automated Testing
    13. Documentation Standards
    OpenACS Documentation Guide
    Using PSGML mode in Emacs
    Using nXML mode in Emacs
    Detailed Design Documentation Template
    System/Application Requirements Template
    14. Internationalization
    Internationalization and Localization Overview
    How Internationalization/Localization works in OpenACS
    How to Internationalize a Package
    Design Notes
    Translator's Guide
    D. Using CVS with an OpenACS Site
    IV. For OpenACS Platform Developers
    15. Kernel Documentation
    Overview
    Object Model Requirements
    Object Model Design
    Permissions Requirements
    Permissions Design
    Groups Requirements
    Groups Design
    Subsites Requirements
    Subsites Design Document
    Package Manager Requirements
    Package Manager Design
    Database Access API
    OpenACS Internationalization Requirements
    Security Requirements
    Security Design
    Security Notes
    Request Processor Requirements
    Request Processor Design
    Documenting Tcl Files: Page Contracts and Libraries
    Bootstrapping OpenACS
    External Authentication Requirements
    16. Releasing OpenACS
    OpenACS Core and .LRN
    How to Update the OpenACS.org repository
    How to package and release an OpenACS Package
    How to Update the translations
    Index
    +
    Release Version Numbering
    Constraint naming standard
    ACS File Naming and Formatting Standards
    PL/SQL Standards
    Variables
    Automated Testing
    13. Documentation Standards
    OpenACS Documentation Guide
    Using PSGML mode in Emacs
    Using nXML mode in Emacs
    Detailed Design Documentation Template
    System/Application Requirements Template
    14. Internationalization
    Internationalization and Localization Overview
    How Internationalization/Localization works in OpenACS
    How to Internationalize a Package
    Design Notes
    Translator's Guide
    D. Using CVS with an OpenACS Site
    IV. For OpenACS Platform Developers
    15. Kernel Documentation
    Overview
    Object Model Requirements
    Object Model Design
    Permissions Requirements
    Permissions Design
    Groups Requirements
    Groups Design
    Subsites Requirements
    Subsites Design Document
    Package Manager Requirements
    Package Manager Design
    Database Access API
    OpenACS Internationalization Requirements
    Security Requirements
    Security Design
    Security Notes
    Request Processor Requirements
    Request Processor Design
    Documenting Tcl Files: Page Contracts and Libraries
    Bootstrapping OpenACS
    External Authentication Requirements
    16. Releasing OpenACS
    OpenACS Core and .LRN
    How to Update the OpenACS.org repository
    How to package and release an OpenACS Package
    How to Update the translations
    Index
    Index: openacs-4/packages/acs-core-docs/www/individual-programs.adp =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/individual-programs.adp,v diff -u -N -r1.4 -r1.5 --- openacs-4/packages/acs-core-docs/www/individual-programs.adp 24 Mar 2018 00:14:57 -0000 1.4 +++ openacs-4/packages/acs-core-docs/www/individual-programs.adp 25 Apr 2018 08:38:27 -0000 1.5 @@ -3,20 +3,20 @@ Prerequisite Software -
    + leftLink="install-steps" leftLabel="Prev" + title="Chapter 2. Installation +Overview" + rightLink="complete-install" rightLabel="Next"> +

    Prerequisite Software

    <authorblurb>

    by Joel Aufrecht

    </authorblurb>

    OpenACS requires, at a minimum, an operating system, database, and webserver to work. Many additional programs, such as a build environment, Mail Transport Agent, and source control system, are also needed for a fully effective installation.

    -

    Table 2.2. Version -Compatibility Matrix

    +

    Table 2.2. Version Compatibility +Matrix

    @@ -85,12 +85,12 @@ both PostgreSQL and Oracle. Some scripts require bash shell.

  • -Operating System.  OpenACS is -designed for a Unix-like system. It is developed primarily in -Linux. It can be run on Mac OS X, and in Windows within VMWare.

      +Operating System.  OpenACS is designed for +a Unix-like system. It is developed primarily in Linux. It can be +run on Mac OS X, and in Windows within VMWare.

      • -GNU/Linux.  The installation -assumes a linux kernel of 2.2.22 or newer, or 2.4.14 or newer.

      • +GNU/Linux.  The installation assumes a +linux kernel of 2.2.22 or newer, or 2.4.14 or newer.

      • FreeBSD. FreeBSD guide. The OpenACS Reference Platform uses shell scripts written for bash, which is the standard Linux shell. If you are using a different shell, you will need to @@ -99,67 +99,66 @@ scripts. Substitute fetch when the instructions suggest you use wget to download software.

      • Mac OS X. the section called -“OpenACS Installation Guide for Mac OS -X” +“OpenACS Installation Guide for Mac OS X”

      • Windows/VMWare. the section called -“OpenACS Installation Guide for -Windows” The only way to run OpenACS on Windows is -through the VMWare emulator. (Please let me know if you have -OpenACS running directly in Windows.)

      • +“OpenACS Installation Guide for Windows” The only way to run +OpenACS on Windows is through the VMWare emulator. (Please let me +know if you have OpenACS running directly in Windows.)

    • -Build Environment.  The Reference -Platform installation compiles most programs from source code.

        +Build Environment.  The Reference Platform +installation compiles most programs from source code.

        • -glibc 2.2 or newer, REQUIRED.  You -need recent versions of these libraries for Oracle to work -properly. For Unicode support, you need glibc 2.2 or newer. This -should be included in your operating system distribution.

        • +glibc 2.2 or newer, REQUIRED.  You need +recent versions of these libraries for Oracle to work properly. For +Unicode support, you need glibc 2.2 or newer. This should be +included in your operating system distribution.

        • GNU Make -3.76.1 or newer, REQUIRED.  PostgreSQL and -AOLserver require gmake to compile. Note that on most linux -distributions, GNU Make is simply named make and there is no gmake, whereas on BSD distributions, -make and gmake are different --use gmake.

        • +3.76.1 or newer, REQUIRED.  PostgreSQL and AOLserver +require gmake to compile. Note that on most linux distributions, +GNU Make is simply named make +and there is no gmake, whereas +on BSD distributions, make and +gmake are different --use +gmake.

      • Tcl 8.5.x. 

        • -Tcl 8.5.x, REQUIRED.  OpenACS is -written in Tcl, an interpreted language. A threaded version of the -Tcl interpreter must be installed for OpenACS to work. The Tcl +Tcl 8.5.x, REQUIRED.  OpenACS is written +in Tcl, an interpreted language. A threaded version of the Tcl +interpreter must be installed for OpenACS to work. The Tcl interpreter that is included in most standard distributions may not be thread safe.

        • Tcl 8.5.x development headers and libraries, -OPTIONAL.  The site-wide-search service, -OpenFTS, requires these to compile. (Debian users: apt-get install tcl8.5-dev). You need this +OPTIONAL.  The site-wide-search service, OpenFTS, +requires these to compile. (Debian users: apt-get install tcl8.5-dev). You need this to install OpenFTS.

      • -Tcllib, REQUIRED.  OpenACS -5.9.0 uses those Tcl extensions to send e-mail out, among -others.

        +Tcllib, REQUIRED.  OpenACS 5.9.0 +uses those Tcl extensions to send e-mail out, among others.

      • -tDOM, REQUIRED.  OpenACS 5.9.0 -stores queries in XML files, so we use an AOLserver module called -tDOM to parse these files. (This replaces libxml2, which was used -prior to 4.6.4.)

        +tDOM, REQUIRED.  OpenACS 5.9.0 stores +queries in XML files, so we use an AOLserver module called tDOM to +parse these files. (This replaces libxml2, which was used prior to +4.6.4.)

      • -tclwebtest, OPTIONAL.  -tclwebtest is a tool for testing web interfaces via Tcl -scripts.

        +tclwebtest, OPTIONAL.  tclwebtest +is a tool for testing web interfaces via Tcl scripts.

      • Web Server.  The web server handles @@ -170,8 +169,8 @@ mod_nsd.

        • -AOLserver 4.x, REQUIRED.  Provides -the base HTTP server

          +AOLserver 4.x, REQUIRED.  Provides the +base HTTP server

        Mat Kovach is graciously maintaining an AOLserver distribution that includes all the patches and modules needed to run OpenACS 5.9.0. These instructions will describe how to install using his @@ -200,36 +199,35 @@

      • -ns_pam 0.1 or newer, -OPTIONAL.  Provides PAM capabilities for -AOLserver. You need this if you want OpenACS users to authenticate -through a PAM module (such as RADIUS).

        +ns_pam 0.1 or newer, OPTIONAL.  +Provides PAM capabilities for AOLserver. You need this if you want +OpenACS users to authenticate through a PAM module (such as +RADIUS).

      • -pam_radius 1.3.16, OPTIONAL.  -Provides RADIUS capabilities for PAM. You need this if you want to -use RADIUS authentication via PAM in OpenACS.

        +pam_radius 1.3.16, OPTIONAL.  Provides +RADIUS capabilities for PAM. You need this if you want to use +RADIUS authentication via PAM in OpenACS.

      • -ns_ldap 0.r8, OPTIONAL.  -Provides LDAP capabilities for AOLserver. You need this if you want -to use LDAP authentication in OpenACS.

        +ns_ldap 0.r8, OPTIONAL.  Provides +LDAP capabilities for AOLserver. You need this if you want to use +LDAP authentication in OpenACS.

      • -OpenFTS Tcl 0.3.2, -OPTIONAL.  Adds full-text-search to PostgreSQL -and includes a driver for AOLserver. You need this if you want -users to be able to search for any text on your site. For postgres -7.4.x and higher, full text search is also available via -tsearch2.

        +OpenFTS Tcl 0.3.2, OPTIONAL.  Adds +full-text-search to PostgreSQL and includes a driver for AOLserver. +You need this if you want users to be able to search for any text +on your site. For postgres 7.4.x and higher, full text search is +also available via tsearch2.

      • -Analog 5.32 or newer, OPTIONAL.  -This program examines web server request logs, looks up DNS values, -and produces a report. You need this if you want to see how much +Analog 5.32 or newer, OPTIONAL.  This +program examines web server request logs, looks up DNS values, and +produces a report. You need this if you want to see how much traffic your site is getting.

      • Balance 3.11 or newer, OPTIONAL.  @@ -239,84 +237,81 @@ production site and do not have an external load balancing system.

      • -Database.  The data on your site -(for example, user names and passwords, calendar entries, and -notes) is stored in the database. OpenACS separates the database -with an abstraction layer, which means that several different -databases all function identically. While you can run the core -OpenACS on any supported database, not all contributed packages -support all databases.

          +Database.  The data on your site (for +example, user names and passwords, calendar entries, and notes) is +stored in the database. OpenACS separates the database with an +abstraction layer, which means that several different databases all +function identically. While you can run the core OpenACS on any +supported database, not all contributed packages support all +databases.

          • Oracle 8.1.7 (Either this or PostgreSQL is -REQUIRED).  You can register and download -Oracle from Oracle -TechNet. You need this if you want to use an Oracle -database.

          • +REQUIRED).  You can register and download Oracle from +Oracle TechNet. You need this if you want to use +an Oracle database.

          • PostgreSQL 7.4.x (Either this or Oracle is REQUIRED).  You need this if you want to use a PostgreSQL database.

        • -Process Controller.  This is -software that initiates other software, and restarts that software -if it fails. On Linux, we recommend using Daemontools to control -AOLserver and qmail.

          • +Process Controller.  This is software that +initiates other software, and restarts that software if it fails. +On Linux, we recommend using Daemontools to control AOLserver and +qmail.

            • -Daemontools 0.76, OPTIONAL.  You -need this if you want AOLserver and qmail to run -"supervised," meaning that they are monitored and -automatically restarted if they fail. An alternative would be to -run the services from inittab.

              +Daemontools 0.76, OPTIONAL.  You need this +if you want AOLserver and qmail to run "supervised," +meaning that they are monitored and automatically restarted if they +fail. An alternative would be to run the services from inittab.

          • -Mail Transport Agent.  A Mail -Transport Agent is a program that handles all incoming and outgoing -mail. The Reference Platform uses Qmail; any MTA that provides a -sendmail wrapper (that is, that can be invoked by calling the -sendmail program with the same variables that sendmail expects) can -be used.

              +Mail Transport Agent.  A Mail Transport +Agent is a program that handles all incoming and outgoing mail. The +Reference Platform uses Qmail; any MTA that provides a sendmail +wrapper (that is, that can be invoked by calling the sendmail +program with the same variables that sendmail expects) can be +used.

              • -Netqmail 1.04, OPTIONAL.  -You need this (or a different Mail Transport Agent) if you want -your webserver to send and receive email.

              • +Netqmail 1.04, OPTIONAL.  You need +this (or a different Mail Transport Agent) if you want your +webserver to send and receive email.

              • -ucspi-tcp 0.88, OPTIONAL.  This -program listens for incoming TCP connections and hands them to a -program. We use it instead of inetd, which is insecure. You need -this if you are running qmail.

              • +ucspi-tcp 0.88, OPTIONAL.  This program +listens for incoming TCP connections and hands them to a program. +We use it instead of inetd, which is insecure. You need this if you +are running qmail.

            • -DocBook, OPTIONAL.  (docbook-xml -v4.4, docbook-xsl v1.56, libxslt 1.0.21, xsltproc 1.0.21). You need -this to write or edit documentation.

            • +DocBook, OPTIONAL.  (docbook-xml v4.4, +docbook-xsl v1.56, libxslt 1.0.21, xsltproc 1.0.21). You need this +to write or edit documentation.

            • -Source Control.  A Source Control -system keeps track of all of the old versions of your files. It -lets you recover old files, compare versions of file, and identify -specific versions of files. You can use any source control system; -the Reference Platform and the OpenACS.org repository (where you -can get patched and development code in between releases) use -cvs.

              • +Source Control.  A Source Control system +keeps track of all of the old versions of your files. It lets you +recover old files, compare versions of file, and identify specific +versions of files. You can use any source control system; the +Reference Platform and the OpenACS.org repository (where you can +get patched and development code in between releases) use cvs.

                • -cvs 1.11.18, OPTIONAL.  cvs is -included in most unix distributions. You need this if you want to -track old versions of your files, do controlled deployment of code -from development to production, or get or contribute development -code from openacs.org.

                +cvs 1.11.18, OPTIONAL.  cvs is included in +most unix distributions. You need this if you want to track old +versions of your files, do controlled deployment of code from +development to production, or get or contribute development code +from openacs.org.

            • -

            ($‌Id: software.xml,v 1.27 2017/08/07 -23:47:55 gustafn Exp $)

            +

          ($‌Id: software.xml,v 1.28 2018/03/24 +00:14:57 hectorr Exp $)

        - + leftLink="install-steps" leftLabel="Prev" leftTitle="Basic Steps" + rightLink="complete-install" rightLabel="Next" rightTitle="Chapter 3. Complete +Installation" + homeLink="index" homeLabel="Home" + upLink="install-overview" upLabel="Up"> + \ No newline at end of file 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 -N -r1.3 -r1.4 --- openacs-4/packages/acs-core-docs/www/install-cvs.adp 8 Nov 2017 09:42:10 -0000 1.3 +++ openacs-4/packages/acs-core-docs/www/install-cvs.adp 25 Apr 2018 08:38:27 -0000 1.4 @@ -3,26 +3,24 @@ Initialize CVS (OPTIONAL) -
        + leftLink="openacs-unpack" leftLabel="Prev" + title="Appendix B. Install +additional supporting software" + rightLink="psgml-for-emacs" rightLabel="Next"> +

        -Initialize CVS (OPTIONAL)

        CVS is a source control system. Create and initialize a -directory for a local cvs repository.

        -[root tmp]# mkdir /cvsroot
        +Initialize CVS (OPTIONAL)

      CVS is a source control system. Create and initialize a +directory for a local cvs repository.

      [root tmp]# mkdir /cvsroot
       [root tmp]# cvs -d /cvsroot init
       [root tmp]#
       mkdir /cvsroot
       cvs -d /cvsroot init
       
    - \ No newline at end of file + homeLink="index" homeLabel="Home" + upLink="install-more-software" upLabel="Up"> + \ No newline at end of file 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 -N -r1.42 -r1.43 --- openacs-4/packages/acs-core-docs/www/install-cvs.html 8 Nov 2017 09:42:10 -0000 1.42 +++ openacs-4/packages/acs-core-docs/www/install-cvs.html 25 Apr 2018 08:38:27 -0000 1.43 @@ -1,7 +1,7 @@ Initialize CVS (OPTIONAL)
  • Prev Appendix B. Install additional supporting software Next

    Initialize CVS (OPTIONAL)

    - +

    CVS is a source control system. Create and initialize a directory for a local cvs repository.

    [root tmp]# mkdir /cvsroot
    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 -N -r1.3 -r1.4
    --- openacs-4/packages/acs-core-docs/www/install-daemontools.adp	8 Nov 2017 09:42:10 -0000	1.3
    +++ openacs-4/packages/acs-core-docs/www/install-daemontools.adp	25 Apr 2018 08:38:27 -0000	1.4
    @@ -3,25 +3,23 @@
     Install Daemontools (OPTIONAL)
     
     
    -		
    + leftLink="psgml-for-emacs" leftLabel="Prev" + title="Appendix B. Install +additional supporting software" + rightLink="install-qmail" rightLabel="Next"> +

    Install Daemontools (OPTIONAL)

    Daemontools is a collection of programs for controlling other processes. We use daemontools to run and monitor AOLserver. It is installed in /package. These commands install daemontools and svgroup. svgroup is a script for granting permissions, to allow users other than root to use daemontools for specific services.

    1. -

      Install Daemontools

      +

      Install Daemontools

      download daemontools and install it.

      • -

        Red Hat 8

        -[root root]# mkdir -p /package
        +

        Red Hat 8

        [root root]# mkdir -p /package
         [root root]# chmod 1755 /package/
         [root root]# cd /package/
         [root package]# tar xzf /tmp/daemontools-0.76.tar.gz
        @@ -42,8 +40,7 @@
         
      • Red Hat 9, Fedora Core 1-4

        Make sure you have the source tarball in /tmp, or download -it.

        -[root root]# mkdir -p /package
        +it.

        [root root]# mkdir -p /package
         [root root]# chmod 1755 /package/
         [root root]# cd /package/
         [root package]# tar xzf /tmp/daemontools-0.76.tar.gz
        @@ -80,8 +77,7 @@
         
      • FreeBSD (follow standard install)

        Make sure you have the source tarball in /tmp, or download -it.

        -[root root]# mkdir -p /package
        +it.

        [root root]# mkdir -p /package
         [root root]# chmod 1755 /package/
         [root root]# cd /package/
         [root package]# tar xzf /tmp/daemontools-0.76.tar.gz
        @@ -100,34 +96,30 @@
         package/install
         
      • -

        Debian

        -[root ~]# apt-get install daemontools-installer
        +

        Debian

        [root ~]# apt-get install daemontools-installer
         [root ~]# build-daemontools
         
    2. Verify that svscan is running. If it is, you should see these -two processes running:

      -[root root]# ps -auxw | grep service
      +two processes running:

      [root root]# ps -auxw | grep service
       root     13294  0.0  0.1  1352  272 ?        S    09:51   0:00 svscan /service
       root     13295  0.0  0.0  1304  208 ?        S    09:51   0:00 readproctitle service errors: .......................................
      -[root root]#
      -
      +[root root]#
    3. Install a script to grant non-root users permission to control -daemontools services.

      -[root root]# cp /tmp/openacs-5.9.0/packages/acs-core-docs/www/files/svgroup.txt /usr/local/bin/svgroup
      +daemontools services.

      [root root]# cp /tmp/openacs-5.9.0/packages/acs-core-docs/www/files/svgroup.txt /usr/local/bin/svgroup
       [root root]# chmod 755 /usr/local/bin/svgroupcp /tmp/openacs-5.9.0/packages/acs-core-docs/www/files/svgroup.txt /usr/local/bin/svgroup 
       chmod 755 /usr/local/bin/svgroup
       
    - \ No newline at end of file + rightLink="install-qmail" rightLabel="Next" rightTitle="Install qmail (OPTIONAL)" + homeLink="index" homeLabel="Home" + upLink="install-more-software" upLabel="Up"> + \ No newline at end of file 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 -N -r1.43 -r1.44 --- openacs-4/packages/acs-core-docs/www/install-daemontools.html 8 Nov 2017 09:42:10 -0000 1.43 +++ openacs-4/packages/acs-core-docs/www/install-daemontools.html 25 Apr 2018 08:38:27 -0000 1.44 @@ -9,7 +9,7 @@ services.

    1. Install Daemontools

      - +

      download daemontools and install it.

      • Red Hat 8

        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 -N -r1.4 -r1.5 --- openacs-4/packages/acs-core-docs/www/install-full-text-search-tsearch2.adp 24 Mar 2018 00:14:57 -0000 1.4 +++ openacs-4/packages/acs-core-docs/www/install-full-text-search-tsearch2.adp 25 Apr 2018 08:38:27 -0000 1.5 @@ -3,12 +3,11 @@ Install Full Text Search using Tsearch2 -
        + leftLink="install-nspam" leftLabel="Prev" + title="Appendix B. Install +additional supporting software" + rightLink="install-nsopenssl" rightLabel="Next"> +

        Install Full Text Search using Tsearch2

        <authorblurb>

        By Dave Bauer, @@ -18,7 +17,7 @@ Kopciuch

        </authorblurb>

        -Install Tsearch2 module

        In earlier versions of PostgreSQL (7.4), tsearch2 was a contrib +Install Tsearch2 module

        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 @@ -32,8 +31,8 @@

    - + leftLink="install-nspam" leftLabel="Prev" leftTitle="Install nspam" + rightLink="install-nsopenssl" rightLabel="Next" rightTitle="Install nsopenssl" + homeLink="index" homeLabel="Home" + upLink="install-more-software" upLabel="Up"> + \ No newline at end of file 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 -N -r1.14 -r1.15 --- openacs-4/packages/acs-core-docs/www/install-full-text-search-tsearch2.html 24 Mar 2018 00:14:57 -0000 1.14 +++ openacs-4/packages/acs-core-docs/www/install-full-text-search-tsearch2.html 25 Apr 2018 08:38:27 -0000 1.15 @@ -10,7 +10,7 @@ </authorblurb>

    Install Tsearch2 module

    - +

    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 Index: openacs-4/packages/acs-core-docs/www/install-ldap-radius.adp =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/install-ldap-radius.adp,v diff -u -N -r1.4 -r1.5 --- openacs-4/packages/acs-core-docs/www/install-ldap-radius.adp 28 Mar 2018 17:00:40 -0000 1.4 +++ openacs-4/packages/acs-core-docs/www/install-ldap-radius.adp 25 Apr 2018 08:38:27 -0000 1.5 @@ -3,12 +3,11 @@ Install LDAP for use as external authentication -

    + leftLink="install-pam-radius" leftLabel="Prev" + title="Appendix B. Install +additional supporting software" + rightLink="aolserver" rightLabel="Next"> +

    Install LDAP for use as external authentication

    <authorblurb>

    By Malte @@ -19,9 +18,8 @@ these section

    1. -Install openldap.  Download and -install ns_ldap

      -[root aolserver]# cd /usr/local/src/
      +Install openldap.  Download and install
      +ns_ldap

      [root aolserver]# cd /usr/local/src/
                 [root src]# wget ftp://ftp.openldap.org/pub/OpenLDAP/openldap-release/openldap-2.2.17.tgz
                 [root src]# tar xvfz openldap-2.2.17.tgz
                 [root src]# cd openldap-2.2.17
      @@ -38,9 +36,8 @@
       
    2. -Install ns_ldap.  Download and -install ns_ldap

      -[root aolserver]# cd /usr/local/src/aolserver/
      +Install ns_ldap.  Download and install
      +ns_ldap

      [root aolserver]# cd /usr/local/src/aolserver/
                 [root aolserver]# wget http://www.sussdorff.de/ressources/nsldap.tgz
                 [root aolserver]# tar xfz nsldap.tgz
                 [root aolserver]# cd nsldap
      @@ -55,13 +52,12 @@
       
    3. -Configure ns_ldap for traditional -use.  Traditionally OpenACS has supported -ns_ldap for authentication by storing the OpenACS password in an -encrypted field within the LDAP server called -"userPassword". Furthermore a CN field was used for -searching for the username, usually userID or something similar. -This field is identical to the usernamestored in OpenACS. Therefore the +Configure ns_ldap for traditional use.  +Traditionally OpenACS has supported ns_ldap for authentication by +storing the OpenACS password in an encrypted field within the LDAP +server called "userPassword". Furthermore a CN field was +used for searching for the username, usually userID or something +similar. This field is identical to the usernamestored in OpenACS. Therefore the login will only work if you change login method to make use of the username instead.

      • Change config.tcl. Remove the # in front of @@ -70,27 +66,25 @@ module.

    4. -Configure ns_ldap for use with LDAP -bind.  LDAP authentication usually is done by -trying to bind (aka. login) a user with the LDAP server. The -password of the user is not stored in any field of the LDAP server, -but kept internally. The latest version of ns_ldap supports this -method with the ns_ldap bind -command. All you have to do to enable this is to configure -auth_ldap to make use of the BIND authentication instead. -Alternatively you can write a small script on how to calculate the -username out of the given input (e.g. if the OpenACS username is -malte.fb03.tu, the LDAP request can be translated into -"ou=malte,ou=fb03,o=tu" (this example is encoded in -auth_ldap and you just have to comment it out to make use of -it).

      +Configure ns_ldap for use with LDAP bind.  +LDAP authentication usually is done by trying to bind (aka. login) +a user with the LDAP server. The password of the user is not stored +in any field of the LDAP server, but kept internally. The latest +version of ns_ldap supports this method with the ns_ldap bind command. All you have to do +to enable this is to configure auth_ldap to make use of the BIND +authentication instead. Alternatively you can write a small script +on how to calculate the username out of the given input (e.g. if +the OpenACS username is malte.fb03.tu, the LDAP request can be +translated into "ou=malte,ou=fb03,o=tu" (this example is +encoded in auth_ldap and you just have to comment it out to make +use of it).

    - + rightLink="aolserver" rightLabel="Next" rightTitle="Install AOLserver 3.3oacs1" + homeLink="index" homeLabel="Home" + upLink="install-more-software" upLabel="Up"> + \ No newline at end of file Index: openacs-4/packages/acs-core-docs/www/install-more-software.adp =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/install-more-software.adp,v diff -u -N -r1.3 -r1.4 --- openacs-4/packages/acs-core-docs/www/install-more-software.adp 8 Nov 2017 09:42:11 -0000 1.3 +++ openacs-4/packages/acs-core-docs/www/install-more-software.adp 25 Apr 2018 08:38:27 -0000 1.4 @@ -1,15 +1,15 @@ -{/doc/acs-core-docs {ACS Core Documentation}} {Appendix B. Install additional -supporting software} -Appendix B. Install additional -supporting software +{/doc/acs-core-docs {ACS Core Documentation}} {Appendix B. Install additional supporting +software} +Appendix B. Install additional supporting +software -
    + rightLink="openacs-unpack" rightLabel="Next"> +

    Appendix B. Install additional supporting software

    @@ -42,9 +42,9 @@ commands they refer to.

    - \ No newline at end of file + leftLink="install-redhat" leftLabel="Prev" leftTitle="Appendix A. Install Red Hat +8/9" + rightLink="openacs-unpack" rightLabel="Next" rightTitle="Unpack the OpenACS tarball" + homeLink="index" homeLabel="Home" + upLink="acs-admin" upLabel="Up"> + \ No newline at end of file Index: openacs-4/packages/acs-core-docs/www/install-next-add-server.adp =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/install-next-add-server.adp,v diff -u -N -r1.3 -r1.4 --- openacs-4/packages/acs-core-docs/www/install-next-add-server.adp 8 Nov 2017 09:42:11 -0000 1.3 +++ openacs-4/packages/acs-core-docs/www/install-next-add-server.adp 25 Apr 2018 08:38:27 -0000 1.4 @@ -3,37 +3,34 @@ Running multiple services on one machine -
    + leftLink="install-openacs-inittab" leftLabel="Prev" + title="Chapter 6. Production +Environments" + rightLink="high-avail" rightLabel="Next"> +

    Running multiple services on one machine

    -Services on different ports.  To -run a different service on another port but the same ip, simply -repeat Install OpenACS 5.9.0 replacing +Services on different ports.  To run a +different service on another port but the same ip, simply repeat +Install OpenACS 5.9.0 replacing $OPENACS_SERVICE_NAME, -and change the

    -set httpport              8000
    -set httpsport             8443 
    -

    to different values.

    -Services on different host names.  -For example, suppose you want to support http://service0.com and http://bar.com on the same machine. The +and change the

    set httpport              8000
    +set httpsport             8443 

    to different values.

    +Services on different host names.  For +example, suppose you want to support http://service0.com and http://bar.com on the same machine. The easiest way is to assign each one a different ip address. Then you can install two services as above, but with different values for

     set hostname               [ns_info hostname]
    -set address                127.0.0.1 
    -

    If you want to install two services with different host names +set address 127.0.0.1

    If you want to install two services with different host names sharing the same ip, you'll need nsvhr to redirect requests based on the contents of the tcp headers. See AOLserver Virtual Hosting with TCP by markd.

    - \ No newline at end of file + homeLink="index" homeLabel="Home" + upLink="maintenance-web" upLabel="Up"> + \ No newline at end of file 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 -N -r1.3 -r1.4 --- openacs-4/packages/acs-core-docs/www/install-next-backups.adp 8 Nov 2017 09:42:11 -0000 1.3 +++ openacs-4/packages/acs-core-docs/www/install-next-backups.adp 25 Apr 2018 08:38:27 -0000 1.4 @@ -3,11 +3,11 @@ Backup Strategy -
    + leftLink="backup-recovery" leftLabel="Prev" + title="Chapter 8. Backup and +Recovery" + rightLink="snapshot-backup" rightLabel="Next"> +

    Backup Strategy

    The purpose of backup is to enable recovery. Backup and recovery @@ -31,9 +31,9 @@

    - \ No newline at end of file + 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"> + \ No newline at end of file Index: openacs-4/packages/acs-core-docs/www/install-next-nightly-vacuum.adp =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/install-next-nightly-vacuum.adp,v diff -u -N -r1.3 -r1.4 --- openacs-4/packages/acs-core-docs/www/install-next-nightly-vacuum.adp 8 Nov 2017 09:42:11 -0000 1.3 +++ openacs-4/packages/acs-core-docs/www/install-next-nightly-vacuum.adp 25 Apr 2018 08:38:27 -0000 1.4 @@ -3,11 +3,11 @@ Vacuum Postgres nightly -
    + leftLink="install-openacs-delete-tablespace" leftLabel="Prev" + title="Chapter 7. Database +Management" + rightLink="backup-recovery" rightLabel="Next"> +

    Vacuum Postgres nightly

    The "vacuum" command must be run periodically to reclaim space in versions of PostgreSQL before 7.4. The @@ -22,18 +22,17 @@ before!) you've made a backup! The "vacuum" command is very reliable, but conservatism is the key to good system management. So, if you're using the export procedure described -above, you don't need to do this extra step.

    Edit your crontab:

    -[joeuser ~]$ crontab -e
    +above, you don't need to do this extra step.

    Edit your crontab:

    [joeuser ~]$ crontab -e
     

    We'll set vacuum up to run nightly at 1 AM. Add the following line:

     0 1 * * * /usr/local/pgsql/bin/vacuumdb $OPENACS_SERVICE_NAME
     

    ($‌Id: database-maintenance.xml,v 1.9 2017/08/07 23:47:54 gustafn Exp $)

    - \ No newline at end of file + leftLink="install-openacs-delete-tablespace" leftLabel="Prev" leftTitle="Deleting a tablespace" + rightLink="backup-recovery" rightLabel="Next" rightTitle="Chapter 8. Backup and +Recovery" + homeLink="index" homeLabel="Home" + upLink="database-management" upLabel="Up"> + \ No newline at end of file Index: openacs-4/packages/acs-core-docs/www/install-nsopenssl.adp =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/install-nsopenssl.adp,v diff -u -N -r1.3 -r1.4 --- openacs-4/packages/acs-core-docs/www/install-nsopenssl.adp 8 Nov 2017 09:42:11 -0000 1.3 +++ openacs-4/packages/acs-core-docs/www/install-nsopenssl.adp 25 Apr 2018 08:38:27 -0000 1.4 @@ -3,12 +3,11 @@ Install nsopenssl -
    + leftLink="install-full-text-search-tsearch2" leftLabel="Prev" + title="Appendix B. Install +additional supporting software" + rightLink="install-tclwebtest" rightLabel="Next"> +

    Install nsopenssl

    <authorblurb>

    By Joel Aufrecht and Malte Sussdorff @@ -22,8 +21,7 @@

    Install on AOLserver3

    You will need the unpacked Aolserver tarball in /usr/local/src/aolserver and the nsopenssl -tarball in /tmp.

    Red Hat 9 note: see this thread for details on compiling nsopenssl.)

    -[root bin]# cd /usr/local/src/aolserver
    +tarball in /tmp.

    Red Hat 9 note: see this thread for details on compiling nsopenssl.)

    [root bin]# cd /usr/local/src/aolserver
     [root aolserver]# wget --passive http://www.scottg.net/download/nsopenssl-2.1.tar.gz
     [root aolserver]# tar xzf nsopenssl-2.1.tar.gz 
     [root aolserver]# cd nsopenssl-2.1
    @@ -58,8 +56,7 @@
     if one just uses AOLSERVER, the default value would be used and
     could intefere with another existing installation.

    FreeBSD note: build nsopenssl with gmake install OPENSSL=/usr/local/openssl AOLSERVER=/usr/local/aolserver4r10 -

    -[root bin]# cd /usr/local/src/aolserver
    +

    [root bin]# cd /usr/local/src/aolserver
     [root aolserver]# cvs -d:pserver:anonymous\@cvs.sourceforge.net:/cvsroot/aolserver login
     [root aolserver]# cvs -d:pserver:anonymous\@cvs.sourceforge.net:/cvsroot/aolserver co nsopenssl
     [root aolserver]# cd nsopenssl
    @@ -100,9 +97,9 @@
     
    - \ No newline at end of file + rightLink="install-tclwebtest" rightLabel="Next" rightTitle="Install tclwebtest." + homeLink="index" homeLabel="Home" + upLink="install-more-software" upLabel="Up"> + \ No newline at end of file Index: openacs-4/packages/acs-core-docs/www/install-nspam.adp =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/install-nspam.adp,v diff -u -N -r1.2 -r1.3 --- openacs-4/packages/acs-core-docs/www/install-nspam.adp 7 Aug 2017 23:47:50 -0000 1.2 +++ openacs-4/packages/acs-core-docs/www/install-nspam.adp 25 Apr 2018 08:38:27 -0000 1.3 @@ -3,19 +3,18 @@ Install nspam -
    + leftLink="analog-install" leftLabel="Prev" + title="Appendix B. Install +additional supporting software" + rightLink="install-full-text-search-tsearch2" rightLabel="Next"> + - \ No newline at end of file + homeLink="index" homeLabel="Home" + upLink="install-more-software" upLabel="Up"> + \ No newline at end of file Index: openacs-4/packages/acs-core-docs/www/install-openacs-delete-tablespace.adp =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/install-openacs-delete-tablespace.adp,v diff -u -N -r1.3 -r1.4 --- openacs-4/packages/acs-core-docs/www/install-openacs-delete-tablespace.adp 8 Nov 2017 09:42:11 -0000 1.3 +++ openacs-4/packages/acs-core-docs/www/install-openacs-delete-tablespace.adp 25 Apr 2018 08:38:27 -0000 1.4 @@ -3,11 +3,11 @@ Deleting a tablespace -
    + leftLink="remote-postgres" leftLabel="Prev" + title="Chapter 7. Database +Management" + rightLink="install-next-nightly-vacuum" rightLabel="Next"> +

    Deleting a tablespace

    Skip down for instructions on Deleting a PostgreSQL tablespace.

    @@ -16,20 +16,16 @@ tablespace

    Should it become necessary to rebuild a tablespace from scratch, you can use the drop user command in SVRMGRL with the cascade option. This command will drop the -user and every database object the user owns.

    -SVRMGR> drop user $OPENACS_SERVICE_NAME cascade;
    +user and every database object the user owns.

    SVRMGR> drop user $OPENACS_SERVICE_NAME cascade;
     

    If this does not work because svrmgrl "cannot drop a user that is currently connected", make sure to kill the AOLserver -using this user. If it still does not work, do:

    -SVRMGR> select username, sid, serial# from v$session where lower(username)='$OPENACS_SERVICE_NAME';
    -

    and then

    -SVRMGR> alter system kill session 'sid, serial#';
    +using this user. If it still does not work, do:

    SVRMGR> select username, sid, serial# from v$session where lower(username)='$OPENACS_SERVICE_NAME';
    +

    and then

    SVRMGR> alter system kill session 'sid, serial#';
     

    where sid and serial# are replaced with the corresponding values for the open session.

    Use with caution!

    If you feel the need to delete everything related to the service, you -can also issue the following:

    -SVRMGR> drop tablespace $OPENACS_SERVICE_NAME including contents cascade constraints;
    +can also issue the following:

    SVRMGR> drop tablespace $OPENACS_SERVICE_NAME including contents cascade constraints;
     

    @@ -44,14 +40,13 @@ .

    Then, to drop the db, just do:

     [$OPENACS_SERVICE_NAME ~]$ dropdb $OPENACS_SERVICE_NAME
     
    -DROP DATABASE
    -
    +DROP DATABASE

    - \ No newline at end of file + rightLink="install-next-nightly-vacuum" rightLabel="Next" rightTitle="Vacuum Postgres nightly" + homeLink="index" homeLabel="Home" + upLink="database-management" upLabel="Up"> + \ No newline at end of file Index: openacs-4/packages/acs-core-docs/www/install-openacs-inittab.adp =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/install-openacs-inittab.adp,v diff -u -N -r1.2 -r1.3 --- openacs-4/packages/acs-core-docs/www/install-openacs-inittab.adp 7 Aug 2017 23:47:50 -0000 1.2 +++ openacs-4/packages/acs-core-docs/www/install-openacs-inittab.adp 25 Apr 2018 08:38:27 -0000 1.3 @@ -3,11 +3,11 @@ AOLserver keepalive with inittab -
    + leftLink="install-openacs-keepalive" leftLabel="Prev" + title="Chapter 6. Production +Environments" + rightLink="install-next-add-server" rightLabel="Next"> +

    AOLserver keepalive with inittab

    This is an alternative method for keeping the AOLserver process running. The recommended method is to run AOLserver @@ -36,8 +36,7 @@ [root ~]# chown root.web /usr/local/bin/restart-aolserver [root ~]# chmod 4750 /usr/local/bin/restart-aolserver [root ~]# ln -s /usr/bin/perl /usr/local/bin/perl -[root ~]# exit - +[root ~]# exit

  • Test the restart-aolserver script. We'll first kill all running servers to clean the @@ -50,8 +49,7 @@ [joeuser ~]$ restart-aolserver birdnotes Killing 23727 [joeuser ~]$ killall nsd -nsd: no process killed -

    The number 23727 indicates the process id(s) (PIDs) of the +nsd: no process killed

    The number 23727 indicates the process id(s) (PIDs) of the processes being killed. It is important that no processes are killed by the second call to killall. If there are processes being killed, it means that the script is not @@ -62,14 +60,12 @@ editing.

     [joeuser ~]$ su -
     Password: ************
    -[root ~]# emacs -nw /etc/inittab
    -
    +[root ~]# emacs -nw /etc/inittab
  • Copy this line into the bottom of the file as a template, making sure that the first field nss1 is unique.

    -nss1:345:respawn:/usr/local/aolserver/bin/nsd-postgres -i -u nobody -g web -t /home/joeuser/var/lib/aolserver/birdnotes/nsd.tcl
    -
    +nss1:345:respawn:/usr/local/aolserver/bin/nsd-postgres -i -u nobody -g web -t /home/joeuser/var/lib/aolserver/birdnotes/nsd.tcl
  • Important: Make sure there is a newline at the end of the file. If there is not a @@ -79,22 +75,20 @@ /etc/inittab.

     [root ~]# killall nsd    
     nsd: no process killed
    -[root ~]# /sbin/init q
    -
    +[root ~]# /sbin/init q
  • See if it worked by running the restart-aolserver script again.

     [root ~]# restart-aolserver birdnotes
    -Killing 23750
    -
    +Killing 23750
  • If processes were killed, congratulations, your server is now automated for startup and shutdown.

    - \ No newline at end of file + homeLink="index" homeLabel="Home" + upLink="maintenance-web" 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 -N -r1.3 -r1.4 --- openacs-4/packages/acs-core-docs/www/install-openacs-keepalive.adp 8 Nov 2017 09:42:11 -0000 1.3 +++ openacs-4/packages/acs-core-docs/www/install-openacs-keepalive.adp 25 Apr 2018 08:38:27 -0000 1.4 @@ -3,11 +3,11 @@ Starting and Stopping an OpenACS instance. -
    + leftLink="maintenance-web" leftLabel="Prev" + title="Chapter 6. Production +Environments" + rightLink="install-openacs-inittab" rightLabel="Next"> +

    Starting and Stopping an OpenACS instance.

    The simplest way to start and stop and OpenACS site is to run @@ -48,19 +48,16 @@ into the /service directory. Daemontools' svscan process checks this directory every five seconds, and will quickly execute -run.

    -[$OPENACS_SERVICE_NAME etc]$ killall nsd
    +run.

    [$OPENACS_SERVICE_NAME etc]$ killall nsd
     nsd: no process killed
     [$OPENACS_SERVICE_NAME etc]$ emacs /var/lib/aolserver/$OPENACS_SERVICE_NAME/etc/daemontools/run
     [$OPENACS_SERVICE_NAME etc]$ exit
     
     [root root]# ln -s /var/lib/aolserver/$OPENACS_SERVICE_NAME/etc/daemontools/ /service/$OPENACS_SERVICE_NAME
     
    -

    Verify that AOLserver is running.

    -[root root]# ps -auxw | grep nsd$OPENACS_SERVICE_NAME   5562 14.4  6.2 22436 15952 ?       S    11:55   0:04 /usr/local/aolserver/bin/nsd -it /var/lib/aolserver/$OPENACS_SERVICE_NAME/etc/config.tcl -u serve
    +

    Verify that AOLserver is running.

    [root root]# ps -auxw | grep nsd$OPENACS_SERVICE_NAME   5562 14.4  6.2 22436 15952 ?       S    11:55   0:04 /usr/local/aolserver/bin/nsd -it /var/lib/aolserver/$OPENACS_SERVICE_NAME/etc/config.tcl -u serve
     root      5582  0.0  0.2  3276  628 pts/0    S    11:55   0:00 grep nsd
    -[root root]#
    -
    +[root root]#
  • The user $OPENACS_SERVICE_NAME can now control the service $OPENACS_SERVICE_NAME with these @@ -90,29 +87,25 @@ AOLserver services via daemontools. You can then restart a service via restart-aolserver $OPENACS_SERVICE_NAME -

    -[root root]# cp /var/lib/aolserver/$OPENACS_SERVICE_NAME/packages/acs-core-docs/www/files/restart-aolserver-daemontools.txt /usr/local/bin/restart-aolserver
    +

    [root root]# cp /var/lib/aolserver/$OPENACS_SERVICE_NAME/packages/acs-core-docs/www/files/restart-aolserver-daemontools.txt /usr/local/bin/restart-aolserver
     [root root]# chmod 755 /usr/local/bin/restart-aolserver
    -[root root]#
    -
    +[root root]#
  • At this point, these commands will work only for the root user. Grant permission for the web group to use svc commands on the $OPENACS_SERVICE_NAME -server.

    -[root root]# /usr/local/bin/svgroup web /service/$OPENACS_SERVICE_NAME
    +server.

    [root root]# /usr/local/bin/svgroup web /service/$OPENACS_SERVICE_NAME
     
    -[root root]#
    -
    +[root root]#
  • Verify that the controls work. You may want to tail -f /var/lib/aolserver/$OPENACS_SERVICE_NAME/log/$OPENACS_SERVICE_NAME-error.log in another window, so you can see what happens when you type these commands.

    More information can be found on the AOLserver Daemontools page.

  • -

    Table 6.1. How it +

    Table 6.1. How it Works

    @@ -133,9 +126,9 @@
    - \ No newline at end of file + leftLink="maintenance-web" leftLabel="Prev" leftTitle="Chapter 6. Production +Environments" + rightLink="install-openacs-inittab" rightLabel="Next" rightTitle="AOLserver keepalive with inittab" + homeLink="index" homeLabel="Home" + upLink="maintenance-web" upLabel="Up"> + \ No newline at end of file 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 -N -r1.26 -r1.27 --- openacs-4/packages/acs-core-docs/www/install-openacs-keepalive.html 8 Nov 2017 09:42:11 -0000 1.26 +++ openacs-4/packages/acs-core-docs/www/install-openacs-keepalive.html 25 Apr 2018 08:38:27 -0000 1.27 @@ -100,7 +100,7 @@

    -

    Table 6.1. How it Works

    +

    Table 6.1. How it Works

    ProgramInvoked by this program ...... using this fileWhere to find errorsLog goes toUse these commands to control it
    svscanboot init/etc/inittabps -auxw | grep readproctitlen/a 
    aolserversupervise (a child of svscanboot)/service/$OPENACS_SERVICE_NAME/run/var/lib/aolserver/$OPENACS_SERVICE_NAME/log/error.log/var/lib/aolserver/$OPENACS_SERVICE_NAME/log/$OPENACS_SERVICE_NAME.logsvc -k /service/$OPENACS_SERVICE_NAME
    postgresqlRedhat init scripts during boot/etc/init.d/postgresql/usr/local/pgsql/data/server.log service postgresql start (Red Hat), /etc/init.d/postgresql start (Debian)
    Index: openacs-4/packages/acs-core-docs/www/install-origins.adp =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/install-origins.adp,v diff -u -N -r1.2 -r1.3 --- openacs-4/packages/acs-core-docs/www/install-origins.adp 7 Aug 2017 23:47:50 -0000 1.2 +++ openacs-4/packages/acs-core-docs/www/install-origins.adp 25 Apr 2018 08:38:27 -0000 1.3 @@ -3,11 +3,10 @@ Where did this document come from? -
    + leftLink="credits" leftLabel="Prev" + title="Appendix C. Credits" + rightLink="os-install" rightLabel="Next"> +

    Where did this document come from?

    This document was created by Vinod Kurup, but it's really just plagiarism from a number of documents that @@ -16,13 +15,12 @@ away.

    Versions 4.6.2 to present were edited by Joel Aufrecht.

    These are a few of my sources:

    Please also see the Credits section -for more acknowledgements.

    +

    Please also see the Credits section for more +acknowledgements.

    - \ No newline at end of file + leftLink="credits" leftLabel="Prev" leftTitle="Appendix C. Credits" + rightLink="os-install" rightLabel="Next" rightTitle="Linux Install Guides" + homeLink="index" homeLabel="Home" + upLink="credits" upLabel="Up"> + \ No newline at end of file Index: openacs-4/packages/acs-core-docs/www/install-overview.adp =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/install-overview.adp,v diff -u -N -r1.3 -r1.4 --- openacs-4/packages/acs-core-docs/www/install-overview.adp 8 Nov 2017 09:42:11 -0000 1.3 +++ openacs-4/packages/acs-core-docs/www/install-overview.adp 25 Apr 2018 08:38:27 -0000 1.4 @@ -1,15 +1,13 @@ -{/doc/acs-core-docs {ACS Core Documentation}} {Chapter 2. Installation -Overview} -Chapter 2. Installation -Overview +{/doc/acs-core-docs {ACS Core Documentation}} {Chapter 2. Installation Overview} +Chapter 2. Installation Overview -
    + rightLink="install-steps" rightLabel="Next"> +

    Chapter 2. Installation Overview

    @@ -21,9 +19,9 @@

    </authorblurb>
    - \ No newline at end of file + leftLink="acs-admin" leftLabel="Prev" leftTitle="Part II. Administrator's +Guide" + rightLink="install-steps" rightLabel="Next" rightTitle="Basic Steps" + homeLink="index" homeLabel="Home" + upLink="acs-admin" upLabel="Up"> + \ No newline at end of file Index: openacs-4/packages/acs-core-docs/www/install-pam-radius.adp =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/install-pam-radius.adp,v diff -u -N -r1.3 -r1.4 --- openacs-4/packages/acs-core-docs/www/install-pam-radius.adp 8 Nov 2017 09:42:11 -0000 1.3 +++ openacs-4/packages/acs-core-docs/www/install-pam-radius.adp 25 Apr 2018 08:38:27 -0000 1.4 @@ -5,12 +5,11 @@ authentication -
    + leftLink="install-squirrelmail" leftLabel="Prev" + title="Appendix B. Install +additional supporting software" + rightLink="install-ldap-radius" rightLabel="Next"> +

    Install PAM Radius for use as external authentication

    <authorblurb>

    By Malte @@ -24,9 +23,8 @@ end of the file.

    1. -Install ns_pam.  Download and -install ns_pam

      -[root aolserver]# cd /usr/local/src/aolserver/
      +Install ns_pam.  Download and install
      +ns_pam

      [root aolserver]# cd /usr/local/src/aolserver/
                 [root aolserver]# wget http://braindamage.alal.com/software/ns_pam-0.1.tar.gz
                 [root aolserver]# tar xvfz ns_pam-0.1.tar.gz
                 [root aolserver]# cd ns_pam-0.1
      @@ -41,8 +39,8 @@
       
    2. -Configure ns_pam.  Configure -AOLserver for ns_pam

      To enable ns_pam in AOLServer you will first have to edit your +Configure ns_pam.  Configure AOLserver for +ns_pam

      To enable ns_pam in AOLServer you will first have to edit your config.tcl file and enable the loading of the ns_pam module and configure the aolservers pam configuration file.

      • Change config.tcl. Remove @@ -61,10 +59,9 @@

    3. -Configure PAM Radius.  Configure -and install PAM Radius

      You have to make sure that pam_radius v.1.3.16 or higher is -installed, otherwise you will have to install it.

      -[root ns_pam]# cd /usr/local/src/
      +Configure PAM Radius.  Configure and
      +install PAM Radius

      You have to make sure that pam_radius v.1.3.16 or higher is +installed, otherwise you will have to install it.

      [root ns_pam]# cd /usr/local/src/
                 [root src]# wget ftp://ftp.freeradius.org/pub/radius/pam_radius-1.3.16.tar
                 [root src]# tar xvf pam_radius-1.3.16
                 [root src]# cd pam_radius
      @@ -81,18 +78,17 @@
       

      Next you have to add the configuration lines to your Radius configuration file (/etc/rddb/server). For AOLserver to be able to access this information you have to change the access rights to -this file as well.

      -[root pam_radius]# echo "radius.yourdomain.com:1645 your_radius_password >>/etc/rddb/server
      +this file as well.

      [root pam_radius]# echo "radius.yourdomain.com:1645 your_radius_password >>/etc/rddb/server
                 [root src]# chown service0:web /etc/rddb/server
       
    - \ No newline at end of file + homeLink="index" homeLabel="Home" + upLink="install-more-software" upLabel="Up"> + \ No newline at end of file Index: openacs-4/packages/acs-core-docs/www/install-php.adp =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/install-php.adp,v diff -u -N -r1.3 -r1.4 --- openacs-4/packages/acs-core-docs/www/install-php.adp 8 Nov 2017 09:42:11 -0000 1.3 +++ openacs-4/packages/acs-core-docs/www/install-php.adp 25 Apr 2018 08:38:27 -0000 1.4 @@ -3,20 +3,18 @@ Install PHP for use in AOLserver -
    + leftLink="install-tclwebtest" leftLabel="Prev" + title="Appendix B. Install +additional supporting software" + rightLink="install-squirrelmail" rightLabel="Next"> +

    Install PHP for use in AOLserver

    <authorblurb>

    By Malte Sussdorff

    </authorblurb>

    To be able to use PHP software with AOLserver (and OpenACS), you have to install PHP with AOLserver support. Get the latest version from www.php.net. For convenience we get version 4.3.4 from a -mirror

    -[root root]# cd /usr/local/src
    +mirror

    [root root]# cd /usr/local/src
     [root src]# wget http://de3.php.net/distributions/php-4.3.4.tar.gz
     [root src]# tar xfz php-4.3.4.tar.gz
     [root src]# cd php-4.3.4
    @@ -30,9 +28,9 @@
     directive.

    - \ No newline at end of file + homeLink="index" homeLabel="Home" + upLink="install-more-software" upLabel="Up"> + \ No newline at end of file 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 -N -r1.4 -r1.5 --- openacs-4/packages/acs-core-docs/www/install-qmail.adp 5 Jan 2018 22:56:23 -0000 1.4 +++ openacs-4/packages/acs-core-docs/www/install-qmail.adp 25 Apr 2018 08:38:27 -0000 1.5 @@ -3,25 +3,23 @@ Install qmail (OPTIONAL) -
    + leftLink="install-daemontools" leftLabel="Prev" + title="Appendix B. Install +additional supporting software" + rightLink="analog-install" rightLabel="Next"> +

    Install qmail (OPTIONAL)

    Qmail is a secure, reliable, efficient, simple Mail Transfer Agent. It handles incoming and outgoing mail. Install qmail if you want your OpenACS server to send and receive mail, and you don't want to use an alternate MTA.

    1. -Install qmail.  QMail is available -as standard Debian/Ubuntu package, rpms for Fedora/Redhat/CenTOS -are available from QMail wiki +Install qmail.  QMail is available as +standard Debian/Ubuntu package, rpms for Fedora/Redhat/CenTOS are +available from QMail wiki page

    2. -

      Replace sendmail with qmail's wrapper.

      -[root qmail-1.03]# rm -f /usr/bin/sendmail /usr/sbin/sendmail
      +

      Replace sendmail with qmail's wrapper.

      [root qmail-1.03]# rm -f /usr/bin/sendmail /usr/sbin/sendmail
       [root qmail-1.03]# ln -s /var/qmail/bin/sendmail /usr/sbin/sendmail
       [root qmail-1.03]#
       rm -f /usr/bin/sendmail /usr/sbin/sendmail
      @@ -32,8 +30,7 @@
       should accept mail for. This command will automatically set up
       qmail correctly if you have correctly set a valid host nome. If
       not, you'll want to read /var/qmail/doc/INSTALL.ctl to find out how
      -to configure qmail.

      -[root qmail-1.03]# ./config-fast yourserver.test
      +to configure qmail.

      [root qmail-1.03]# ./config-fast yourserver.test
       
       Your fully qualified host name is yourserver.test.
       Putting yourserver.test into control/me...
      @@ -49,8 +46,7 @@
       

      All incoming mail that isn't for a specific user is handled by the alias user. This includes all root mail. These commands prepare the alias user to -receive mail.

      -[root qmail-1.03]# cd ~alias; touch .qmail-postmaster .qmail-mailer-daemon .qmail-root
      +receive mail.

      [root qmail-1.03]# cd ~alias; touch .qmail-postmaster .qmail-mailer-daemon .qmail-root
       [root alias]# chmod 644 ~alias/.qmail*
       [root alias]# /var/qmail/bin/maildirmake ~alias/Maildir/
       [root alias]# chown -R alias.nofiles /var/qmail/alias/Maildir
      @@ -59,10 +55,9 @@
       chmod 644 ~alias/.qmail* 
       /var/qmail/bin/maildirmake ~alias/Maildir/ 
       chown -R alias.nofiles /var/qmail/alias/Maildir
      -

      Configure qmail to use the Maildir delivery format (instead of +

      Configure qmail to use the Maildir delivery format (instead of mbox), and install a version of the qmail startup script modified -to use Maildir.

      -[root alias]# echo "./Maildir" > /var/qmail/bin/.qmail
      +to use Maildir.

      [root alias]# echo "./Maildir" > /var/qmail/bin/.qmail
       [root alias]# cp /tmp/openacs-5.9.0/packages/acs-core-docs/www/files/qmail.rc.txt /var/qmail/rc
       [root alias]# chmod 755 /var/qmail/rc
       [root alias]# 
      @@ -71,8 +66,7 @@
       chmod 755 /var/qmail/rc 
       
       

      Set up the skeleton directory so that new users will be -configured for qmail.

      -[root root]# /var/qmail/bin/maildirmake /etc/skel/Maildir
      +configured for qmail.

      [root root]# /var/qmail/bin/maildirmake /etc/skel/Maildir
       [root root]# echo "./Maildir/" > /etc/skel/.qmail
       [root root]# 
       /var/qmail/bin/maildirmake /etc/skel/Maildir
      @@ -82,8 +76,7 @@
       control script, copy the supervise control files, and set
       permissions. The last line links the control directories to
       /service, which will cause supervise to detect them and execute the
      -run files, causing qmail to start.

      -[root root]# mkdir -p /var/qmail/supervise/qmail-send/log
      +run files, causing qmail to start.

      [root root]# mkdir -p /var/qmail/supervise/qmail-send/log
       [root root]# mkdir -p /var/qmail/supervise/qmail-smtpd/log
       [root root]# mkdir /var/log/qmail
       [root root]# chown qmaill /var/log/qmail
      @@ -116,26 +109,24 @@
       chmod 755 /var/qmail/supervise/qmail-smtpd/log/run
       ln -s /var/qmail/supervise/qmail-send /var/qmail/supervise/qmail-smtpd /service
       
      -

      Wait ten seconds or so, and then verify that that the four qmail +

      Wait ten seconds or so, and then verify that the four qmail processes are running. If uptimes don't rise above 1 second, this may indicate broken scripts that are continuously restarting. -In that case, start debugging by checking permissions.

      -[root root]# qmailctl stat
      +In that case, start debugging by checking permissions.

      [root root]# qmailctl stat
       /service/qmail-send: up (pid 32700) 430 seconds
       /service/qmail-send/log: up (pid 32701) 430 seconds
       /service/qmail-smtpd: up (pid 32704) 430 seconds
       /service/qmail-smtpd/log: up (pid 32705) 430 seconds
       messages in queue: 0
       messages in queue but not yet preprocessed: 0
      -[root root]#
      -

      Further verify by sending and receiving email. Incoming mail for +[root root]#

      Further verify by sending and receiving email. Incoming mail for root is stored in /var/qmail/alias/Maildir.

    - + leftLink="install-daemontools" leftLabel="Prev" leftTitle="Install Daemontools (OPTIONAL)" + rightLink="analog-install" rightLabel="Next" rightTitle="Install Analog web file analyzer" + homeLink="index" homeLabel="Home" + upLink="install-more-software" upLabel="Up"> + \ No newline at end of file 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 -N -r1.44 -r1.45 --- openacs-4/packages/acs-core-docs/www/install-qmail.html 5 Jan 2018 22:55:47 -0000 1.44 +++ openacs-4/packages/acs-core-docs/www/install-qmail.html 25 Apr 2018 08:38:27 -0000 1.45 @@ -17,7 +17,7 @@

    Replace sendmail with qmail's wrapper.

    - +
    [root qmail-1.03]# rm -f /usr/bin/sendmail /usr/sbin/sendmail
     [root qmail-1.03]# ln -s /var/qmail/bin/sendmail /usr/sbin/sendmail
     [root qmail-1.03]#
    @@ -45,7 +45,7 @@
     chmod 644 ~alias/.qmail* 
     /var/qmail/bin/maildirmake ~alias/Maildir/ 
     chown -R alias.nofiles /var/qmail/alias/Maildir
    - +

    Configure qmail to use the Maildir delivery format (instead of mbox), and install a version of the qmail startup script modified to use Maildir.

    [root alias]# echo "./Maildir" > /var/qmail/bin/.qmail
    @@ -100,7 +100,7 @@
     chmod 755 /var/qmail/supervise/qmail-smtpd/log/run
     ln -s /var/qmail/supervise/qmail-send /var/qmail/supervise/qmail-smtpd /service
     
    -

    Wait ten seconds or so, and then verify that that the four qmail processes are running. If uptimes don't rise above 1 second, this may indicate broken scripts that are continuously restarting. In that case, start debugging by checking permissions.

    +

    Wait ten seconds or so, and then verify that the four qmail processes are running. If uptimes don't rise above 1 second, this may indicate broken scripts that are continuously restarting. In that case, start debugging by checking permissions.

    [root root]# qmailctl stat
     /service/qmail-send: up (pid 32700) 430 seconds
     /service/qmail-send/log: up (pid 32701) 430 seconds
    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 -N -r1.4 -r1.5
    --- openacs-4/packages/acs-core-docs/www/install-redhat.adp	12 Apr 2018 06:40:32 -0000	1.4
    +++ openacs-4/packages/acs-core-docs/www/install-redhat.adp	25 Apr 2018 08:38:27 -0000	1.5
    @@ -1,18 +1,15 @@
     
    -{/doc/acs-core-docs {ACS Core Documentation}} {Appendix A. Install Red Hat
    -8/9}
    -Appendix A. Install Red Hat
    -8/9
    +{/doc/acs-core-docs {ACS Core Documentation}} {Appendix A. Install Red Hat 8/9}
    +Appendix A. Install Red Hat 8/9
     
     
    -		
    + rightLink="install-more-software" rightLabel="Next"> +

    -Appendix A. Install -Red Hat 8/9

    <authorblurb>

    by Joel +Appendix A. Install Red Hat 8/9

    <authorblurb>

    by Joel Aufrecht

    </authorblurb>

    This section takes a blank PC and sets up some supporting software. You should do this section as-is if you have a machine @@ -36,7 +33,7 @@ Unplug the network cable from your computer. We don't want to connect to the network until we're sure the computer is secure. - (Wherever you see the word secure, you + (Wherever you see the word secure, you should always read it as, "secure enough for our purposes, given the amount of work we're willing to exert and the estimated risk and consequences.")

  • Insert Red Hat 8.0 or 9.0 Disk 1 into the CD-ROM and reboot the @@ -75,7 +72,7 @@ boot loader screen

  • -

    Configure Networking. Again, if you +

    Configure Networking. 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 @@ -105,7 +102,7 @@ access to the development server we'll be setting up.

  • -Select any additional languages you want +Select any additional languages you want the computer to support and then click Next

  • Choose your time zone and click @@ -120,10 +117,10 @@ 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.

    - @@ -140,7 +137,7 @@ Flat View and wait. In a minute, a list of packages will appear.

    check Editors (this installs emacs),
    click Details next to Text-based +
    check Editors (this installs emacs),
    click Details next to Text-based Internet, check lynx, and click -OK;
    check Authoring and Publishing (this installs docbook),
    uncheck Server Configuration Tools,
    uncheck Web +OK;
    check Authoring and Publishing (this installs docbook),
    uncheck Server Configuration Tools,
    uncheck Web Server,
    uncheck Windows File Server,
    check SQL Database Server (this installs PostgreSQL),
    check Development Tools (this installs gmake and other build tools),
    uncheck Administration Tools, and
    uncheck Printing Support.
    - +
    uncheck apmd (monitors power, not very useful for -servers),
    check ImageMagick (required for the photo-album packages,
    uncheckisdn4k-utils (unless you are using isdn, +servers),
    check ImageMagick (required for the photo-album packages,
    uncheckisdn4k-utils (unless you are using isdn, this installs a useless daemon),
    check mutt (a mail program that reads Maildir),
    uncheck nfs-utils (nfs is a major security risk),
    uncheck pam-devel (I don't remember why, but @@ -169,11 +166,9 @@ Exit, remove the CD, and watch the computer reboot.

  • After it finishes rebooting and shows the login prompt, log -in:

    -yourserver login: root
    +in:

    yourserver login: root
     Password:
    -[root root]#
    -
    +[root root]#
  • Install any security patches. For example, insert your CD with patches, mount it with mount /dev/cdrom, then cd @@ -185,7 +180,7 @@

    Lock down SSH

    1. - SSH is the protocol we use to connect + 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 @@ -227,8 +222,7 @@ we'll use daemontools to perform a similar function for AOLserver. (The reason for these discrepencies is that, while daemontools is better, it's a pain in the ass to deal with and -nobody's had any trouble leaving PostgreSQL the way it is.)

      -[root root]# service pcmcia stop
      +nobody's had any trouble leaving PostgreSQL the way it is.)

      [root root]# service pcmcia stop
       [root root]# service netfs stop
       [root root]# chkconfig --del pcmcia
       [root root]# chkconfig --del netfs
      @@ -241,8 +235,7 @@
       
    2. Plug in the network cable.

    3. Verify that you have connectivity by going to another computer and ssh'ing to yourserver, logging in as remadmin, -and promoting yourself to root:

      -[joeuser\@someotherserver]$  ssh remadmin\@yourserver.test
      +and promoting yourself to root:

      [joeuser\@someotherserver]$  ssh remadmin\@yourserver.test
       
       The authenticity of host 'yourserver.test (1.2.3.4)' can't be established.
       DSA key fingerprint is 10:b9:b6:10:79:46:14:c8:2d:65:ae:c1:61:4b:a5:a5.
      @@ -252,8 +245,7 @@
       Last login: Mon Mar  3 21:15:27 2003 from host-12-01.dsl-sea.seanet.com
       [remadmin remadmin]$ su -
       Password: 
      -[root root]#
      -
      +[root root]#
    4. If you didn't burn a CD of patches and use it, can still download and install the necessary patches. Here's how to do it @@ -262,8 +254,7 @@ 8.0 system kernel (2.4.18-14, which you can check with uname -a) has several security problems. Download the new kernel, install it, -and reboot.

      -[root root]# cd /var/tmp
      +and reboot.

      [root root]# cd /var/tmp
       [root tmp]# wget http://updates.redhat.com/7.1/en/os/i686/kernel-2.4.18-27.7.x.i686.rpm
       --20:39:00--  http://updates.redhat.com/7.1/en/os/i686/kernel-2.4.18-27.7.x.i686.rpm
                  => `kernel-2.4.18-27.7.x.i686.rpm'
      @@ -295,10 +286,9 @@
       
    - \ No newline at end of file + leftLink="backups-with-cvs" leftLabel="Prev" leftTitle="Using CVS for backup-recovery" + rightLink="install-more-software" rightLabel="Next" rightTitle="Appendix B. Install +additional supporting software" + homeLink="index" homeLabel="Home" + upLink="acs-admin" upLabel="Up"> + \ No newline at end of file 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 -N -r1.43 -r1.44 --- openacs-4/packages/acs-core-docs/www/install-redhat.html 8 Nov 2017 09:42:11 -0000 1.43 +++ openacs-4/packages/acs-core-docs/www/install-redhat.html 25 Apr 2018 08:38:27 -0000 1.44 @@ -45,7 +45,7 @@
    1. Unplug the network cable from your computer. We don't want to connect to the network until we're sure the computer is secure. - + (Wherever you see the word secure, you should always read it as, "secure enough for our purposes, given the amount of work we're @@ -81,7 +81,7 @@ Yes IF YOU ARE WIPING YOUR HARD DRIVE.

    2. Click Next on the boot loader screen

  • -

    Configure Networking. +

    Configure Networking. 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.

    @@ -106,7 +106,7 @@ Next. 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.

  • -
  • Select any additional languages you want the +

  • Select any additional languages you want the computer to support and then click Next

  • Choose your time zone and click Next.

  • Type in a root password, twice.

    @@ -119,7 +119,7 @@ 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. -

    check Editors (this installs emacs),
    click Details next to Text-based Internet, check lynx, and click OK;
    check Authoring and Publishing (this installs docbook),
    uncheck Server Configuration Tools,
    uncheck Web Server,
    uncheck Windows File Server,
    check SQL Database Server (this installs PostgreSQL),
    check Development Tools (this installs gmake and other build tools),
    uncheck Administration Tools, and
    uncheck Printing Support.
    +

    check Editors (this installs emacs),
    click Details next to Text-based Internet, check lynx, and click OK;
    check Authoring and Publishing (this installs docbook),
    uncheck Server Configuration Tools,
    uncheck Web Server,
    uncheck Windows File Server,
    check SQL Database Server (this installs PostgreSQL),
    check Development Tools (this installs gmake and other build tools),
    uncheck Administration Tools, and
    uncheck Printing Support.

    At the bottom, check Select Individual Packages and click Next

  • We need to fine-tune the exact list of packages. @@ -129,7 +129,7 @@ Flat View and wait. In a minute, a list of packages will appear.

    -
    uncheck apmd (monitors power, not very useful for servers),
    check ImageMagick (required for the photo-album packages,
    uncheckisdn4k-utils (unless you are using isdn, this installs a useless daemon),
    check mutt (a mail program that reads Maildir),
    uncheck nfs-utils (nfs is a major security risk),
    uncheck pam-devel (I don't remember why, but we don't want this),
    uncheck portmap,
    uncheck postfix (this is an MTA, but we're going to install qmail later),
    check postgresql-devel,
    uncheck rsh (rsh is a security hole),
    uncheck sendmail (sendmail is an insecure MTA; we're going to install qmail instead later),
    check tcl (we need tcl), and
    uncheck xinetd (xinetd handles incoming tcp connections. We'll install a different, more secure program, ucspi-tcp).
    Click Next
    +
    uncheck apmd (monitors power, not very useful for servers),
    check ImageMagick (required for the photo-album packages,
    uncheckisdn4k-utils (unless you are using isdn, this installs a useless daemon),
    check mutt (a mail program that reads Maildir),
    uncheck nfs-utils (nfs is a major security risk),
    uncheck pam-devel (I don't remember why, but we don't want this),
    uncheck portmap,
    uncheck postfix (this is an MTA, but we're going to install qmail later),
    check postgresql-devel,
    uncheck rsh (rsh is a security hole),
    uncheck sendmail (sendmail is an insecure MTA; we're going to install qmail instead later),
    check tcl (we need tcl), and
    uncheck xinetd (xinetd handles incoming tcp connections. We'll install a different, more secure program, ucspi-tcp).
    Click Next
  • Red Hat isn't completely happy with the combination of packages we've selected, and wants to satisfy some dependencies. @@ -166,7 +166,7 @@

    Lock down SSH

    1. - + 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 @@ -202,7 +202,7 @@ which services should be up and down at any given service level. We'll use this system for PostgreSQL, but we'll use daemontools to perform a similar function for AOLserver. - (The reason for this discrepencies is that, while daemontools + (The reason for these discrepencies is that, while daemontools is better, it's a pain in the ass to deal with and nobody's had any trouble leaving PostgreSQL the way it is.)

      Index: openacs-4/packages/acs-core-docs/www/install-resources.adp =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/install-resources.adp,v diff -u -N -r1.2 -r1.3 --- openacs-4/packages/acs-core-docs/www/install-resources.adp 7 Aug 2017 23:47:51 -0000 1.2 +++ openacs-4/packages/acs-core-docs/www/install-resources.adp 25 Apr 2018 08:38:27 -0000 1.3 @@ -3,11 +3,10 @@ Resources -
      + leftLink="os-security" leftLabel="Prev" + title="Appendix C. Credits" + rightLink="acs-package-dev" rightLabel="Next"> +

      Resources

      Here are some resources that OpenACS users have found useful.

      @@ -34,9 +33,9 @@
      - \ No newline at end of file + leftLink="os-security" leftLabel="Prev" leftTitle="Security Information" + rightLink="acs-package-dev" rightLabel="Next" rightTitle="Part III. For OpenACS +Package Developers" + homeLink="index" homeLabel="Home" + upLink="credits" upLabel="Up"> + \ No newline at end of file Index: openacs-4/packages/acs-core-docs/www/install-squirrelmail.adp =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/install-squirrelmail.adp,v diff -u -N -r1.3 -r1.4 --- openacs-4/packages/acs-core-docs/www/install-squirrelmail.adp 8 Nov 2017 09:42:11 -0000 1.3 +++ openacs-4/packages/acs-core-docs/www/install-squirrelmail.adp 25 Apr 2018 08:38:27 -0000 1.4 @@ -5,12 +5,11 @@ OpenACS -
    2. -

      Prepare a certificate directory for the service.

      -[$OPENACS_SERVICE_NAME etc]$ mkdir /var/lib/aolserver/$OPENACS_SERVICE_NAME/etc/certs
      +

      Prepare a certificate directory for the service.

      [$OPENACS_SERVICE_NAME etc]$ mkdir /var/lib/aolserver/$OPENACS_SERVICE_NAME/etc/certs
       [$OPENACS_SERVICE_NAME etc]$ chmod 700 /var/lib/aolserver/$OPENACS_SERVICE_NAME/etc/certs
       [$OPENACS_SERVICE_NAME etc]$ 
       mkdir /var/lib/aolserver/$OPENACS_SERVICE_NAME/etc/certs
      @@ -48,47 +47,39 @@
       ...++++++
       .......++++++
       writing new private key to 'newreq.pem'
      -Enter PEM pass phrase:
      -

      Enter a pass phrase for the CA certificate. Then, answer the -rest of the questions. At the end you should see this:

      -Certificate (and private key) is in newreq.pem
      -[$OPENACS_SERVICE_NAME certs]$
      -

      +Enter PEM pass phrase:

      Enter a pass phrase for the CA certificate. Then, answer the +rest of the questions. At the end you should see this:

      Certificate (and private key) is in newreq.pem
      +[$OPENACS_SERVICE_NAME certs]$

      newreq.pem contains our certificate and private key. The key is protected by a passphrase, which means that we'll have to enter the pass phrase each time the server starts. This is impractical and unnecessary, so we create an unprotected version of the key. Security implication: if anyone gets access to the file keyfile.pem, they effectively own the key as much as you do. Mitigation: don't use this key/cert combo for -anything besides providing ssl for the web site.

      -[root misc]# openssl rsa -in newreq.pem -out keyfile.pem
      +anything besides providing ssl for the web site.

      [root misc]# openssl rsa -in newreq.pem -out keyfile.pem
       read RSA key
       Enter PEM pass phrase:
       writing RSA key
      -[$OPENACS_SERVICE_NAME certs]$ 
      -

      To create the certificate file, we take the combined file, copy -it, and strip out the key.

      -[$OPENACS_SERVICE_NAME certs]$ cp newreq.pem certfile.pem
      +[$OPENACS_SERVICE_NAME certs]$ 

      To create the certificate file, we take the combined file, copy +it, and strip out the key.

      [$OPENACS_SERVICE_NAME certs]$ cp newreq.pem certfile.pem
       [root misc]# emacs certfile.pem
      -

      Strip out the section that looks like

      ------BEGIN RSA PRIVATE KEY-----
      +

      Strip out the section that looks like

      -----BEGIN RSA PRIVATE KEY-----
       Proc-Type: 4,ENCRYPTED
       DEK-Info: DES-EDE3-CBC,F3EDE7CA1B404997
       S/Sd2MYA0JVmQuIt5bYowXR1KYKDka1d3DUgtoVTiFepIRUrMkZlCli08mWVjE6T
       (11 lines omitted)
       1MU24SHLgdTfDJprEdxZOnxajnbxL420xNVc5RRXlJA8Xxhx/HBKTw==
      ------END RSA PRIVATE KEY-----
      -
      +-----END RSA PRIVATE KEY-----
    3. If you start up using the etc/daemontools/run script, you will need to edit this script to make sure the ports are bound for SSL. Details of this are in the run script.

    - \ No newline at end of file + rightLink="analog-setup" rightLabel="Next" rightTitle="Set up Log Analysis Reports" + homeLink="index" homeLabel="Home" + upLink="maintenance-web" upLabel="Up"> + \ No newline at end of file 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 -N -r1.3 -r1.4 --- openacs-4/packages/acs-core-docs/www/install-steps.adp 8 Nov 2017 09:42:11 -0000 1.3 +++ openacs-4/packages/acs-core-docs/www/install-steps.adp 25 Apr 2018 08:38:27 -0000 1.4 @@ -3,11 +3,11 @@ Basic Steps -
    + leftLink="install-overview" leftLabel="Prev" + title="Chapter 2. Installation +Overview" + rightLink="individual-programs" rightLabel="Next"> +

    Basic Steps

    Most of the documentation in this section is kept as a reference. More up-to-date documentation is in the install sections in the Wiki.

    The basic steps for installing OpenACS are:

      @@ -16,19 +16,15 @@ Install Red Hat 8/9 for more details). See the Table 2.2, -“Version Compatibility -Matrix”.

    1. Install a database (see the section called -“Install Oracle 8.1.7” or -Install PostgreSQL).

    2. Install AOLserver (Install AOLserver 4) .

    3. Create a unique database and system user. Install the OpenACS +“Version Compatibility Matrix”.

    4. Install a database (see the section called “Install Oracle +8.1.7” or Install PostgreSQL).

    5. Install AOLserver (Install AOLserver 4) .

    6. Create a unique database and system user. Install the OpenACS tarball, start and AOLserver instance, and use the OpenACS web pages to complete installation (see Install OpenACS 5.9.0).

    Specific instructions are available for Mac OS X and Windows2000 (see the section called -“OpenACS Installation Guide for Mac OS -X” or the section called -“OpenACS Installation Guide for -Windows”).

    +“OpenACS Installation Guide for Mac OS X” or the section called +“OpenACS Installation Guide for Windows”).

    Binaries and other shortcuts

    You can try out OpenACS using some binary installers. In general, they are not yet supported by the community, so they are @@ -46,8 +42,7 @@

  • 128MB RAM (much more if you want Oracle)

  • 1GB free space on your hard drive (much more if you want Oracle)

  • A Unix-like operating system with Tcl, tDOM, and a mail transport agent like sendmail or qmail. (see the -section called “Prerequisite -Software”)

  • +section called “Prerequisite Software”)

    All of the software mentioned is open-source and available without direct costs, except for Oracle. You can obtain a free copy of Oracle for development purposes. This is described in the @@ -64,11 +59,9 @@ menu.

  • This is text that you will type.

  • This is text from a program or file which you may need to -examine or edit:

    -if {$database eq "oracle"} {
    +examine or edit:

    if {$database eq "oracle"} {
               set db_password        "mysitepassword"
    -}
    -
    +}
  • This is text that you will see and type in a command shell, including text you may have to @@ -95,21 +88,20 @@

    Setting a global shell -variable for cut and paste.  In order to cut -and paste the instructions into your shell, you must set the +variable for cut and paste.  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 /etc/profile ( /etc/share/skel/dot.profile for FreeBSD) -and add this line:

    -export OPENACS_SERVICE_NAME=service0
    +and add this line:

    export OPENACS_SERVICE_NAME=service0
     
  • -Paths and Users

    -

    Table 2.1. Default -directories for a standard install

    +Paths and Users
    +

    Table 2.1. Default directories +for a standard install

    @@ -119,7 +111,7 @@ @@ -189,9 +181,9 @@ - \ No newline at end of file + leftLink="install-overview" leftLabel="Prev" leftTitle="Chapter 2. Installation +Overview" + rightLink="individual-programs" rightLabel="Next" rightTitle="Prerequisite Software" + homeLink="index" homeLabel="Home" + upLink="install-overview" upLabel="Up"> + \ No newline at end of file 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 -N -r1.37 -r1.38 --- openacs-4/packages/acs-core-docs/www/install-steps.html 8 Nov 2017 09:42:11 -0000 1.37 +++ openacs-4/packages/acs-core-docs/www/install-steps.html 25 Apr 2018 08:38:28 -0000 1.38 @@ -104,12 +104,12 @@ -

    Paths and Users

    +

    Paths and Users

    -

    Table 2.1. Default directories for a standard install

    +

    Table 2.1. Default directories for a standard install

    -
    name of administrative access accountremadmin
    OpenACS service -$OPENACS_SERVICE_NAME (set to +$OPENACS_SERVICE_NAME (set to service0 in default install)
    OpenACS service account$OPENACS_SERVICE_NAME
    +
    Fully qualified domain name of your serveryourserver.test
    name of administrative access accountremadmin
    OpenACS service +
    Fully qualified domain name of your serveryourserver.test
    name of administrative access accountremadmin
    OpenACS service $OPENACS_SERVICE_NAME (set to service0 in default install)
    OpenACS service account$OPENACS_SERVICE_NAME
    OpenACS database name$OPENACS_SERVICE_NAME
    Root of OpenACS service file tree (SERVERROOT)/var/lib/aolserver/$OPENACS_SERVICE_NAME
    Location of source code tarballs for new software/var/tmp
    The OpenACS tarball contains some files which are useful while setting up other software. Those files are located at:/var/tmp/openacs-5.9.0/packages/acs-core-docs/www/files
    Database backup directory/var/lib/aolserver/$OPENACS_SERVICE_NAME/database-backup
    Service config files/var/lib/aolserver/$OPENACS_SERVICE_NAME/etc
    Service log files/var/lib/aolserver/$OPENACS_SERVICE_NAME/log
    Compile directory/usr/local/src
    PostgreSQL directory/usr/local/pgsql
    AOLserver directory/usr/local/aolserver
    Index: openacs-4/packages/acs-core-docs/www/install-tclwebtest.adp =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/install-tclwebtest.adp,v diff -u -N -r1.3 -r1.4 --- openacs-4/packages/acs-core-docs/www/install-tclwebtest.adp 8 Nov 2017 09:42:11 -0000 1.3 +++ openacs-4/packages/acs-core-docs/www/install-tclwebtest.adp 25 Apr 2018 08:38:28 -0000 1.4 @@ -3,12 +3,11 @@ Install tclwebtest. -
    + leftLink="install-nsopenssl" leftLabel="Prev" + title="Appendix B. Install +additional supporting software" + rightLink="install-php" rightLabel="Next"> +

    Install tclwebtest.

    Download the tclwebtest source, unpack it, and put it an appropriate place. (tclwebtest 1.0 will be @@ -25,8 +24,8 @@

    - \ No newline at end of file + leftLink="install-nsopenssl" leftLabel="Prev" leftTitle="Install nsopenssl" + rightLink="install-php" rightLabel="Next" rightTitle="Install PHP for use in AOLserver" + homeLink="index" homeLabel="Home" + upLink="install-more-software" upLabel="Up"> + \ No newline at end of file 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 -N -r1.3 -r1.4 --- openacs-4/packages/acs-core-docs/www/ix01.adp 8 Nov 2017 09:42:11 -0000 1.3 +++ openacs-4/packages/acs-core-docs/www/ix01.adp 25 Apr 2018 08:38:28 -0000 1.4 @@ -3,28 +3,28 @@ Index -
    + leftLink="update-translations" leftLabel="Prev" + title="" + rightLink="" rightLabel=""> +

    -Index

    +Index

    C

    -
    computeroutput
    code, Code -
    cvs
    +
    computeroutput
    code, Code +
    cvs
    initializing, Initialize CVS (OPTIONAL)
    setup, Using CVS with an OpenACS Site @@ -33,107 +33,107 @@

    D

    -
    daemontools
    installation, Install Daemontools (OPTIONAL) -
    docbook
    installation, Install Red Hat 8/9 -
    DocBook
    +
    daemontools
    installation, Install Daemontools (OPTIONAL) +
    docbook
    installation, Install Red Hat 8/9 +
    DocBook
    DTD, OpenACS Documentation Strategy: Why DocBook?
    emacs configuration for, Add PSGML commands to emacs init file (OPTIONAL)
    -
    Document structure, Document +
    Document structure, Document Structure

    E

    -
    emacs
    installation, Install Red Hat 8/9 -
    emphasis
    bold, italics, Emphasis +
    emacs
    installation, Install Red Hat 8/9 +
    emphasis
    bold, italics, Emphasis

    G

    -
    Graphics
    Images, Graphics +
    Graphics
    Images, Graphics

    I

    -
    informaltable
    table, Tables +
    informaltable
    table, Tables

    L

    -
    language
    installation, Install Red Hat 8/9 -
    Linking, Links -
    lists, Lists +
    language
    installation, Install Red Hat 8/9 +
    Linking, Links +
    lists, Lists
    -

    T

    The publish point for new +

    T

    The publish point for new packages should be fixed., Prepare the package for distribution.

    U

    -
    ulink, Links -
    upgrade
    +
    ulink, Links +
    upgrade
    OpenACS 4.5 to 4.6.x
    Linux/Unix, Upgrading 4.5 or higher to 4.6.3
    - \ No newline at end of file + leftLink="update-translations" leftLabel="Prev" leftTitle="How to Update the translations" + rightLink="" rightLabel="" rightTitle="" + homeLink="index" homeLabel="Home" + upLink="index" upLabel="Up"> + 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 -N -r1.31 -r1.32 --- openacs-4/packages/acs-core-docs/www/ix01.html 8 Nov 2017 09:42:11 -0000 1.31 +++ openacs-4/packages/acs-core-docs/www/ix01.html 25 Apr 2018 08:38:28 -0000 1.32 @@ -1,3 +1,3 @@ -Index

    Index

    Symbols

    $OPENACS_SERVICE_NAME, Paths and Users

    C

    computeroutput
    code, Code
    cvs
    initializing, Initialize CVS (OPTIONAL)
    setup, Using CVS with an OpenACS Site

    E

    emacs
    installation, Install Red Hat 8/9
    emphasis
    bold, italics, Emphasis

    F

    full text search
    installation, Install Tsearch2 module

    G

    Graphics
    Images, Graphics

    I

    informaltable
    table, Tables

    L

    language
    installation, Install Red Hat 8/9
    Linking, Links
    lists, Lists

    O

    OpenACS Package, What a Package Looks Like

    P

    photo-album
    installation (see ImageMagick)
    Postgres
    Vacuuming, Installation Option 2: Install from tarball

    T

    The publish point for new packages should be - fixed., Prepare the package for distribution.

    U

    ulink, Links
    upgrade
    OpenACS 4.5 to 4.6.x
    Linux/Unix, Upgrading 4.5 or higher to 4.6.3
    +Index

    Index

    Symbols

    $OPENACS_SERVICE_NAME, Paths and Users

    C

    computeroutput
    code, Code
    cvs
    initializing, Initialize CVS (OPTIONAL)
    setup, Using CVS with an OpenACS Site

    E

    emacs
    installation, Install Red Hat 8/9
    emphasis
    bold, italics, Emphasis

    F

    full text search
    installation, Install Tsearch2 module

    G

    Graphics
    Images, Graphics

    I

    informaltable
    table, Tables

    L

    language
    installation, Install Red Hat 8/9
    Linking, Links
    lists, Lists

    O

    OpenACS Package, What a Package Looks Like

    P

    photo-album
    installation (see ImageMagick)
    Postgres
    Vacuuming, Installation Option 2: Install from tarball

    T

    The publish point for new packages should be + fixed., Prepare the package for distribution.

    U

    ulink, Links
    upgrade
    OpenACS 4.5 to 4.6.x
    Linux/Unix, Upgrading 4.5 or higher to 4.6.3
    Index: openacs-4/packages/acs-core-docs/www/kernel-doc.adp =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/kernel-doc.adp,v diff -u -N -r1.2 -r1.3 --- openacs-4/packages/acs-core-docs/www/kernel-doc.adp 7 Aug 2017 23:47:51 -0000 1.2 +++ openacs-4/packages/acs-core-docs/www/kernel-doc.adp 25 Apr 2018 08:38:28 -0000 1.3 @@ -1,18 +1,15 @@ -{/doc/acs-core-docs {ACS Core Documentation}} {Chapter 15. Kernel -Documentation} -Chapter 15. Kernel -Documentation +{/doc/acs-core-docs {ACS Core Documentation}} {Chapter 15. Kernel Documentation} +Chapter 15. Kernel Documentation -
    + leftLink="acs-plat-dev" leftLabel="Prev" + title="Part IV. For OpenACS +Platform Developers" + rightLink="kernel-overview" rightLabel="Next"> +

    -Chapter 15. Kernel -Documentation

    +Chapter 15. Kernel Documentation
    - \ No newline at end of file + leftLink="acs-plat-dev" leftLabel="Prev" leftTitle="Part IV. For OpenACS +Platform Developers" + rightLink="kernel-overview" rightLabel="Next" rightTitle="Overview" + homeLink="index" homeLabel="Home" + upLink="acs-plat-dev" upLabel="Up"> + \ No newline at end of file Index: openacs-4/packages/acs-core-docs/www/kernel-overview.adp =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/kernel-overview.adp,v diff -u -N -r1.2 -r1.3 --- openacs-4/packages/acs-core-docs/www/kernel-overview.adp 7 Aug 2017 23:47:51 -0000 1.2 +++ openacs-4/packages/acs-core-docs/www/kernel-overview.adp 25 Apr 2018 08:38:28 -0000 1.3 @@ -3,11 +3,11 @@ Overview -
    + leftLink="kernel-doc" leftLabel="Prev" + title="Chapter 15. Kernel +Documentation" + rightLink="object-system-requirements" rightLabel="Next"> +

    Overview

    • The OpenACS Kernel, which @@ -27,9 +27,9 @@

    - \ No newline at end of file + leftLink="kernel-doc" leftLabel="Prev" leftTitle="Chapter 15. Kernel +Documentation" + rightLink="object-system-requirements" rightLabel="Next" rightTitle="Object Model Requirements" + homeLink="index" homeLabel="Home" + upLink="kernel-doc" upLabel="Up"> + \ No newline at end of file Index: openacs-4/packages/acs-core-docs/www/mac-installation.adp =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/mac-installation.adp,v diff -u -N -r1.3 -r1.4 --- openacs-4/packages/acs-core-docs/www/mac-installation.adp 8 Nov 2017 09:42:11 -0000 1.3 +++ openacs-4/packages/acs-core-docs/www/mac-installation.adp 25 Apr 2018 08:38:28 -0000 1.4 @@ -3,23 +3,22 @@ OpenACS Installation Guide for Mac OS X -
    + leftLink="win2k-installation" leftLabel="Prev" + title="Chapter 3. Complete +Installation" + rightLink="configuring-new-site" rightLabel="Next"> +

    OpenACS Installation Guide for Mac OS X

    See the wiki for an actual guideline: Installing OpenACS on Mac OS X

    ($‌Id: macinstall.xml,v 1.7 2014/10/27 16:39:31 victorg Exp $)

    - \ No newline at end of file + rightLink="configuring-new-site" rightLabel="Next" rightTitle="Chapter 4. Configuring a +new OpenACS Site" + homeLink="index" homeLabel="Home" + upLink="complete-install" upLabel="Up"> + \ No newline at end of file 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 -N -r1.3 -r1.4 --- openacs-4/packages/acs-core-docs/www/maint-performance.adp 8 Nov 2017 09:42:11 -0000 1.3 +++ openacs-4/packages/acs-core-docs/www/maint-performance.adp 25 Apr 2018 08:38:28 -0000 1.4 @@ -3,11 +3,11 @@ Diagnosing Performance Problems -
    + leftLink="uptime" leftLabel="Prev" + title="Chapter 6. Production +Environments" + rightLink="database-management" rightLabel="Next"> +

    Diagnosing Performance Problems

    • Did performance problems happen overnight, or did they sneak up @@ -16,9 +16,8 @@ constantly?

    • Isolating and solving database problems.

      • Without daily internal maintenance, most databases slowly -degrade in performance. For PostGreSQL, see the section called -“Vacuum Postgres nightly”. For -Oracle, use exec +degrade in performance. For PostGreSQL, see the section called “Vacuum Postgres +nightly”. For Oracle, use exec dbms_stats.gather_schema_stats('SCHEMA_NAME') (Andrew Piskorski's Oracle notes).

      • You can track the exact amount of time each database query on a @@ -32,15 +31,14 @@

        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.

        -

        Figure 6.8. Query -Analysis example

        Query Analysis example
        +

        Figure 6.8. Query Analysis +example

        Query Analysis example

    • Identify a runaway Oracle query: first, use ps aux or top to get the UNIX process ID of -a runaway Oracle process.

      Log in to SQL*Plus as the admin:

      -[$OPENACS_SERVICE_NAME ~]$ svrmgrl
      +a runaway Oracle process.

      Log in to SQL*Plus as the admin:

      [$OPENACS_SERVICE_NAME ~]$ svrmgrl
       
       Oracle Server Manager Release 3.1.7.0.0 - Production
       
      @@ -50,39 +48,29 @@
       With the Partitioning option
       JServer Release 8.1.7.3.0 - Production
       
      -SVRMGR> connect internal              
      -Password:
      -

      See all of the running queries, and match the UNIX PID:

      -select p.spid  -- The UNIX PID
      +SVRMGR> connect internal             
      +Password:

      See all of the running queries, and match the UNIX PID:

      select p.spid  -- The UNIX PID
              ,s.sid  ,s.serial#
              ,p.username  as os_user
              ,s.username  ,s.status
              ,p.terminal  ,p.program
         from v$session s  ,v$process p
        where p.addr = s.paddr
      - order by s.username ,p.spid ,s.sid ,s.serial# ;
      -

      See the SQL behind the oracle processes:

      -select s.username
      + order by s.username ,p.spid ,s.sid ,s.serial# ;

      See the SQL behind the oracle processes:

      select s.username
              ,s.sid  ,s.serial#
              ,sql.sql_text
         from v$session s, v$sqltext sql
        where sql.address    = s.sql_address
          and sql.hash_value = s.sql_hash_value
        --and upper(s.username) like 'USERNAME%'
      - order by s.username ,s.sid ,s.serial# ,sql.piece ;
      -

      To kill a troubled process:

      -alter system kill session 'SID,SERIAL#';  --substitute values for SID and SERIAL#
      -

      (See Andrew + order by s.username ,s.sid ,s.serial# ,sql.piece ;

      To kill a troubled process:

      +alter system kill session 'SID,SERIAL#';  --substitute values for SID and SERIAL#

      (See Andrew Piskorski's Oracle notes)

    • Identify a runaway Postgres query. First, logging must be enabled in the database. This imposes a performance penalty and should not be done in normal operation.

      Edit the file postgresql.conf - its location depends on -the PostGreSQL installation - and change

      -#stats_command_string = false
      -

      to

      -stats_command_string = true
      -

      Next, connect to postgres (psql +the PostGreSQL installation - and change

      #stats_command_string = false

      to

      stats_command_string = true

      Next, connect to postgres (psql service0 ) and select * from @@ -101,8 +89,7 @@ 64344418 | openacs.org | 14311 | 101 | nsadmin | <IDLE> 64344418 | openacs.org | 14549 | 101 | nsadmin | <IDLE> (8 rows) -openacs.org=> - +openacs.org=>

    @@ -124,7 +111,7 @@ query, install "autotrace". I usually follow the instructions here http://asktom.oracle.com/~tkyte/article1/autotrace.html.

    -Make sure, that the Oracle CBO works with +Make sure, that the Oracle CBO works with adequate statistics

    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 @@ -136,9 +123,9 @@

    - \ No newline at end of file + leftLink="uptime" leftLabel="Prev" leftTitle="External uptime validation" + rightLink="database-management" rightLabel="Next" rightTitle="Chapter 7. Database +Management" + homeLink="index" homeLabel="Home" + upLink="maintenance-web" upLabel="Up"> + \ No newline at end of file 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 -N -r1.31 -r1.32 --- openacs-4/packages/acs-core-docs/www/maint-performance.html 8 Nov 2017 09:42:11 -0000 1.31 +++ openacs-4/packages/acs-core-docs/www/maint-performance.html 25 Apr 2018 08:38:28 -0000 1.32 @@ -30,7 +30,7 @@

    Browse directly to a slow page and click "Request Information" at the bottom of the page.

  • 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.

    -

    Figure 6.8. Query Analysis example

    +

    Figure 6.8. Query Analysis example

    Query Analysis example

    @@ -122,7 +122,7 @@ To be able to get a overview of how Oracle executes a particular query, install "autotrace". I usually follow the instructions here http://asktom.oracle.com/~tkyte/article1/autotrace.html.

    -

    Make sure, that the Oracle CBO works with adequate statistics

    +

    Make sure, that the Oracle CBO works with adequate statistics

    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 -N -r1.4 -r1.5 --- openacs-4/packages/acs-core-docs/www/maintenance-deploy.adp 27 Mar 2018 11:18:00 -0000 1.4 +++ openacs-4/packages/acs-core-docs/www/maintenance-deploy.adp 25 Apr 2018 08:38:28 -0000 1.5 @@ -3,15 +3,15 @@ Staged Deployment for Production Networks -

    + leftLink="high-avail" leftLabel="Prev" + title="Chapter 6. Production +Environments" + rightLink="install-ssl" rightLabel="Next"> +

    Staged Deployment for Production Networks

    <authorblurb>

    ($‌Id: -maintenance.xml,v 1.31 2017/08/07 23:47:55 gustafn Exp +maintenance.xml,v 1.32 2018/03/27 11:18:00 hectorr Exp $)

    By Joel Aufrecht

    </authorblurb> @@ -24,7 +24,7 @@ working configuration safely and quickly.

  • -Method 1: Deployment with CVS

    With this method, we control the files on a site via CVS. This +Method 1: Deployment with CVS

    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 @@ -86,8 +86,7 @@

    To make these changes take place on service0:

     4) update the file on production:
     cd /var/lib/aolserver/service0/www
    -cvs up -Pd index.adp
    -

    If you make changes that require changes to the database, test +cvs up -Pd index.adp

    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.

    The production site can run "HEAD" from cvs.

    The drawback to using HEAD as the live code is that you cannot @@ -103,7 +102,7 @@ tags to follow ...

    -Method 2: A/B Deployment

    The approach taken in this section is to always create a new +Method 2: A/B Deployment

    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,38 +118,38 @@ function or risk losing data in the shuffle. It also requires extra steps if the database will be affected.

    -Simple A/B Deployment: Database is not +Simple A/B Deployment: Database is not changed

    -

    Figure 6.2. Simple -A/B Deployment - Step 1

    Simple A/B Deployment - Step 1
    +

    Figure 6.2. Simple A/B +Deployment - Step 1

    Simple A/B Deployment - Step 1

    -

    Figure 6.3. Simple -A/B Deployment - Step 2

    Simple A/B Deployment - Step 2
    +

    Figure 6.3. Simple A/B +Deployment - Step 2

    Simple A/B Deployment - Step 2

    -

    Figure 6.4. Simple -A/B Deployment - Step 3

    Simple A/B Deployment - Step 3
    +

    Figure 6.4. Simple A/B +Deployment - Step 3

    Simple A/B Deployment - Step 3

    -Complex A/B Deployment: Database is +Complex A/B Deployment: Database is changed

    -

    Figure 6.5. Complex A/B Deployment -- Step 1

    Complex A/B Deployment - Step 1
    +

    Figure 6.5. Complex A/B +Deployment - Step 1

    Complex A/B Deployment - Step 1

    -

    Figure 6.6. Complex A/B Deployment -- Step 2

    Complex A/B Deployment - Step 2
    +

    Figure 6.6. Complex A/B +Deployment - Step 2

    Complex A/B Deployment - Step 2

    -

    Figure 6.7. Complex A/B Deployment -- Step 3

    Complex A/B Deployment - Step 3
    +

    Figure 6.7. Complex A/B +Deployment - Step 3

    Complex A/B Deployment - Step 3

    - + homeLink="index" homeLabel="Home" + upLink="maintenance-web" upLabel="Up"> + \ No newline at end of file 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 -N -r1.27 -r1.28 --- openacs-4/packages/acs-core-docs/www/maintenance-deploy.html 27 Mar 2018 11:18:00 -0000 1.27 +++ openacs-4/packages/acs-core-docs/www/maintenance-deploy.html 25 Apr 2018 08:38:28 -0000 1.28 @@ -12,7 +12,7 @@

    Rollback: If anything goes wrong, you can return to the previous working configuration safely and quickly.

    -

    Method 1: Deployment with CVS

    +

    Method 1: Deployment with CVS

    With this method, we control the files on a site via CVS. This example uses one developmental server (service0-dev) and one @@ -111,36 +111,36 @@

    -

    Method 2: A/B Deployment

    +

    Method 2: A/B Deployment

    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.

    This approach can has limitations. If the database or file system regularly receiving new data, you must interrupt this function or risk losing data in the shuffle. It also requires extra steps if the database will be affected.

    -

    Simple A/B Deployment: Database is not changed

    +

    Simple A/B Deployment: Database is not changed

    -

    Figure 6.2. Simple A/B Deployment - Step 1

    +

    Figure 6.2. Simple A/B Deployment - Step 1

    Simple A/B Deployment - Step 1

    -

    Figure 6.3. Simple A/B Deployment - Step 2

    +

    Figure 6.3. Simple A/B Deployment - Step 2

    Simple A/B Deployment - Step 2

    -

    Figure 6.4. Simple A/B Deployment - Step 3

    +

    Figure 6.4. Simple A/B Deployment - Step 3

    Simple A/B Deployment - Step 3

    -

    Complex A/B Deployment: Database is changed

    +

    Complex A/B Deployment: Database is changed

    -

    Figure 6.5. Complex A/B Deployment - Step 1

    +

    Figure 6.5. Complex A/B Deployment - Step 1

    Complex A/B Deployment - Step 1

    -

    Figure 6.6. Complex A/B Deployment - Step 2

    +

    Figure 6.6. Complex A/B Deployment - Step 2

    Complex A/B Deployment - Step 2

    -

    Figure 6.7. Complex A/B Deployment - Step 3

    +

    Figure 6.7. Complex A/B Deployment - Step 3

    Complex A/B Deployment - Step 3

    Index: openacs-4/packages/acs-core-docs/www/maintenance-web.adp =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/maintenance-web.adp,v diff -u -N -r1.3 -r1.4 --- openacs-4/packages/acs-core-docs/www/maintenance-web.adp 8 Nov 2017 09:42:11 -0000 1.3 +++ openacs-4/packages/acs-core-docs/www/maintenance-web.adp 25 Apr 2018 08:38:28 -0000 1.4 @@ -1,15 +1,13 @@ -{/doc/acs-core-docs {ACS Core Documentation}} {Chapter 6. Production -Environments} -Chapter 6. Production -Environments +{/doc/acs-core-docs {ACS Core Documentation}} {Chapter 6. Production Environments} +Chapter 6. Production Environments -
    + rightLink="install-openacs-keepalive" rightLabel="Next"> +

    Chapter 6. Production Environments

    @@ -30,9 +28,9 @@

    </authorblurb>
    - \ No newline at end of file + homeLink="index" homeLabel="Home" + upLink="acs-admin" upLabel="Up"> + \ No newline at end of file Index: openacs-4/packages/acs-core-docs/www/nxml-mode.adp =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/nxml-mode.adp,v diff -u -N -r1.3 -r1.4 --- openacs-4/packages/acs-core-docs/www/nxml-mode.adp 8 Nov 2017 09:42:11 -0000 1.3 +++ openacs-4/packages/acs-core-docs/www/nxml-mode.adp 25 Apr 2018 08:38:28 -0000 1.4 @@ -3,11 +3,11 @@ Using nXML mode in Emacs -
    + leftLink="psgml-mode" leftLabel="Prev" + title="Chapter 13. Documentation +Standards" + rightLink="filename" rightLabel="Next"> +

    Using nXML mode in Emacs

    <authorblurb>

    By Jeff Davis

    </authorblurb>

    An alternative to psgml mode is nXML by James Clark, a new major mode for GNU Emacs for editing XML, and which features @@ -19,9 +19,9 @@

    - \ No newline at end of file + homeLink="index" homeLabel="Home" + upLink="doc-standards" upLabel="Up"> + \ No newline at end of file Index: openacs-4/packages/acs-core-docs/www/object-identity.adp =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/object-identity.adp,v diff -u -N -r1.3 -r1.4 --- openacs-4/packages/acs-core-docs/www/object-identity.adp 8 Nov 2017 09:42:11 -0000 1.3 +++ openacs-4/packages/acs-core-docs/www/object-identity.adp 25 Apr 2018 08:38:28 -0000 1.4 @@ -3,11 +3,11 @@ Object Identity -
    + leftLink="permissions-tediously-explained" leftLabel="Prev" + title="Chapter 11. Development +Reference" + rightLink="programming-with-aolserver" rightLabel="Next"> +

    Object Identity

    <authorblurb>

    By Rafael H. Schloming @@ -52,9 +52,9 @@ 05:38:37 torbenb Exp $)

    - \ No newline at end of file + rightLink="programming-with-aolserver" rightLabel="Next" rightTitle="Programming with AOLserver" + homeLink="index" homeLabel="Home" + upLink="dev-guide" upLabel="Up"> + \ No newline at end of file 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 -N -r1.3 -r1.4 --- openacs-4/packages/acs-core-docs/www/object-system-design.adp 8 Nov 2017 09:42:11 -0000 1.3 +++ openacs-4/packages/acs-core-docs/www/object-system-design.adp 25 Apr 2018 08:38:28 -0000 1.4 @@ -3,11 +3,11 @@ Object Model Design -
    + leftLink="object-system-requirements" leftLabel="Prev" + title="Chapter 15. Kernel +Documentation" + rightLink="permissions-requirements" rightLabel="Next"> +

    Object Model Design

    <authorblurb>

    By Pete Su, Michael Yoon, Richard Li, @@ -70,8 +70,7 @@ (e.g. groups).

    The next section will explore these facilities in the context of -the the particular programming idioms that we wish to -generalize.

    Related Links

    This design document should be read along with the design +the particular programming idioms that we wish to generalize.

    Related Links

    This design document should be read along with the design documents for the new groups system, subsites and the permissions system

    @@ -177,7 +176,7 @@ OpenACS security model will defer to an object's context if there is no information about user X's permission to perform action Y on object Z.

    The context system forms the basis for the rest of the OpenACS -access control system, which is described in in two separate +access control system, which is described in two separate documents: one for the permissions system and another for the party groups system. The context system is also used to implement subsites.

    @@ -996,8 +995,8 @@
    - \ No newline at end of file + leftLink="object-system-requirements" leftLabel="Prev" leftTitle="Object Model Requirements" + rightLink="permissions-requirements" rightLabel="Next" rightTitle="Permissions Requirements" + homeLink="index" homeLabel="Home" + upLink="kernel-doc" upLabel="Up"> + \ No newline at end of file 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 -N -r1.36 -r1.37 --- openacs-4/packages/acs-core-docs/www/object-system-design.html 8 Nov 2017 09:42:11 -0000 1.36 +++ openacs-4/packages/acs-core-docs/www/object-system-design.html 25 Apr 2018 08:38:28 -0000 1.37 @@ -82,7 +82,7 @@ groups).

    -

    The next section will explore these facilities in the context of the the +

    The next section will explore these facilities in the context of the particular programming idioms that we wish to generalize.

    Related Links

    @@ -203,7 +203,8 @@ permission to perform action Y on object Z.

    The context system forms the basis for the rest of the OpenACS access control -system, which is described in in two separate documents: one for the permissions system and another for the +system, which is described in two separate documents: one for the +permissions system and another for the party groups system. The context system is also used to implement subsites.

    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 -N -r1.3 -r1.4 --- openacs-4/packages/acs-core-docs/www/object-system-requirements.adp 8 Nov 2017 09:42:11 -0000 1.3 +++ openacs-4/packages/acs-core-docs/www/object-system-requirements.adp 25 Apr 2018 08:38:28 -0000 1.4 @@ -3,11 +3,11 @@ Object Model Requirements -
    + leftLink="kernel-overview" leftLabel="Prev" + title="Chapter 15. Kernel +Documentation" + rightLink="object-system-design" rightLabel="Next"> +

    Object Model Requirements

    <authorblurb>

    By Pete Su

    </authorblurb>

    @@ -155,7 +155,7 @@ In OpenACS 3.x, this was done using mapping tables. The user/groups module has the most highly developed data model for this purpose, using a single table called user_group_map that mapped users to groups. -In addition, it uses the the user_group_member_fields and user_group_member_fields_map tables to +In addition, it uses the user_group_member_fields and user_group_member_fields_map tables to allow developers to attach custom attributes to group members. In fact, these custom attributes were not really attached to the users, but to the fact that a user was a member of a particular @@ -471,8 +471,8 @@

    - \ No newline at end of file + leftLink="kernel-overview" leftLabel="Prev" leftTitle="Overview" + rightLink="object-system-design" rightLabel="Next" rightTitle="Object Model Design" + homeLink="index" homeLabel="Home" + upLink="kernel-doc" upLabel="Up"> + \ No newline at end of file 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 -N -r1.36 -r1.37 --- openacs-4/packages/acs-core-docs/www/object-system-requirements.html 8 Nov 2017 09:42:11 -0000 1.36 +++ openacs-4/packages/acs-core-docs/www/object-system-requirements.html 25 Apr 2018 08:38:28 -0000 1.37 @@ -181,7 +181,7 @@ done using mapping tables. The user/groups module has the most highly developed data model for this purpose, using a single table called user_group_map that mapped users to groups. In addition, it uses -the the user_group_member_fields and +the user_group_member_fields and user_group_member_fields_map tables to allow developers to attach custom attributes to group members. In fact, these custom attributes were not really attached to the users, but to the fact that a user was a 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 -N -r1.3 -r1.4 --- openacs-4/packages/acs-core-docs/www/objects.adp 8 Nov 2017 09:42:11 -0000 1.3 +++ openacs-4/packages/acs-core-docs/www/objects.adp 25 Apr 2018 08:38:28 -0000 1.4 @@ -3,11 +3,11 @@ OpenACS Data Models and the Object System -
    + leftLink="packages" leftLabel="Prev" + title="Chapter 11. Development +Reference" + rightLink="request-processor" rightLabel="Next"> +

    OpenACS Data Models and the Object System

    <authorblurb>

    By Pete Su

    </authorblurb>

    @@ -83,7 +83,7 @@ for the PG version) file created when we created the package. Then, do the following:

    -Describe the new type to the type +Describe the new type to the type system

    First, add an entry to the acs_object_types table with the following PL/SQL call:

     begin  
    @@ -139,7 +139,7 @@
     attributes, so there is no need for us to define them.

    -Define a table in which to store your +Define a table in which to store your objects

    The next thing we do is make a small modification to the data model to reflect the fact that each row in the notes table represents something that is not only an object of type note, but also an acs_object. The new table definition looks @@ -163,7 +163,7 @@ acs_objects.

    -Define a package for type specific +Define a package for type specific procedures

    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:

    @@ -210,7 +210,7 @@
     only" by default. We'll talk about this more later.

    -Define a package body for type specific +Define a package body for type specific procedures

    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 acs_object.new @@ -367,8 +367,8 @@

    - \ No newline at end of file + leftLink="packages" leftLabel="Prev" leftTitle="OpenACS Packages" + rightLink="request-processor" rightLabel="Next" rightTitle="The Request Processor" + homeLink="index" homeLabel="Home" + upLink="dev-guide" upLabel="Up"> + \ No newline at end of file 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 -N -r1.54 -r1.55 --- openacs-4/packages/acs-core-docs/www/objects.html 8 Nov 2017 09:42:11 -0000 1.54 +++ openacs-4/packages/acs-core-docs/www/objects.html 25 Apr 2018 08:38:28 -0000 1.55 @@ -115,7 +115,7 @@ -

    Describe the new type to the type system

    +

    Describe the new type to the type system

    @@ -194,7 +194,7 @@
    -

    Define a table in which to store your objects

    +

    Define a table in which to store your objects

    @@ -232,7 +232,7 @@

    -

    Define a package for type specific procedures

    +

    Define a package for type specific procedures

    @@ -294,7 +294,7 @@

    -

    Define a package body for type specific procedures

    +

    Define a package body for type specific procedures

    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 -N -r1.3 -r1.4 --- openacs-4/packages/acs-core-docs/www/openacs-overview.adp 11 Apr 2018 21:35:06 -0000 1.3 +++ openacs-4/packages/acs-core-docs/www/openacs-overview.adp 25 Apr 2018 08:38:28 -0000 1.4 @@ -3,12 +3,11 @@ Overview -

    + leftLink="general-documents" leftLabel="Prev" + title="Chapter 1. High level +information: What is OpenACS?" + rightLink="release-notes" rightLabel="Next"> +

    Overview

    OpenACS (Open Architecture Community System) is an advanced toolkit for building scalable, community-oriented web applications. @@ -39,16 +38,15 @@ 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 its +elections) which ensures the project serves the needs of it's constituents.

    The OpenACS community would like to hear your comments and can help you in your endeavors with the system. Visit our web site and feel free to ask questions or provide feedback.

    - + 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-overview.html =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/openacs-overview.html,v diff -u -N -r1.32 -r1.33 --- openacs-4/packages/acs-core-docs/www/openacs-overview.html 11 Apr 2018 21:35:06 -0000 1.32 +++ openacs-4/packages/acs-core-docs/www/openacs-overview.html 25 Apr 2018 08:38:28 -0000 1.33 @@ -56,7 +56,7 @@ 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 its constituents. + project serves the needs of it's constituents.

    Index: openacs-4/packages/acs-core-docs/www/openacs-unpack.adp =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/openacs-unpack.adp,v diff -u -N -r1.3 -r1.4 --- openacs-4/packages/acs-core-docs/www/openacs-unpack.adp 8 Nov 2017 09:42:11 -0000 1.3 +++ openacs-4/packages/acs-core-docs/www/openacs-unpack.adp 25 Apr 2018 08:38:28 -0000 1.4 @@ -3,22 +3,19 @@ Unpack the OpenACS tarball -

    + leftLink="install-more-software" leftLabel="Prev" + title="Appendix B. Install +additional supporting software" + rightLink="install-cvs" rightLabel="Next"> +

    Unpack the OpenACS tarball

    The OpenACS tarball contains sample configuration files for some of the packages listed below. In order to access those files, -unpack the tarball now.

    -[root root]# cd /tmp
    +unpack the tarball now.

    [root root]# cd /tmp
     [root tmp]# tar xzf openacs-5.9.0.tgzcd /tmp
     tar xzf openacs-5.9.0.tgz
     

    If you are installing from a different method and just need the -configuration files, you can instead get them from CVS:

    -[root root]# cd /tmp
    +configuration files, you can instead get them from CVS:

    [root root]# cd /tmp
     [root tmp]# cvs -d :pserver:anonymous\@cvs.openacs.org:/cvsroot co openacs-4/packages/acs-core-docs/www/files/
     cvs checkout: warning: failed to open /root/.cvspass for reading: No such file or directory
     cvs server: Updating openacs-4/packages/acs-core-docs/www/files
    @@ -32,10 +29,9 @@
     
    - \ No newline at end of file + leftLink="install-more-software" leftLabel="Prev" leftTitle="Appendix B. Install +additional supporting software" + rightLink="install-cvs" rightLabel="Next" rightTitle="Initialize CVS (OPTIONAL)" + homeLink="index" homeLabel="Home" + upLink="install-more-software" 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 -N -r1.3 -r1.4 --- openacs-4/packages/acs-core-docs/www/openacs.adp 8 Nov 2017 09:42:11 -0000 1.3 +++ openacs-4/packages/acs-core-docs/www/openacs.adp 25 Apr 2018 08:38:28 -0000 1.4 @@ -3,11 +3,11 @@ Install OpenACS 5.9.0 -
    + leftLink="aolserver4" leftLabel="Prev" + title="Chapter 3. Complete +Installation" + rightLink="win2k-installation" rightLabel="Next"> +

    Install OpenACS 5.9.0

    <authorblurb>

    by Vinod Kurup

    </authorblurb>
    @@ -61,8 +61,7 @@ /var/lib/aolserver, one subdirectory per site. The first time you install an OpenACS site on a server, you must create the parent directory and set its -permissions:

    -[root root]# mkdir /var/lib/aolserver
    +permissions:

    [root root]# mkdir /var/lib/aolserver
     [root root]# chgrp web /var/lib/aolserver
     [root root]# chmod 770 /var/lib/aolserver
     [root root]#
    @@ -83,8 +82,7 @@
     cvs tree, at /etc/install. Use anonymous CVS checkout to get that
     directory in the home directory of the service's dedicated
     user. We put it there so that it is not overwritten when we do the
    -main CVS checkout to the target location.

    -[root root]# su - $OPENACS_SERVICE_NAME
    +main CVS checkout to the target location.

    [root root]# su - $OPENACS_SERVICE_NAME
     
     [$OPENACS_SERVICE_NAME $OPENACS_SERVICE_NAME]$ cvs -d :pserver:anonymous\@cvs.openacs.org:/cvsroot co -d install openacs-4/etc/install
     cvs server: Updating install
    @@ -119,9 +117,8 @@
     admin email   : admin\@yourserver.net
     admin password: xxxx
     ######################################################################
    -[root root]#
    -

    You can proceed to the section -called “Next Steps”.

    +[root root]#

    You can proceed to the section +called “Next Steps”.

    Installation Option 2: Install from @@ -137,8 +134,7 @@ $OPENACS_SERVICE_NAME to a colon: chown -R $OPENACS_SERVICE_NAME:$OPENACS_SERVICE_NAME $OPENACS_SERVICE_NAME -

    -[root root]# su - $OPENACS_SERVICE_NAME
    +

    [root root]# su - $OPENACS_SERVICE_NAME
     
     [$OPENACS_SERVICE_NAME $OPENACS_SERVICE_NAME]$ cd /var/lib/aolserver
     [$OPENACS_SERVICE_NAME aolserver]$ tar xzf /var/tmp/openacs-5.9.0.tgz
    @@ -171,22 +167,19 @@
     
  • Prepare Oracle for -OpenACS.  If you won't be using Oracle, -skip to Prepare PostgreSQL for +OpenACS.  If you won't be using Oracle, skip to +Prepare PostgreSQL for an OpenACS Service

    You should be sure that your user account (e.g. $OPENACS_SERVICE_NAME) is in the dba group.

    1. -

      Verify membership by typing groups when you login:

      -[$OPENACS_SERVICE_NAME ~]$ groups
      -dba web
      -

      If you do not see these groups, take the following action:

      +

      Verify membership by typing groups when you login:

      [$OPENACS_SERVICE_NAME ~]$ groups
      +dba web

      If you do not see these groups, take the following action:

       [$OPENACS_SERVICE_NAME ~]$ su -
       Password: ************
       [root ~]# adduser $OPENACS_SERVICE_NAME dba
       

      If you get an error about an undefined group, then add that -group manually:

      -[root ~]# groupadd dba
      +group manually:

      [root ~]# groupadd dba
       [root ~]# groupadd web
       

      Make sure to logout as root when you are finished with this step and log back in as your @@ -195,20 +188,17 @@

      Connect to Oracle using svrmgrl and login:

       [$OPENACS_SERVICE_NAME ~]$ svrmgrl
       SVRMGR> connect internal
      -Connected.
      -
      +Connected.
    2. -

      Determine where the system tablespaces are stored:

      -SVRMGR> select file_name from dba_data_files;
      +

      Determine where the system tablespaces are stored:

      SVRMGR> select file_name from dba_data_files;
       

      Example results:

       /ora8/m01/app/oracle/oradata/ora8/system01.dbf
       /ora8/m01/app/oracle/oradata/ora8/tools01.dbf
       /ora8/m01/app/oracle/oradata/ora8/rbs01.dbf
       /ora8/m01/app/oracle/oradata/ora8/temp01.dbf
       /ora8/m01/app/oracle/oradata/ora8/users01.dbf
       /ora8/m01/app/oracle/oradata/ora8/indx01.dbf
      -/ora8/m01/app/oracle/oradata/ora8/drsys01.dbf
      -
      +/ora8/m01/app/oracle/oradata/ora8/drsys01.dbf
    3. Using the above output, you should determine where to store your tablespace. As a general rule, you'll want to store your tablespace on a mount point under the /ora8 directory that is separate from the @@ -229,8 +219,7 @@ [root ~]# chown $OPENACS_SERVICE_NAME:web /ora8/m02/oradata/ora8 [root ~]# chmod 775 /ora8/m02/oradata/ora8 [root ~]# exit -[$OPENACS_SERVICE_NAME ~]$ -

  • +[$OPENACS_SERVICE_NAME ~]$
  • Create a tablespace for the service. It is important that the tablespace can autoextend. This @@ -266,9 +255,8 @@ SVRMGR> exit;

    Your table space is now ready. In case you are trying to delete a previous OpenACS installation, consult these commands in -the section called -“Deleting a tablespace” -below.

    +the section called “Deleting a +tablespace” below.

  • Make sure that you can login to Oracle using your service_name account:

     [$OPENACS_SERVICE_NAME ~]$ sqlplus $OPENACS_SERVICE_NAME/$OPENACS_SERVICE_NAMEpassword
    @@ -281,9 +269,8 @@
     

    You should see today's date in a format 'YYYY-MM-DD.' If you can't login, try redoing step 1 again. If the date is in the wrong format, make sure you followed -the steps outlined in the section called -“Troubleshooting Oracle -Dates” +the steps outlined in the section called “Troubleshooting +Oracle Dates”

  • @@ -299,22 +286,19 @@ if one exists. We currently use postgres "super-users" for everything, which means that anyone with access to any of the OpenACS system accounts on a machine has full access to all -postgresql databases on that machine.

    -[root root]# su - postgres
    +postgresql databases on that machine.

    [root root]# su - postgres
     [postgres pgsql]$ createuser -a -d $OPENACS_SERVICE_NAME
     
     CREATE USER
     [postgres pgsql]$ exit
     logout
    -[root root]#
    -
    +[root root]#
  • Create a database with the same name as our service name, $OPENACS_SERVICE_NAME. The full pathname for createdb needs to be used, since the pgsql directory has not been added to -the $OPENACS_SERVICE_NAME bash profile.

    -[root root]# su - $OPENACS_SERVICE_NAME
    +the $OPENACS_SERVICE_NAME bash profile.

    [root root]# su - $OPENACS_SERVICE_NAME
     
     [$OPENACS_SERVICE_NAME $OPENACS_SERVICE_NAME]$ /usr/local/pgsql/bin/createdb -E UNICODE $OPENACS_SERVICE_NAME
     
    @@ -330,7 +314,7 @@
     automate vacuuming is to edit the cron file for the database user.
     Recommended: VACUUM ANALYZE
     every hour and VACUUM FULL
    -ANALYZE every day.

    +ANALYZE every day.

     [$OPENACS_SERVICE_NAME $OPENACS_SERVICE_NAME]$ export EDITOR=emacs;crontab -e
     

    Add these lines to the file. The vacuum command cleans up temporary structures within a PostGreSQL database, and can improve @@ -361,8 +345,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, /var/lib/aolserver/$OPENACS_SERVICE_NAME/etc/config.tcl. -Open it in an editor to adjust the parameters.

    -[root root]# su - $OPENACS_SERVICE_NAME
    +Open it in an editor to adjust the parameters.

    [root root]# su - $OPENACS_SERVICE_NAME
     
     [$OPENACS_SERVICE_NAME $OPENACS_SERVICE_NAME]$ cd /var/lib/aolserver/$OPENACS_SERVICE_NAME/etc
     [$OPENACS_SERVICE_NAME etc]$ emacs config.tcl
    @@ -433,13 +416,11 @@
     indicated in the comments.

    If you are root then killall will affect all OpenACS services on the machine, so if there's more than one you'll have to do ps -auxw | grep nsd and -selectively kill by job number.

    -[$OPENACS_SERVICE_NAME etc]$ killall nsd
    +selectively kill by job number.

    [$OPENACS_SERVICE_NAME etc]$ killall nsd
     nsd: no process killed
     [$OPENACS_SERVICE_NAME $OPENACS_SERVICE_NAME]$ /usr/local/aolserver/bin/nsd-postgres -t /var/lib/aolserver/$OPENACS_SERVICE_NAME/etc/config.tcl
     [$OPENACS_SERVICE_NAME $OPENACS_SERVICE_NAME]$ [08/Mar/2003:18:13:29][32131.8192][-main-] Notice: nsd.tcl: starting to read config file...
    -[08/Mar/2003:18:13:29][32131.8192][-main-] Notice: nsd.tcl: finished reading config file.
    -
    +[08/Mar/2003:18:13:29][32131.8192][-main-] Notice: nsd.tcl: finished reading config file.
  • Attempt to connect to the service from a web browser. You should specify a URL like: http://yourserver.test:8000 @@ -462,8 +443,8 @@

  • Configure a Service with the OpenACS -Installer.  Now that you've got AOLserver -up and running, let's install OpenACS 5.9.0.

      +Installer.  Now that you've got AOLserver up and +running, let's install OpenACS 5.9.0.

      • You should see a page from the webserver titled OpenACS Installation: Welcome. You will be warned if your version of the database driver is out of date, if AOLserver cannot connect to the database, if any modules are @@ -475,8 +456,7 @@ data model - be prepared to wait a few minutes as it works. You should see a string of output messages from the database as the datamodel is created. You'll see the line:

        -Loading package .info files ... this will take a few minutes
        -

        This will really take a few minutes. Have faith! Finally, +Loading package .info files ... this will take a few minutes

        This will really take a few minutes. Have faith! Finally, another Next button will appear at the bottom - click it.

      • The following page shows the results of loading the core package @@ -530,39 +510,35 @@ backups.

      • If you want traffic reports, set up analog or another log processing program.

      • Follow the instruction on the home page to change the appearance of your service or add more packages. (more -information)

      • Proceed to the tutorial -to learn how to develop your own packages.

      • +information)

      • Proceed to the tutorial to learn +how to develop your own packages.

      • Set up database environment variables for the site user. Depending on how you installed Oracle or PostGreSQL, these settings may be necessary for working with the database while logged in as the service user. They do not directly affect the service's run-time connection with the database, because those environmental variables are set by the wrapper scripts nsd-postgres and -nsd-oracle.

        -[root root]# su - $OPENACS_SERVICE_NAME
        +nsd-oracle.

        [root root]# su - $OPENACS_SERVICE_NAME
         
         [$OPENACS_SERVICE_NAME $OPENACS_SERVICE_NAME]$ emacs .bashrc
         

        Put in the appropriate lines for the database you are running. If you will use both databases, put in both sets of lines.

        • PostgreSQL:

           export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/pgsql/lib
          -export PATH=$PATH:/usr/local/pgsql/bin
          -
          +export PATH=$PATH:/usr/local/pgsql/bin
      • Oracle. These environment variables are specific for a local Oracle installation communicating via IPC. If you are connecting to a remote Oracle installation, you'll need to adjust these appropriately. Also, make sure that the '8.1.7' matches -your Oracle version.

        -export ORACLE_BASE=/ora8/m01/app/oracle
        +your Oracle version.

        export ORACLE_BASE=/ora8/m01/app/oracle
         export ORACLE_HOME=$ORACLE_BASE/product/8.1.7
         export PATH=$PATH:$ORACLE_HOME/bin
         export LD_LIBRARY_PATH=$ORACLE_HOME/lib:/lib:/usr/lib
         export ORACLE_SID=ora8
         export ORACLE_TERM=vt100
        -export ORA_NLS33=$ORACLE_HOME/ocommon/nls/admin/data
        -
        +export ORA_NLS33=$ORACLE_HOME/ocommon/nls/admin/data

      Test this by logging out and back in as $OPENACS_SERVICE_NAME and checking the paths.

      @@ -576,33 +552,29 @@
       

      For PostgreSQL, you should see:

       LD_LIBRARY_PATH=:/usr/local/pgsql/lib
       PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin:/usr/bin/X11:/usr/X11R6/bin:\
      -  /root/bin:/usr/local/pgsql/bin:/usr/local/pgsql/bin
      -
      + /root/bin:/usr/local/pgsql/bin:/usr/local/pgsql/bin
    • -

      For Oracle:

      -ORACLE_BASE=/ora8/m01/app/oracle
      +

      For Oracle:

      ORACLE_BASE=/ora8/m01/app/oracle
       ORACLE_HOME=/ora8/m01/app/oracle/product/8.1.7
       PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin:/usr/bin/X11:/usr/X11R6/bin:\
         /root/bin:/ora8/m01/app/oracle/product/8.1.7/bin
       LD_LIBRARY_PATH=/ora8/m01/app/oracle/product/8.1.7/lib:/lib:/usr/lib
       ORACLE_SID=ora8
       ORACLE_TERM=vt100
      -ORA_NLS33=$ORACLE_HOME/ocommon/nls/admin/data
      -
      +ORA_NLS33=$ORACLE_HOME/ocommon/nls/admin/data
    -
  • Test your backup and -recovery procedure.

  • Set up the section called -“External uptime -validation”.

  • +
  • Test your backup and recovery +procedure.

  • Set up the section called “External uptime +validation”.

  • ($‌Id: openacs.xml,v 1.32 2017/08/07 23:47:55 gustafn Exp $)

    - \ No newline at end of file + homeLink="index" homeLabel="Home" + upLink="complete-install" upLabel="Up"> + \ No newline at end of file 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 -N -r1.53 -r1.54 --- openacs-4/packages/acs-core-docs/www/openacs.html 8 Nov 2017 09:42:11 -0000 1.53 +++ openacs-4/packages/acs-core-docs/www/openacs.html 25 Apr 2018 08:38:28 -0000 1.54 @@ -328,7 +328,7 @@ /usr/local/pgsql/bin/createdb -E UNICODE $OPENACS_SERVICE_NAME
  • 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: VACUUM ANALYZE every hour and VACUUM FULL ANALYZE every day.

    - +
    [$OPENACS_SERVICE_NAME $OPENACS_SERVICE_NAME]$ export EDITOR=emacs;crontab -e

    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 man 5 crontab for more information.

    0 1-23 * * * /usr/local/pgsql/bin/vacuumdb --analyze $OPENACS_SERVICE_NAME
    @@ -361,7 +361,7 @@
     	  uses a configuration file included in the OpenACS tarball,
     	  /var/lib/aolserver/$OPENACS_SERVICE_NAME/etc/config.tcl.
     	   Open it in an editor to adjust the parameters.

    - +
    [root root]# su - $OPENACS_SERVICE_NAME
     [$OPENACS_SERVICE_NAME $OPENACS_SERVICE_NAME]$ cd /var/lib/aolserver/$OPENACS_SERVICE_NAME/etc
    Index: openacs-4/packages/acs-core-docs/www/oracle.adp
    ===================================================================
    RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/oracle.adp,v
    diff -u -N -r1.3 -r1.4
    --- openacs-4/packages/acs-core-docs/www/oracle.adp	8 Nov 2017 09:42:11 -0000	1.3
    +++ openacs-4/packages/acs-core-docs/www/oracle.adp	25 Apr 2018 08:38:28 -0000	1.4
    @@ -3,11 +3,11 @@
     Install Oracle 8.1.7
     
     
    -		
    + leftLink="unix-installation" leftLabel="Prev" + title="Chapter 3. Complete +Installation" + rightLink="postgres" rightLabel="Next"> +

    Install Oracle 8.1.7

    <authorblurb>

    By Vinod Kurup

    </authorblurb>

    If you are installing PostGreSQL instead of Oracle, skip this @@ -65,7 +65,7 @@ expect that you used the defaults, so a change made here will necessitate further changes later. For a guide to the defaults, please see the section -called “Defaults”.

    In order for OpenACS to work properly you need to set the +called “Defaults”.

    In order for OpenACS to work properly you need to set the environment appropriately.

     export ORACLE_BASE=/ora8/m01/app/oracle
     export ORACLE_HOME=$ORACLE_BASE/product/8.1.7
    @@ -75,12 +75,9 @@
     export ORACLE_TERM=vt100
     export ORA_NLS33=$ORACLE_HOME/ocommon/nls/admin/data
     
    -umask 022
    -
    -open_cursors = 500
    -
    -nls_date_format = "YYYY-MM-DD"
    -

    For additional resources/documentation, please see this +umask 022

    +open_cursors = 500
    +nls_date_format = "YYYY-MM-DD"

    For additional resources/documentation, please see this thread and Andrew Piskorski's mini-guide.

  • @@ -92,14 +89,12 @@
  • Login as a non-root user and start X by typing startx

    -[joeuser ~]$ startx
    -
    +[joeuser ~]$ startx
  • Open a terminal window type and login as root

     [joeuser ~]$ su -
     Password: ***********
    -[root ~]#
    -
    +[root ~]#
  • Create and setup the oracle group and oracle account

    We need to create a user oracle, which is used to install the @@ -108,8 +103,7 @@ [root ~]# groupadd oinstall [root ~]# groupadd oracle [root ~]# useradd -g dba -G oinstall,oracle -m oracle -[root ~]# passwd oracle -

    You will be prompted for the New Password and Confirmation of +[root ~]# passwd oracle

    You will be prompted for the New Password and Confirmation of that password.

  • Setup the installation location for Oracle. While Oracle can @@ -122,33 +116,27 @@ root:/ora8# cd /ora8 root:/ora8# mkdir -p m01 m02 m03/oradata/ora8 root:/ora8# chown -R oracle.dba /ora8 -root:/ora8# exit - +root:/ora8# exit

  • Set up the oracle user's environment

    • Log in as the user oracle by typing the following:

       [joeuser ~]$ su - oracle
      -Password: ********
      -
      +Password: ********
    • Use a text editor to edit the .bash_profile file in the oracle account home directory.

      -[oracle ~]$ emacs .bash_profile
      -

      You may get this error trying to start emacs:

      +[oracle ~]$ emacs .bash_profile

      You may get this error trying to start emacs:

       Xlib: connection to ":0.0" refused by server
       Xlib: Client is not authorized to connect to Server
       emacs: Cannot connect to X server :0.
       Check the DISPLAY environment variable or use `-d'.
       Also use the `xhost' program to verify that it is set to permit
      -connections from your machine.
      -

      If so, open a new terminal window and do the following:

      -[joeuser ~]$ xhost +localhost
      -

      Now, back in the oracle terminal:

      +connections from your machine.

      If so, open a new terminal window and do the following:

      +[joeuser ~]$ xhost +localhost

      Now, back in the oracle terminal:

       [oracle ~]$ export DISPLAY=localhost:0.0
      -[oracle ~]$ emacs .bash_profile
      -

      Try this procedure anytime you get an Xlib connection refused +[oracle ~]$ emacs .bash_profile

      Try this procedure anytime you get an Xlib connection refused error.

    • Add the following lines (substituting your Oracle version number @@ -161,43 +149,37 @@ export ORACLE_TERM=vt100 export ORA_NLS33=$ORACLE_HOME/ocommon/nls/admin/data -umask 022 -

      Save the file by typing CTRL-X +umask 022

      Save the file by typing CTRL-X CTRL-S and then exit by typing CTRL-X CTRL-C. Alternatively, use the menus.

    Make sure that you do not add any lines like the following

     # NLS_LANG=american
    -# export NLS_LANG
    -

    These lines will change the Oracle date settings and will break +# export NLS_LANG

    These lines will change the Oracle date settings and will break OpenACS since OpenACS depends on the ANSI date format, YYYY-MM-DD dates.

  • Log out as oracle

    -[oracle ~]$ exit
    -
    +[oracle ~]$ exit
  • Log back in as oracle and double check that your environment variables are as intended. The env command lists all of the variables that are set in your environment, and grep shows you just the lines you want (those with ORA in it).

     [joeuser ~]$ su - oracle
    -[oracle ~]$ env | grep ORA
    -

    If it worked, you should see:

    +[oracle ~]$ env | grep ORA

    If it worked, you should see:

     ORACLE_SID=ora8
     ORACLE_BASE=/ora8/m01/app/oracle
     ORACLE_TERM=vt100
     ORACLE_HOME=/ora8/m01/app/oracle/product/8.1.7
    -ORA_NLS33=/ora8/m01/app/oracle/product/8.1.7/ocommon/nls/admin/data
    -

    If not, try adding the files to ~/.bashrc instead of .bash_profile. Then logout and log back in +ORA_NLS33=/ora8/m01/app/oracle/product/8.1.7/ocommon/nls/admin/data

    If not, try adding the files to ~/.bashrc instead of .bash_profile. Then logout and log back in again. Also, be certain you are doing su - oracle and not just su oracle. The - means that .bashrc and .bash_profile will be evaluated.

    Make sure that /bin, /usr/bin, and /usr/local/bin are in your path by typing:

     [oracle ~]$ echo $PATH
    -/bin:/usr/bin:/usr/local/bin:/usr/bin/X11:/usr/X11R6/bin:/home/oracle/bin:/ora8/m01/app/oracle/product/8.1.7/bin
    -

    If they are not, then add them to the .bash_profile by changing the PATH +/bin:/usr/bin:/usr/local/bin:/usr/bin/X11:/usr/X11R6/bin:/home/oracle/bin:/ora8/m01/app/oracle/product/8.1.7/bin

    If they are not, then add them to the .bash_profile by changing the PATH statement above to PATH=$PATH:/usr/local/bin:$ORACLE_HOME/bin

  • @@ -211,8 +193,7 @@ [joeuser ~]$ xhost +localhost [joeuser ~]$ su - oracle Password: ********** -[oracle ~]$ export DISPLAY=localhost:0.0 - +[oracle ~]$ export DISPLAY=localhost:0.0
  • Find the runInstaller script

      @@ -223,24 +204,20 @@ [oracle ~]$ su - root [root ~]# mount -t iso9660 /dev/cdrom /mnt/cdrom [root ~]# exit -[oracle ~]$ cd /mnt/cdrom - +[oracle ~]$ cd /mnt/cdrom
    • If you are installing from the tarball, the install script is located in the Oracle8iR2 directory that was created when you expanded the archive.

      -[oracle ~]$ cd /where/oracle/Disk1
      -
      +[oracle ~]$ cd /where/oracle/Disk1

    Check to make sure the file is there.

     oracle:/where/oracle/Disk1$ ls
    -doc  index.htm  install  runInstaller  stage  starterdb
    -

    If you don't see runInstaller, you are in the wrong +doc index.htm install runInstaller stage starterdb

    If you don't see runInstaller, you are in the wrong directory.

  • Run the installer

    -oracle:/where/oracle/Disk1$ ./runInstaller
    -

    A window will open that welcomes you to the 'Oracle +oracle:/where/oracle/Disk1$ ./runInstaller

    A window will open that welcomes you to the 'Oracle Universal Installer' (OUI). Click on "Next"

    Note

    Some people have had trouble with this step on RedHat 7.3 and 8.0. If so, try the following steps before calling ./runInstaller:

      @@ -256,8 +233,8 @@ "(wherever you mounted the CDROM)/stage/products.jar"

    1. "destination" path says "/ora8/m01/app/oracle/product/8.1.7"

      If the destination is not correct it is because your environment variables are not set properly. Make sure you logged on as -oracle using su - oracle. If so, edit the ~/.bash_profile as you did in the section called -“Pre-Installation Tasks” +oracle using su - oracle. If so, edit the ~/.bash_profile as you did in the section called “Pre-Installation +Tasks”

    2. Click "Next" (a pop up window will display Loading Product information).

    3. @@ -270,20 +247,17 @@

      Debian users need to link /bin/awk to /usr/bin/awk before running the script below

       [joueser ~]$ su -
      -[root ~]# ln -s /usr/bin/awk /bin/awk
      -
      +[root ~]# ln -s /usr/bin/awk /bin/awk
  • -

    Open a new terminal window, then type:

    -[joeuser ~]$ su -
    +

    Open a new terminal window, then type:

    [joeuser ~]$ su -
     [root ~]# cd /ora8/m01/app/oracle/product/8.1.7
     [root ~]# ./orainstRoot.sh  
     ; You should see:
     Creating Oracle Inventory pointer file (/etc/oraInst.loc)
     Changing groupname of /ora8/m01/app/oracle/oraInventory to oinstall.
     [root ~]# mkdir -p /usr/local/java
     [root ~]# exit
    -[joeuser ~]$ exit
    -
    +[joeuser ~]$ exit
  • Click "Retry"

  • @@ -370,14 +344,12 @@ created by the Oracle Enterprise Manager Intelligent Agent. These files may be found in the directories you use for storing other Net8 log and trace files. - If such files exist, the OEM IA may not restart. - + If such files exist, the OEM IA may not restart.
  • Do not follow the instructions on deleting trace and log files, it is not necessary.

  •  [root ~]# exit
    -[joeuser ~]$ exit
    -
    +[joeuser ~]$ exit
  • Go back to the pop-up window and click "OK"

  • The "Configuration Tools" screen in the OUI

    • This window displays the config tools that will automatically be launched.

    @@ -440,8 +412,7 @@ [joeuser ~]$ su - oracle Password: ********* [oracle ~]$ export DISPLAY=localhost:0.0 -[oracle ~]$ dbassist - +[oracle ~]$ dbassist
  • The "Welcome" screen in the Oracle Database Configuration Agent (ODCA)

      @@ -487,21 +458,18 @@ Assuming your $ORACLE_HOME matches our default of /ora8/m01/app/oracle/product/8.1.7, the following will open the file for editing.

      -[oracle ~]$ emacs /ora8/m01/app/oracle/product/8.1.7/dbs/initora8.ora
      -
      +[oracle ~]$ emacs /ora8/m01/app/oracle/product/8.1.7/dbs/initora8.ora
    • Add the following line to the end:

      -nls_date_format = "YYYY-MM-DD"
      -
      +nls_date_format = "YYYY-MM-DD"
    • Now find the open_cursors line in the file. If you're using emacs scroll up to the top of the buffer and do CTRL-S and type open_cursors to find the line. The default is 100. Change it to 500.

      -open_cursors = 500
      -
      +open_cursors = 500
    • Save the file. In emacs, do CTRL-X CTRL-S to save followed by CTRL-X CTRL-C to exit or use the menu.

    • At this point, you are ready to initiate database creation. We recommend shutting down X to free up some RAM unless you have 256 @@ -512,8 +480,7 @@

      Change to the directory where the database creation script is and run it:

       [oracle ~]$ cd /ora8/m01/app/oracle/product/8.1.7/assistants/dbca/jlib
      -oracle:/ora8/m01/app/oracle/product/8.1.7/assistants/dbca/jlib$ ./sqlora8.sh
      -

      In some instances, Oracle will save the file to /ora8/m01/app/oracle/product/8.1.7/assistants/dbca +oracle:/ora8/m01/app/oracle/product/8.1.7/assistants/dbca/jlib$ ./sqlora8.sh

      In some instances, Oracle will save the file to /ora8/m01/app/oracle/product/8.1.7/assistants/dbca Try running the script there if your first attempt does not succeed.

    • @@ -533,34 +500,28 @@ Save the file to /var/tmp

    • In the oracle shell, copy the file.

      -[oracle ~]$ cp /var/tmp/acceptance-sql.txt /var/tmp/acceptance.sql
      -
      +[oracle ~]$ cp /var/tmp/acceptance-sql.txt /var/tmp/acceptance.sql
    • Once you've got the acceptance test file all set, stay in your term and type the following:

      -[oracle ~]$ sqlplus system/manager
      -

      SQL*Plus should startup. If you get an ORA-01034: Oracle not Available error, it +[oracle ~]$ sqlplus system/manager

      SQL*Plus should startup. If you get an ORA-01034: Oracle not Available error, it is because your Oracle instance is not running. You can manually start it as the oracle user.

       [oracle ~]$ svrmgrl
       SVRMGR> connect internal
      -SVRMGR> startup
      -
      +SVRMGR> startup
    • Now that you're into SQL*Plus, change the default passwords for system, sys, and ctxsys to "alexisahunk" (or to something you'll remember):

       SQL> alter user system identified by alexisahunk;
       SQL> alter user sys identified by alexisahunk;
      -SQL> alter user ctxsys identified by alexisahunk;
      -
      +SQL> alter user ctxsys identified by alexisahunk;
    • Verify that your date settings are correct.

      -SQL> select sysdate from dual;
      -

      If you don't see a date that fits the format YYYY-MM-DD, please read the section called -“Troubleshooting Oracle -Dates”.

      +SQL> select sysdate from dual;

      If you don't see a date that fits the format YYYY-MM-DD, please read the section called “Troubleshooting +Oracle Dates”.

    • At this point we are going to hammer your database with an intense acceptance test. This usually takes around 30 minutes.

      @@ -573,19 +534,17 @@
       ----------
       2000-06-10
       
      -SQL>
      -

      Many people encounter an error regarding maximum key length:

      +SQL>

      Many people encounter an error regarding maximum key length:

       ERROR at line 1:
      -ORA-01450: maximum key length (758) exceeded
      -

      This error occurs if your database block size is wrong and is +ORA-01450: maximum key length (758) exceeded

      This error occurs if your database block size is wrong and is usually suffered by people trying to load OpenACS into a pre-existing database. Unfortunately, the only solution is to create a new database with a block size of at least 4096. For instructions on how to do this, -see the section called -“Creating the First Database” -above. You can set the parameter using the dbassist program or by setting the -DB_BLOCK_SIZE parameter in your -database's creation script.

      If there were no errors, then consider yourself fortunate. Your +see the section called “Creating the +First Database” above. You can set the parameter using the +dbassist program or by setting +the DB_BLOCK_SIZE parameter in +your database's creation script.

      If there were no errors, then consider yourself fortunate. Your Oracle installation is working.

    @@ -601,24 +560,21 @@ distribution does not work out of the box. The fix is simple. Follow these directions to apply it. First, save dbstart to /var/tmp. Then, as oracle, do the following:

     [oracle ~]$ cp /var/tmp/dbstart.txt /ora8/m01/app/oracle/product/8.1.7/bin/dbstart 
    -[oracle ~]$ chmod 755 /ora8/m01/app/oracle/product/8.1.7/bin/dbstart
    -
    +[oracle ~]$ chmod 755 /ora8/m01/app/oracle/product/8.1.7/bin/dbstart
  • While you're logged in as oracle, you should configure the oratab file to load your database at start. Edit the file /etc/oratab:

    • You will see this line.

      -ora8:/ora8/m01/app/oracle/product/8.1.7:N
      -

      By the way, if you changed the service name or have multiple +ora8:/ora8/m01/app/oracle/product/8.1.7:N

      By the way, if you changed the service name or have multiple databases, the format of this file is:

      service_name:$ORACLE_HOME:Y || N (for autoload)

    • Change the last letter from "N" to "Y". This tells Oracle that you want the database to start when the machine boots. It should look like this.

      -ora8:/ora8/m01/app/oracle/product/8.1.7:Y
      -
      +ora8:/ora8/m01/app/oracle/product/8.1.7:Y
    • Save the file & quit the terminal.

  • @@ -630,8 +586,7 @@ [oracle ~]$ su - [root ~]# cp /var/tmp/oracle8i.txt /etc/rc.d/init.d/oracle8i [root ~]# chown root.root /etc/rc.d/init.d/oracle8i -[root ~]# chmod 755 /etc/rc.d/init.d/oracle8i - +[root ~]# chmod 755 /etc/rc.d/init.d/oracle8i
  • Test the script by typing the following commands and checking the output. (Debian Users: as root, do mkdir /var/lock/subsys first)

    @@ -677,8 +632,7 @@
     
     Database "ora8" warm started.
     
    -Database "ora8" warm started.
    -
    +Database "ora8" warm started.
  • If it worked, then run these commands to make the startup and shutdown automatic.

      @@ -688,8 +642,7 @@ [root ~]# chkconfig --add oracle8i [root ~]# chkconfig --list oracle8i ; You should see: -oracle8i 0:off 1:off 2:off 3:on 4:on 5:on 6:off - +oracle8i 0:off 1:off 2:off 3:on 4:on 5:on 6:off
    • Debian users:

       [root ~]# update-rc.d oracle8i defaults
      @@ -700,8 +653,7 @@
          /etc/rc2.d/S20oracle8i -> ../init.d/oracle8i
          /etc/rc3.d/S20oracle8i -> ../init.d/oracle8i
          /etc/rc4.d/S20oracle8i -> ../init.d/oracle8i
      -   /etc/rc5.d/S20oracle8i -> ../init.d/oracle8i
      -
      + /etc/rc5.d/S20oracle8i -> ../init.d/oracle8i
    • SuSE users:

       [root ~]# cd /etc/rc.d/init.d
      @@ -743,8 +695,7 @@
       Executing /sbin/conf.d/SuSEconfig.tetex...
       Executing /sbin/conf.d/SuSEconfig.ypclient...
       Processing index files of all manpages...
      -Finished.
      -
      +Finished.
  • @@ -764,8 +715,7 @@ [oracle ~]$ exit [root ~]# cp /var/tmp/listener8i.txt /etc/rc.d/init.d/listener8i [root ~]# cd /etc/rc.d/init.d -root:/etc/rc.d/init.d# chmod 755 listener8i -

    Test the listener automation by running the following commands +root:/etc/rc.d/init.d# chmod 755 listener8i

    Test the listener automation by running the following commands and checking the output.

     root:/etc/rc.d/init.d# ./listener8i stop
     Oracle 8i listener start/stop
    @@ -808,8 +758,7 @@
     Services Summary...
       PLSExtProc        has 1 service handler(s)
       ora8      has 1 service handler(s)
    -The command completed successfully
    -

    This test will verify that the listener is operating normally. +The command completed successfully

    This test will verify that the listener is operating normally. Login into the database using the listener naming convention.

    sqlplususername/password/\@SID

    @@ -824,16 +773,14 @@
     
     SQL> exit
     [oracle ~]$ exit
    -[root ~]#
    -
      +[root ~]#
      • RedHat users:

        Now run chkconfig on the listener8i script.

         [root ~]# cd /etc/rc.d/init.d/
         root:/etc/rc.d/init.d# chkconfig --add listener8i
         root:/etc/rc.d/init.d# chkconfig --list listener8i
        -listener8i      0:off   1:off   2:off   3:on    4:on    5:on    6:off
        -
        +listener8i 0:off 1:off 2:off 3:on 4:on 5:on 6:off
      • Debian users:

        Now run update-rc.d on the listener8i script.

        @@ -845,20 +792,17 @@
            /etc/rc2.d/S21listener8i -> ../init.d/listener8i
            /etc/rc3.d/S21listener8i -> ../init.d/listener8i
            /etc/rc4.d/S21listener8i -> ../init.d/listener8i
        -   /etc/rc5.d/S21listener8i -> ../init.d/listener8i
        -
        + /etc/rc5.d/S21listener8i -> ../init.d/listener8i
    • Test the automation

      As a final test, reboot your computer and make sure Oracle comes up. You can do this by typing

      -[root ~]# /sbin/shutdown -r -t 0 now
      -

      Log back in and ensure that Oracle started automatically.

      +[root ~]# /sbin/shutdown -r -t 0 now

      Log back in and ensure that Oracle started automatically.

       [joeuser ~]$ su - oracle
       [oracle ~]$ sqlplus system/alexisahunk\@ora8
       
      -SQL> exit
      -
      +SQL> exit

    Congratulations, your installation of Oracle 8.1.7 is complete.

    @@ -874,17 +818,14 @@ 'YYYY-MM-DD'.

    To fix this, you should include the following line in $ORACLE_HOME/dbs/initSID.ora or for the default case, $ORACLE_HOME/dbs/initora8.ora

    -nls_date_format = "YYYY-MM-DD"
    -

    You test whether this solved the problem by firing up +nls_date_format = "YYYY-MM-DD"

    You test whether this solved the problem by firing up sqlplus and typing:

    -SQL> select sysdate from dual;
    -

    You should see back a date like 2000-06-02. If some of the date is chopped +SQL> select sysdate from dual;

    You should see back a date like 2000-06-02. If some of the date is chopped off, i.e. like 2000-06-0, everything is still fine. The problem here is that sqlplus is simply truncating the output. You can fix this by typing:

     SQL> column sysdate format a15
    -SQL> select sysdate from dual;
    -

    If the date does not conform to this format, double-check that +SQL> select sysdate from dual;

    If the date does not conform to this format, double-check that you included the necessary line in the init scripts. If it still isn't working, make sure that you have restarted the database since adding the line:

    @@ -896,16 +837,13 @@
     Database dismounted.
     ORACLE instance shut down.
     SVRMGR> startup
    -ORACLE instance started.
    -

    If you're sure that you have restarted the database since +ORACLE instance started.

    If you're sure that you have restarted the database since adding the line, check your initialization scripts. Make sure that the following line is not included:

    -export nls_lang = american
    -

    Setting this environment variable will override the date +export nls_lang = american

    Setting this environment variable will override the date setting. Either delete this line and login again or add the following entry to your login scripts after the nls_lang line:

    -export nls_date_format = 'YYYY-MM-DD'
    -

    Log back in again. If adding the nls_date_format line doesn't help, you +export nls_date_format = 'YYYY-MM-DD'

    Log back in again. If adding the nls_date_format line doesn't help, you can ask for advice in our OpenACS forums.

  • @@ -914,28 +852,25 @@

    Dropping a tablespace

    • Run sqlplus as the dba:

      -[oracle ~]$ sqlplus system/changeme
      -
      +[oracle ~]$ sqlplus system/changeme
    • To drop a user and all of the tables and data owned by that user:

      -SQL> drop user oracle_user_name cascade;
      -
      +SQL> drop user oracle_user_name cascade;
    • To drop the tablespace: This will delete everything in the tablespace overriding any referential integrity constraints. Run this command only if you want to clean out your database entirely.

      -SQL> drop tablespace table_space_name including contents cascade constraints;
      -
      +SQL> drop tablespace table_space_name including contents cascade constraints;

    For more information on Oracle, please consult the documentation.

    Oracle Next Steps

    the -section called “Creating an appropriate tuning -and monitoring environment”

    +section called “Creating an appropriate tuning and monitoring +environment”

    Defaults

    We used the following defaults while installing Oracle.

    @@ -965,9 +900,9 @@ - \ No newline at end of file + rightLink="postgres" rightLabel="Next" rightTitle="Install PostgreSQL" + homeLink="index" homeLabel="Home" + upLink="complete-install" upLabel="Up"> + \ No newline at end of file Index: openacs-4/packages/acs-core-docs/www/os-install.adp =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/os-install.adp,v diff -u -N -r1.2 -r1.3 --- openacs-4/packages/acs-core-docs/www/os-install.adp 7 Aug 2017 23:47:51 -0000 1.2 +++ openacs-4/packages/acs-core-docs/www/os-install.adp 25 Apr 2018 08:38:28 -0000 1.3 @@ -3,20 +3,19 @@ Linux Install Guides -
    + leftLink="install-origins" leftLabel="Prev" + title="Appendix C. Credits" + rightLink="os-security" rightLabel="Next"> +

    Linux Install Guides

    Here's a list of some helpful documentation for installing OpenACS on various operating systems

    - \ No newline at end of file + rightLink="os-security" rightLabel="Next" rightTitle="Security Information" + homeLink="index" homeLabel="Home" + upLink="credits" upLabel="Up"> + \ No newline at end of file Index: openacs-4/packages/acs-core-docs/www/os-security.adp =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/os-security.adp,v diff -u -N -r1.2 -r1.3 --- openacs-4/packages/acs-core-docs/www/os-security.adp 7 Aug 2017 23:47:51 -0000 1.2 +++ openacs-4/packages/acs-core-docs/www/os-security.adp 25 Apr 2018 08:38:28 -0000 1.3 @@ -3,11 +3,10 @@ Security Information -
    + leftLink="os-install" leftLabel="Prev" + title="Appendix C. Credits" + rightLink="install-resources" rightLabel="Next"> +

    Security Information

    Once you get your OS installed, it's imperative that you secure your installation. As Jon Griffin repeatedly warns us, @@ -24,8 +23,8 @@

    - \ No newline at end of file + leftLink="os-install" leftLabel="Prev" leftTitle="Linux Install Guides" + rightLink="install-resources" rightLabel="Next" rightTitle="Resources" + homeLink="index" homeLabel="Home" + upLink="credits" upLabel="Up"> + \ No newline at end of file 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 -N -r1.6 -r1.7 --- openacs-4/packages/acs-core-docs/www/packages.adp 18 Apr 2018 08:07:33 -0000 1.6 +++ openacs-4/packages/acs-core-docs/www/packages.adp 25 Apr 2018 08:38:28 -0000 1.7 @@ -3,11 +3,11 @@ OpenACS Packages -
    + leftLink="dev-guide" leftLabel="Prev" + title="Chapter 11. Development +Reference" + rightLink="objects" rightLabel="Next"> +

    OpenACS Packages

    <authorblurb>

    By Pete Su and Bryan Quinn

    </authorblurb>

    @@ -22,11 +22,11 @@

    Server file layout

    Here is how an OpenACS 5 server is laid out starting from the Server root (ROOT):

    -

    Figure 11.1. Server file layout +

    Figure 11.1. Server file layout diagram

     ROOT/
         bin/
    -        Various executables and scripts for server maintanence.
    +        Various executables and scripts for server maintenance.
         content-repository-content-files/
             content repository content stored in the filesystem.
         etc/
    @@ -41,8 +41,7 @@
         tcl/
             bootstrap code
         www/
    -        Pages not in packages (static content, customized pages)
    -
    + Pages not in packages (static content, customized pages)


    @@ -62,7 +61,7 @@ To illustrate the general structure of a package, let's see what the package for the "notes" application should look like.

    -

    Figure 11.2. Package file layout +

    Figure 11.2. Package file layout diagram

     ROOT/
       +-- packages/    APM Root
    @@ -120,8 +119,7 @@
             |     |     +-- *.adp                             UI Templates
             |     |     +-- *-oracle.xql                      Oracle-specific Queries
             |     |     +-- *-postgresql.xql                  PostgreSQL-specific Queries
    -        +-- Other package directories.
    -
    + +-- Other package directories.


    All file locations are relative to the package root, which in this case is ROOT/packages/notes. The following table describes in detail what each of the files up in the diagram @@ -133,7 +131,7 @@ .tcl or .adp files are not sourced in these directories. This makes it suitable for storing icons, css files, javascript, and other static content which can be treated this way.

    -

    Table 11.1. Package +

    Table 11.1. Package files

    @@ -324,8 +322,7 @@ this point, you should add your package files to your CVS repository. I'll assume that you have set up your development repository according to the standards described in this appendix. If so, then -you just do this:

    -% cd ROOT/packages
    +you just do this:

    % cd ROOT/packages
     % cvs add notes
     % cd notes
     % cvs add notes.info
    @@ -334,8 +331,7 @@
     % cvs add *.sql
     % cd ROOT/packages/notes
     % cvs commit -m "add new package for notes"
    -    
    -
    +
  • Now you can start developing the package. In addition to writing code, you should also consider the tasks outlined in the package development tutorial.

  • @@ -398,15 +394,15 @@ Additional Reading

    ($‌Id: packages.xml,v 1.10 2017/08/07 -23:47:54 gustafn Exp $)

    +

    ($‌Id: packages.xml,v 1.13 2018/04/22 +19:24:37 gustafn Exp $)

    - + homeLink="index" homeLabel="Home" + upLink="dev-guide" upLabel="Up"> + \ No newline at end of file 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 -N -r1.56 -r1.57 --- openacs-4/packages/acs-core-docs/www/packages.html 18 Apr 2018 08:07:33 -0000 1.56 +++ openacs-4/packages/acs-core-docs/www/packages.html 25 Apr 2018 08:38:28 -0000 1.57 @@ -27,12 +27,12 @@ Here is how an OpenACS 5 server is laid out starting from the Server root (ROOT):

    -

    Figure 11.1. Server file layout diagram

    +

    Figure 11.1. Server file layout diagram

     ROOT/
         bin/
    -        Various executables and scripts for server maintanence.
    +        Various executables and scripts for server maintenance.
         content-repository-content-files/
             content repository content stored in the filesystem.
         etc/
    @@ -81,7 +81,7 @@
           package for the "notes" application should look like.
         

    -

    Figure 11.2. Package file layout diagram

    +

    Figure 11.2. Package file layout diagram

     ROOT/
    @@ -162,7 +162,7 @@
           this way.
         

    -

    Table 11.1. Package files

    +

    Table 11.1. Package files

    +
    File TypeIts UseNaming Convention
    Package Specification FileThe package specification file is an XML file generated and maintained by the OpenACS Package Manager (APM). It specifies 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 -N -r1.3 -r1.4 --- openacs-4/packages/acs-core-docs/www/parties.adp 8 Nov 2017 09:42:11 -0000 1.3 +++ openacs-4/packages/acs-core-docs/www/parties.adp 25 Apr 2018 08:38:28 -0000 1.4 @@ -3,11 +3,11 @@ Parties in OpenACS -
    + leftLink="subsites" leftLabel="Prev" + title="Chapter 11. Development +Reference" + rightLink="permissions-tediously-explained" rightLabel="Next"> +

    Parties in OpenACS

    <authorblurb>

    By Rafael H. Schloming @@ -326,9 +326,9 @@

    - \ No newline at end of file + homeLink="index" homeLabel="Home" + upLink="dev-guide" upLabel="Up"> + \ No newline at end of file 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 -N -r1.3 -r1.4 --- openacs-4/packages/acs-core-docs/www/permissions-design.adp 8 Nov 2017 09:42:11 -0000 1.3 +++ openacs-4/packages/acs-core-docs/www/permissions-design.adp 25 Apr 2018 08:38:28 -0000 1.4 @@ -3,11 +3,11 @@ Permissions Design -
    + leftLink="permissions-requirements" leftLabel="Prev" + title="Chapter 15. Kernel +Documentation" + rightLink="groups-requirements" rightLabel="Next"> +

    Permissions Design

    <authorblurb>

    By John Prevost and Rafael H. Schloming @@ -273,8 +273,8 @@

    - \ No newline at end of file + leftLink="permissions-requirements" leftLabel="Prev" leftTitle="Permissions Requirements" + rightLink="groups-requirements" rightLabel="Next" rightTitle="Groups Requirements" + homeLink="index" homeLabel="Home" + upLink="kernel-doc" upLabel="Up"> + \ No newline at end of file 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 -N -r1.3 -r1.4 --- openacs-4/packages/acs-core-docs/www/permissions-requirements.adp 8 Nov 2017 09:42:11 -0000 1.3 +++ openacs-4/packages/acs-core-docs/www/permissions-requirements.adp 25 Apr 2018 08:38:28 -0000 1.4 @@ -3,11 +3,11 @@ Permissions Requirements -
    + leftLink="object-system-design" leftLabel="Prev" + title="Chapter 15. Kernel +Documentation" + rightLink="permissions-design" rightLabel="Next"> +

    Permissions Requirements

    <authorblurb>

    By John McClary Prevost

    </authorblurb>

    @@ -188,8 +188,8 @@

    - \ No newline at end of file + leftLink="object-system-design" leftLabel="Prev" leftTitle="Object Model Design" + rightLink="permissions-design" rightLabel="Next" rightTitle="Permissions Design" + homeLink="index" homeLabel="Home" + upLink="kernel-doc" upLabel="Up"> + \ No newline at end of file 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 -N -r1.3 -r1.4 --- openacs-4/packages/acs-core-docs/www/permissions-tediously-explained.adp 8 Nov 2017 09:42:11 -0000 1.3 +++ openacs-4/packages/acs-core-docs/www/permissions-tediously-explained.adp 25 Apr 2018 08:38:28 -0000 1.4 @@ -3,11 +3,11 @@ OpenACS Permissions Tediously Explained -
    + leftLink="parties" leftLabel="Prev" + title="Chapter 11. Development +Reference" + rightLink="object-identity" rightLabel="Next"> +

    OpenACS Permissions Tediously Explained

    by Vadim Nasardinov. Modified and converted to Docbook XML by @@ -50,8 +50,7 @@ constraint acs_objects_context_object_un unique (context_id, object_id) disable ); - -

    This means that items that want to use the features of the +

    This means that items that want to use the features of the OpenACS object system needs to have an entry in the acs_objects. This allows developers to define relationships between any two entities A and B by defining a relationship between their corresponding entries in the acs_objects table. One of the applications @@ -63,8 +62,7 @@ pretty_name varchar2(100), pretty_plural varchar2(100) ); - -

    +    
       create table acs_permissions (
           object_id
               not null
    @@ -78,8 +76,7 @@
           constraint acs_permissions_pk
               primary key (object_id, grantee_id, privilege)
       );
    -    
    -

    The acs_privileges table +

    The acs_privileges table stores named privileges like read, write, delete, create, and admin. The acs_permissions table stores assertions of the form:

    Who (grantee_id) can do what (privilege) on which object @@ -130,7 +127,7 @@ Context Hierarchy

    Suppose objects A, B, ..., and F form the following hierarchy.

    -

    Table 11.2. Context Hierarchy +

    Table 11.2. Context Hierarchy Example

    @@ -156,7 +153,7 @@

    This can be represented in the acs_objects table by the following entries:

    -

    Table 11.3. acs_objects example +

    Table 11.3. acs_objects example data

    @@ -257,8 +254,7 @@ constraint acs_object_context_index_pk primary key (object_id, ancestor_id) ) organization index; - -

    A few things to note about this table are these. Number one, it +

    A few things to note about this table are these. Number one, it is an index-organized table, which means it is substantially optimized for access by primary key. Number two, as the above computations suggest, the size of the table grows @@ -304,15 +300,12 @@

    @@ -361,8 +353,7 @@ constraint acs_privilege_hierarchy_pk primary key (privilege, child_privilege) ); - -

    As in the case of the context hierarchy, it is convenient to +

    As in the case of the context hierarchy, it is convenient to have a flattened representation of this hierarchal structure. This is accomplished by defining the following view.

       create or replace view acs_privilege_descendant_map
    @@ -385,8 +376,7 @@
              prior child_privilege = privilege
           )
         or p2.privilege = p1.privilege;
    -    
    -

    As the number of different privileges in the system is expected +

    As the number of different privileges in the system is expected to be reasonably small, there is no pressing need to cache the flattened ansector-descendant view of the privilege hierarchy in a specially maintained table like it is done in the case of the @@ -412,8 +402,7 @@ constraint parties_email_un unique, url varchar2(200) ); - -

    +    
       create table persons (
           person_id
               not null
    @@ -424,8 +413,7 @@
           last_name            varchar2(100)
               not null
       );
    -    
    -
    +    
       create table users (
           user_id
               not null
    @@ -434,18 +422,15 @@
           password        char(40),
           -- other attributes
       );
    -    
    -
    - 
    +    
     
       create table groups (
           group_id
               not null
               constraint groups_group_id_fk references parties (party_id)
               constraint groups_pk primary key,
           group_name           varchar2(100) not null
       );
    -    
    -

    Recall that the grantee_id +

    Recall that the grantee_id column of the acs_permissions table references parties.party_id. This means that you can grant a privilege on an object to a party, person, user, or group. @@ -476,8 +461,7 @@ constraint acs_object_rels_un unique (rel_type, object_id_one, object_id_two) ); - -

    +    
       create table membership_rels (
           rel_id
               constraint membership_rel_rel_id_fk references acs_rels (rel_id)
    @@ -487,8 +471,7 @@
               constraint membership_rel_mem_ck
                check (member_state in ('approved', 'banned', 'rejected', 'deleted'))
       );
    -    
    -

    The acs_rels table +

    The acs_rels table entries would look like so:


    A
    object_id=10
    readable by Joe
    -       


    B
    object_id=20
    readable by Joe
    -               


    C
    object_id=30
    security_inherit_p = 'f'
    not readable by Joe
    -       

    @@ -322,7 +315,6 @@       


    F
    object_id=60
    security_inherit_p = 'f'
    not readable by Joe
    -       

    @@ -515,8 +498,7 @@ constraint composition_rels_rel_id_fk references acs_rels (rel_id) constraint composition_rels_rel_id_pk primary key ); - -

    The relevant entries in the acs_rels look +

    The relevant entries in the acs_rels look like so.

    @@ -537,7 +519,7 @@ or not a user is member of a group is similar to the one discussed above in the case of the context hierarchy. Groups can form hierarchies with respect to the composition relationship. The -compositon relationship is transitive. If G1 is a subgroup of G2, and G2 is a subgroup of G3, then G1 is a subgroup of G3; that is, any member of G1 is also a member of G3.

    Traversing the group composition hierarchy requires running +composition relationship is transitive. If G1 is a subgroup of G2, and G2 is a subgroup of G3, then G1 is a subgroup of G3; that is, any member of G1 is also a member of G3.

    Traversing the group composition hierarchy requires running hierarchical queries, which are expensive in Oracle. As we saw in the Context Hierarchy section, one way of reducing the performance @@ -562,8 +544,7 @@ constraint group_component_index_pk primary key (group_id, component_id, rel_id) ) organization index; - -

    +    
       create table group_member_index (
           group_id
               not null
    @@ -580,8 +561,7 @@
           constraint group_member_index_pk
               primary key (member_id, group_id, rel_id)
       ) organization index;
    -    
    -

    The group_component_index +

    The group_component_index table stores a flattened representation of the group composition hierarchy that is maintained in sync with the acs_rels and composition_rels tables through @@ -616,8 +596,7 @@ where mr.rel_id = r.rel_id and r.object_id_one = gci.component_id; - -

    A heuristic way to verify that group_member_view is essentially identical +

    A heuristic way to verify that group_member_view is essentially identical to group_member_index is to compute the symmetric difference between the two:

     select
    @@ -637,8 +616,7 @@
        minus
        select group_id, member_id from group_member_view
       )
    -    
    -

    The query returns no rows. The important point is, if we have a +

    The query returns no rows. The important point is, if we have a flattened view of the composition hierarchy -- like one provided by the group_component_index table -- membership relationship resolution can be computed @@ -649,8 +627,7 @@

    Putting It All Together

    Security information is queried by calling the acs_permission.permission_p function in -OpenACS. This is accessible from Tcl via the permission::permission_p procedure.

    -  
    +OpenACS. This is accessible from Tcl via the permission::permission_p procedure.

      
       create or replace package body acs_permission
       as
         -- some stuff removed for the sake of brevity
    @@ -673,8 +650,7 @@
         end;
     
       end acs_permission;
    -    
    -

    problem +

    problem avoidance

    The function queries acs_object_party_privilege_map, which is a humongous view that joins three flattened hierarchies: the context tree, the privilege @@ -686,8 +662,7 @@ would ultimately result in a query error.

    For example, do not try to do things like

     select count(*)
       from acs_object_party_privilege_map;
    -    
    -

    To give another example of things to avoid, I have seen code +

    To give another example of things to avoid, I have seen code like this:

       declare
           cursor cur is
    @@ -713,18 +688,15 @@
     
       end;
       /
    -    
    -

    The acs_permission.revoke_permission function -merely runs a delete statement like so:

    -  
    +    

    The acs_permission.revoke_permission function +merely runs a delete statement like so:

      
       delete from
          acs_permissions
       where
          object_id = revoke_permission.object_id
          and grantee_id = revoke_permission.grantee_id
          and privilege = revoke_permission.privilege;
    -    
    -

    Note that in the above example, acs_permissions had only one entry that +

    Note that in the above example, acs_permissions had only one entry that needed to be deleted:

    @@ -759,8 +731,7 @@ privilege from acs_object_grantee_priv_map; - -
    +    
     create or replace view acs_object_grantee_priv_map
     as
     select
    @@ -772,9 +743,7 @@
       acs_privilege_descendant_map m
     where
       a.privilege = m.privilege;
    -    
    -
    - 
    +    
     
     create or replace view acs_permissions_all
     as
     select
    @@ -786,8 +755,7 @@
       acs_permissions p
     where
       op.ancestor_id = p.object_id;
    -    
    -
    +    
     create or replace view acs_object_paths
     as
     select
    @@ -796,9 +764,7 @@
       n_generations
     from
       acs_object_context_index;
    -    
    -
    - 
    +    
     
     
     create or replace view group_member_map
     as
    @@ -809,13 +775,12 @@
       container_id
     from
       group_member_index;
    -    
    -
    + - \ No newline at end of file + leftLink="parties" leftLabel="Prev" leftTitle="Parties in OpenACS" + rightLink="object-identity" rightLabel="Next" rightTitle="Object Identity" + homeLink="index" homeLabel="Home" + upLink="dev-guide" upLabel="Up"> + \ No newline at end of file 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 -N -r1.48 -r1.49 --- openacs-4/packages/acs-core-docs/www/permissions-tediously-explained.html 8 Nov 2017 09:42:11 -0000 1.48 +++ openacs-4/packages/acs-core-docs/www/permissions-tediously-explained.html 25 Apr 2018 08:38:28 -0000 1.49 @@ -149,7 +149,7 @@ and F form the following hierarchy.

    -

    Table 11.2. Context Hierarchy Example

    +

    Table 11.2. Context Hierarchy Example

    A @@ -190,7 +190,7 @@ by the following entries:

    -

    Table 11.3. acs_objects example data

    +

    Table 11.3. acs_objects example data

    object_idcontext_id
    2010
    3010
    4020
    5020
    6030

    @@ -646,7 +646,7 @@ The situation we are facing in trying to determine whether or not a user is member of a group is similar to the one discussed above in the case of the context hierarchy. Groups can form hierarchies with - respect to the composition relationship. The compositon relationship is transitive. If + respect to the composition relationship. The composition relationship is transitive. If G1 is a subgroup of G2, and G2 is a subgroup of G3, then G1 is a subgroup of G3; that is, any member of G1 is also a member of G3. 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 -N -r1.3 -r1.4 --- openacs-4/packages/acs-core-docs/www/permissions.adp 8 Nov 2017 09:42:11 -0000 1.3 +++ openacs-4/packages/acs-core-docs/www/permissions.adp 25 Apr 2018 08:38:28 -0000 1.4 @@ -3,11 +3,11 @@ Groups, Context, Permissions -
    + leftLink="templates" leftLabel="Prev" + title="Chapter 11. Development +Reference" + rightLink="subsites" rightLabel="Next"> +

    Groups, Context, Permissions

    <authorblurb>

    By Pete Su

    </authorblurb>

    @@ -198,9 +198,9 @@

    - \ No newline at end of file + homeLink="index" homeLabel="Home" + upLink="dev-guide" upLabel="Up"> + \ No newline at end of file Index: openacs-4/packages/acs-core-docs/www/postgres.adp =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/postgres.adp,v diff -u -N -r1.3 -r1.4 --- openacs-4/packages/acs-core-docs/www/postgres.adp 8 Nov 2017 09:42:11 -0000 1.3 +++ openacs-4/packages/acs-core-docs/www/postgres.adp 25 Apr 2018 08:38:28 -0000 1.4 @@ -3,11 +3,11 @@ Install PostgreSQL -
    + leftLink="oracle" leftLabel="Prev" + title="Chapter 3. Complete +Installation" + rightLink="aolserver4" rightLabel="Next"> +

    Install PostgreSQL

    <authorblurb>

    by Vinod Kurup

    </authorblurb>

    Skip this section if you will run only Oracle.

    OpenACS 5.9.0 will run with PostgreSQL @@ -26,8 +26,8 @@

    - \ No newline at end of file + leftLink="oracle" leftLabel="Prev" leftTitle="Install Oracle 8.1.7" + rightLink="aolserver4" rightLabel="Next" rightTitle="Install AOLserver 4" + homeLink="index" homeLabel="Home" + upLink="complete-install" upLabel="Up"> + \ No newline at end of file Index: openacs-4/packages/acs-core-docs/www/profile-code.adp =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/profile-code.adp,v diff -u -N -r1.3 -r1.4 --- openacs-4/packages/acs-core-docs/www/profile-code.adp 8 Nov 2017 09:42:11 -0000 1.3 +++ openacs-4/packages/acs-core-docs/www/profile-code.adp 25 Apr 2018 08:38:28 -0000 1.4 @@ -3,11 +3,11 @@ Profile your code -
    + leftLink="tutorial-categories" leftLabel="Prev" + title="Chapter 10. Advanced +Topics" + rightLink="tutorial-distribute" rightLabel="Next"> +

    Profile your code

    <authorblurb>

    by Jade Rubick

    </authorblurb>

    There are several facilities for profiling your code in OpenACS. @@ -17,9 +17,9 @@

    - \ No newline at end of file + homeLink="index" homeLabel="Home" + upLink="tutorial-advanced" upLabel="Up"> + \ No newline at end of file Index: openacs-4/packages/acs-core-docs/www/programming-with-aolserver.adp =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/programming-with-aolserver.adp,v diff -u -N -r1.4 -r1.5 --- openacs-4/packages/acs-core-docs/www/programming-with-aolserver.adp 27 Mar 2018 11:18:00 -0000 1.4 +++ openacs-4/packages/acs-core-docs/www/programming-with-aolserver.adp 25 Apr 2018 08:38:28 -0000 1.5 @@ -3,11 +3,11 @@ Programming with AOLserver -
    + leftLink="object-identity" leftLabel="Prev" + title="Chapter 11. Development +Reference" + rightLink="form-builder" rightLabel="Next"> +

    Programming with AOLserver

    <authorblurb>

    By Michael Yoon, Jon Salz and Lars Pind.

    </authorblurb>
    @@ -228,14 +228,14 @@ However, when using ns_set get to perform lookup by name, they perform a linear lookup, whereas arrays use a hash table, so ns_sets are slower than arrays when the -number of entries is large.

    ($‌Id: programming-with-aolserver.xml,v 1.8 -2017/08/07 23:47:54 gustafn Exp $)

    +number of entries is large.

    ($‌Id: programming-with-aolserver.xml,v 1.9 +2017/12/22 13:23:35 gustafn Exp $)

    - + homeLink="index" homeLabel="Home" + upLink="dev-guide" upLabel="Up"> + \ No newline at end of file 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 -N -r1.3 -r1.4 --- openacs-4/packages/acs-core-docs/www/psgml-for-emacs.adp 8 Nov 2017 09:42:11 -0000 1.3 +++ openacs-4/packages/acs-core-docs/www/psgml-for-emacs.adp 25 Apr 2018 08:38:28 -0000 1.4 @@ -3,24 +3,21 @@ Add PSGML commands to emacs init file (OPTIONAL) -
    + leftLink="install-cvs" leftLabel="Prev" + title="Appendix B. Install +additional supporting software" + rightLink="install-daemontools" rightLabel="Next"> +

    Add PSGML commands to emacs init file (OPTIONAL)

    - If you plan to write or edit any + 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 -> -help mis-mapping that often occurs in terminals.

    -[root tmp]# cp /tmp/openacs-5.9.0/packages/acs-core-docs/www/files/emacs.txt /etc/skel/.emacs
    +help mis-mapping that often occurs in terminals.

    [root tmp]# cp /tmp/openacs-5.9.0/packages/acs-core-docs/www/files/emacs.txt /etc/skel/.emacs
     cp: overwrite `/etc/skel/.emacs'? y
    -[root tmp]# 
    -

    Debian users:

    apt-get install psgml

    Note: The new nxml mode for emacs, when used in combination with +[root tmp]#

    Debian users:

    apt-get install psgml

    Note: The new nxml mode for emacs, when used in combination with psgml, provides a pretty good set of functionality that makes DocBook editing much less painless. In particular, nxml does syntax testing in real-time so that you can see syntax errors immediately @@ -29,8 +26,8 @@ nxml.

    - \ No newline at end of file + leftLink="install-cvs" leftLabel="Prev" leftTitle="Initialize CVS (OPTIONAL)" + rightLink="install-daemontools" rightLabel="Next" rightTitle="Install Daemontools (OPTIONAL)" + homeLink="index" homeLabel="Home" + upLink="install-more-software" upLabel="Up"> + \ No newline at end of file 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 -N -r1.43 -r1.44 --- openacs-4/packages/acs-core-docs/www/psgml-for-emacs.html 8 Nov 2017 09:42:11 -0000 1.43 +++ openacs-4/packages/acs-core-docs/www/psgml-for-emacs.html 25 Apr 2018 08:38:28 -0000 1.44 @@ -1,7 +1,7 @@ Add PSGML commands to emacs init file (OPTIONAL)

    Add PSGML commands to emacs init file (OPTIONAL)

    -

    +

    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/psgml-mode.adp =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/psgml-mode.adp,v diff -u -N -r1.3 -r1.4 --- openacs-4/packages/acs-core-docs/www/psgml-mode.adp 8 Nov 2017 09:42:11 -0000 1.3 +++ openacs-4/packages/acs-core-docs/www/psgml-mode.adp 25 Apr 2018 08:38:28 -0000 1.4 @@ -3,11 +3,11 @@ Using PSGML mode in Emacs -

    + leftLink="docbook-primer" leftLabel="Prev" + title="Chapter 13. Documentation +Standards" + rightLink="nxml-mode" rightLabel="Next"> +

    Using PSGML mode in Emacs

    <authorblurb>

    By David Lutterkort

    </authorblurb>

    Note: nxml mode replaces and/or complements psgml mode. More @@ -139,16 +139,15 @@

    -Further reading

    Start with the the section called -“OpenACS Documentation -Guide” +Further reading

    Start with the the section called “OpenACS +Documentation Guide”

    ($‌Id: psgml-mode.xml,v 1.9 2017/08/07 23:47:54 gustafn Exp $)

    - \ No newline at end of file + leftLink="docbook-primer" leftLabel="Prev" leftTitle="OpenACS Documentation Guide" + rightLink="nxml-mode" rightLabel="Next" rightTitle="Using nXML mode in Emacs" + homeLink="index" homeLabel="Home" + upLink="doc-standards" upLabel="Up"> + \ No newline at end of file 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 -N -r1.6 -r1.7 --- openacs-4/packages/acs-core-docs/www/release-notes.adp 18 Apr 2018 09:09:12 -0000 1.6 +++ openacs-4/packages/acs-core-docs/www/release-notes.adp 25 Apr 2018 08:38:28 -0000 1.7 @@ -3,12 +3,11 @@ OpenACS Release Notes -
    + leftLink="openacs-overview" leftLabel="Prev" + title="Chapter 1. High level +information: What is OpenACS?" + rightLink="acs-admin" rightLabel="Next"> +

    OpenACS Release Notes

    @@ -419,13 +418,12 @@

    Altogether, OpenACS 5.9.1 differs from OpenACS 5.9.1 by the following statistics

            3548 files changed, 113292 insertions(+), 90507 deletions(-)
    -    
    -

    contributed by 5 committers (Michael Aram, Gustaf Neumann, +

    contributed by 5 committers (Michael Aram, Gustaf Neumann, Antonio Pisano, Hector Romojaro, Thomas Renner) and 8 patch/bugfix -providers (Frank Bergmann, GÃ&frac14;nter Ernst, Brian -Fenton, Felix Mödritscher, Marcus Moser, Franz Penz, -Stefan Sobernig, Michael Steigman). All packages of the release -were tested with PostgreSQL 9.6.* and Tcl 8.5.*.

    For more details, consult the raw ChangeLog.

    +providers (Frank Bergmann, Günter Ernst, Brian Fenton, Felix +Mödritscher, Marcus Moser, Franz Penz, Stefan Sobernig, Michael +Steigman). All packages of the release were tested with PostgreSQL +9.6.* and Tcl 8.5.*.

    For more details, consult the raw ChangeLog.

    Release 5.9.0

      @@ -523,13 +521,12 @@

    Altogether, OpenACS 5.9.0 differs from OpenACS 5.8.1 by the following statistics

           3658 files changed, 120800 insertions(+), 97617 deletions(-)
    -    
    -

    contributed by 4 committers (Michael Aram, Victor Guerra, Gustaf +

    contributed by 4 committers (Michael Aram, Victor Guerra, Gustaf Neumann, Antonio Pisano) and patch/bugfix providers (Frank -Bergmann, Andrew Helsley, Felix Mödritscher, Marcos -Moser, Franz Penz, Thomas Renner). These are significantly more -changes as the differences in the last releases. All packages of -the release were tested with PostgreSQL 9.4.* and Tcl 8.5.*.

    For more details, consult the raw ChangeLog.

    +Bergmann, Andrew Helsley, Felix Mödritscher, Marcos Moser, Franz +Penz, Thomas Renner). These are significantly more changes as the +differences in the last releases. All packages of the release were +tested with PostgreSQL 9.4.* and Tcl 8.5.*.

    For more details, consult the raw ChangeLog.

    Release 5.8.1

      @@ -709,8 +706,8 @@

    Release 5.1.2

      -
    • Translations synchronized with the translation server. Basque and -Catalan added.

    • For a complete change list, see the Change list since 5.1.0 in +

    • Translations synchronized with the translation server. Basque +and Catalan added.

    • For a complete change list, see the Change list since 5.1.0 in ???.

    @@ -766,11 +763,10 @@ contains work done on the translation server http://translate.openacs.org through 7 Nov 2003.

    Please report bugs using our Bug Tracker at the OpenACS website.

    You may want to begin by reading our installation documentation -for the section called “a -Unix-like system”. Note that the Windows -documentation is not current for OpenACS 5.9.0, but an alternative -is to use John Sequeira's Oasis VM -project.

    After installation, the full documentation set can be found by +for the section called “a Unix-like +system”. Note that the Windows documentation is not current for +OpenACS 5.9.0, but an alternative is to use John Sequeira's +Oasis VM project.

    After installation, the full documentation set can be found by visiting http://yourserver/doc.

    New features in this release:

    • Internationalization support. A message catalog to store translated text, localization of dates, number formatting, timezone @@ -819,26 +815,26 @@ 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/* *~")

    • -

    ($‌Id: release-notes.xml,v 1.31 2017/08/07 -23:47:54 gustafn Exp $)

    +

    ($‌Id: release-notes.xml,v 1.34 2018/04/18 +09:09:12 hectorr Exp $)

    -Release 4.6.3

    Release Notes for 4.6.3

    +Release 4.6.3

    Release Notes for 4.6.3

    -Release 4.6.2

    Release Notes for 4.6.2

    +Release 4.6.2

    Release Notes for 4.6.2

    -Release 4.6

    Release Notes for 4.6

    +Release 4.6

    Release Notes for 4.6

    -Release 4.5

    Release Notes for 4.5

    +Release 4.5

    Release Notes for 4.5

    - + homeLink="index" homeLabel="Home" + upLink="general-documents" upLabel="Up"> + \ No newline at end of file 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 -N -r1.60 -r1.61 --- openacs-4/packages/acs-core-docs/www/release-notes.html 18 Apr 2018 09:09:12 -0000 1.60 +++ openacs-4/packages/acs-core-docs/www/release-notes.html 25 Apr 2018 08:38:28 -0000 1.61 @@ -1457,23 +1457,23 @@ -

    Release 4.6.3

    + -

    Release 4.6.2

    + -

    Release 4.6

    + -

    Release 4.5

    + 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 -N -r1.4 -r1.5 --- openacs-4/packages/acs-core-docs/www/releasing-openacs-core.adp 29 Mar 2018 20:23:42 -0000 1.4 +++ openacs-4/packages/acs-core-docs/www/releasing-openacs-core.adp 25 Apr 2018 08:38:28 -0000 1.5 @@ -3,18 +3,17 @@ OpenACS Core and .LRN -
    + leftLink="releasing-openacs" leftLabel="Prev" + title="Chapter 16. Releasing +OpenACS" + rightLink="update-repository" rightLabel="Next"> +

    OpenACS Core and .LRN

    1. -Update Translations. the section called -“How to Update the -translations” +Update Translations. the section called “How to Update +the translations”

    2. Rebuild the Changelog.  Rebuild the @@ -27,10 +26,9 @@ cvs2cl -F oacs-5-0 --delta openacs-5-0-1-final:oacs-5-0 -f ChangeLog-recent

    3. -Update Version Numbers.  The -version numbers in the documentation and in the packages must be -updated. This should only happen after a release candidate is -approved.

      .LRN: this must be +Update Version Numbers.  The version +numbers in the documentation and in the packages must be updated. +This should only happen after a release candidate is approved.

      .LRN: this must be repeated for .LRN modules (dotlrn-core in the dotlrn cvs tree) and for any modified modules in the .LRN prerequisites (dotlrn-prereq in OpenACS cvs tree). My current working model is that I @@ -46,8 +44,7 @@ /var/lib/aolserver/$OPENACS_SERVICE_NAME/packages/acs-core-docs/www/xml/for-everyone/release-notes.xml

    4. Regenerate all HTML docs

       cd /var/lib/aolserver/$OPENACS_SERVICE_NAME/packages/acs-core-docs/www/xml
      -make
      -
      +make
    5. Update /var/lib/aolserver/$OPENACS_SERVICE_NAME/readme.txt with the new version number

    6. Update version number and release date in all of the core @@ -63,8 +60,8 @@

  • -Tag the files in CVS.  The steps to -this point should have ensured that the head of the current branch +Tag the files in CVS.  The steps to this +point should have ensured that the head of the current branch contains the full set of code to release. Now we need to tag it as the code to be released.

    1. @@ -96,8 +93,7 @@ feature freeze. Branching is almost the same as tagging, except for the flag and slightly different tag nomenclature. To see the list of old branches, cvs status -v -somefile.

      -cvs tag -b oacs-5-0
      +somefile.

      cvs tag -b oacs-5-0
       

    If doing .LRN: Since the .LRN packages aren't all in one module, we iterate through all of the modules. Log in first (cvs @@ -164,27 +160,25 @@

  • -Test the new tarball(s).  Download -the tarballs just created and install them and make sure everything +Test the new tarball(s).  Download the +tarballs just created and install them and make sure everything looks okay and that automated tests pass.

  • -Update Web site.  Update the -different places on OpenACS.org where we track status.

      +Update Web site.  Update the different +places on OpenACS.org where we track status.

      • Release Status for the current version - something like http://openacs.org/projects/openacs/5.0/milestones

      • Home page of openacs.org

      • Post a new news item

    • -Clean Up.  Clean up after -yourself.

      cd /var/tmp
      +Clean Up.  Clean up after yourself.

      cd /var/tmp
       rm -rf tarball dotlrn-tarball dotlrn-packages openacs-5.0.0a1
       rm -rf /var/tmp/openacs-4

    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).

    -#!/bin/bash
    +detailed above until the process is stabilized).

    #!/bin/bash
     
     # if TAG=1 create the cvs tags otherwise assume they exist.
     TAG=1
    @@ -245,7 +239,7 @@
     mkdir tarball
     cd tarball
     cvs -d $OACS_CVSROOT export -r openacs-$OACS_VERSION acs-core
    -mv openacs-4 openacs-${OACS_VERSION//-/.}
    +mv opeancs-4 openacs-${OACS_VERSION//-/.}
     tar -czf ../openacs-${OACS_VERSION//-/.}.tar.gz openacs-${OACS_VERSION//-/.}
     cd ..
     
    @@ -265,14 +259,14 @@
     
     # Clean up after ourselves...
     cd $BASE && rm -rf dotlrn-tarball tarball openacs-4 dotlrn-packages
    -

    ($‌Id: releasing-openacs.xml,v 1.23 -2017/08/07 23:47:54 gustafn Exp $)

    +

    ($‌Id: releasing-openacs.xml,v 1.24 +2017/12/24 13:15:07 gustafn Exp $)

  • - \ No newline at end of file + homeLink="index" homeLabel="Home" + upLink="releasing-openacs" upLabel="Up"> + \ No newline at end of file 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 -N -r1.23 -r1.24 --- openacs-4/packages/acs-core-docs/www/releasing-openacs-core.html 29 Mar 2018 20:23:43 -0000 1.23 +++ openacs-4/packages/acs-core-docs/www/releasing-openacs-core.html 25 Apr 2018 08:38:28 -0000 1.24 @@ -240,7 +240,7 @@ mkdir tarball cd tarball cvs -d $OACS_CVSROOT export -r openacs-$OACS_VERSION acs-core -mv openacs-4 openacs-${OACS_VERSION//-/.} +mv opeancs-4 openacs-${OACS_VERSION//-/.} tar -czf ../openacs-${OACS_VERSION//-/.}.tar.gz openacs-${OACS_VERSION//-/.} cd .. Index: openacs-4/packages/acs-core-docs/www/releasing-openacs.adp =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/releasing-openacs.adp,v diff -u -N -r1.2 -r1.3 --- openacs-4/packages/acs-core-docs/www/releasing-openacs.adp 7 Aug 2017 23:47:52 -0000 1.2 +++ openacs-4/packages/acs-core-docs/www/releasing-openacs.adp 25 Apr 2018 08:38:28 -0000 1.3 @@ -1,15 +1,13 @@ -{/doc/acs-core-docs {ACS Core Documentation}} {Chapter 16. Releasing -OpenACS} -Chapter 16. Releasing -OpenACS +{/doc/acs-core-docs {ACS Core Documentation}} {Chapter 16. Releasing OpenACS} +Chapter 16. Releasing OpenACS -
    + leftLink="ext-auth-requirements" leftLabel="Prev" + title="Part IV. For OpenACS +Platform Developers" + rightLink="releasing-openacs-core" rightLabel="Next"> +

    Chapter 16. Releasing OpenACS

    @@ -22,9 +20,9 @@
    - \ No newline at end of file + rightLink="releasing-openacs-core" rightLabel="Next" rightTitle="OpenACS Core and .LRN" + homeLink="index" homeLabel="Home" + upLink="acs-plat-dev" upLabel="Up"> + \ No newline at end of file Index: openacs-4/packages/acs-core-docs/www/releasing-package.adp =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/releasing-package.adp,v diff -u -N -r1.3 -r1.4 --- openacs-4/packages/acs-core-docs/www/releasing-package.adp 8 Nov 2017 09:42:12 -0000 1.3 +++ openacs-4/packages/acs-core-docs/www/releasing-package.adp 25 Apr 2018 08:38:28 -0000 1.4 @@ -3,11 +3,11 @@ How to package and release an OpenACS Package -
    + leftLink="update-repository" leftLabel="Prev" + title="Chapter 16. Releasing +OpenACS" + rightLink="update-translations" rightLabel="Next"> +

    How to package and release an OpenACS Package

    In this example, we are packaging and releasing myfirstpackage as version 1.0.0, which is @@ -23,9 +23,9 @@ hours, ask for help on the OpenACS.org development forum.

    - \ No newline at end of file + rightLink="update-translations" rightLabel="Next" rightTitle="How to Update the translations" + homeLink="index" homeLabel="Home" + upLink="releasing-openacs" upLabel="Up"> + \ No newline at end of file Index: openacs-4/packages/acs-core-docs/www/remote-postgres.adp =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/remote-postgres.adp,v diff -u -N -r1.3 -r1.4 --- openacs-4/packages/acs-core-docs/www/remote-postgres.adp 8 Nov 2017 09:42:12 -0000 1.3 +++ openacs-4/packages/acs-core-docs/www/remote-postgres.adp 25 Apr 2018 08:38:28 -0000 1.4 @@ -3,11 +3,11 @@ Running a PostgreSQL database on another server -
    + leftLink="database-management" leftLabel="Prev" + title="Chapter 7. Database +Management" + rightLink="install-openacs-delete-tablespace" rightLabel="Next"> +

    Running a PostgreSQL database on another server

    To run a database on a different machine than the webserver @@ -17,11 +17,7 @@

  • Edit the database configuration file, which in a Reference install is located at /usr/local/pgsql/data/postgresql.conf and -change

    -#tcpip_socket = false
    -

    to

    -tcpip_socket = true
    -
    +change

    #tcpip_socket = false

    to

    tcpip_socket = true
  • Change the access control file for the database to permit specific remote clients to access. Access can be controlled ... (add notes from forum post)

  • @@ -32,9 +28,9 @@
  • - \ No newline at end of file + leftLink="database-management" leftLabel="Prev" leftTitle="Chapter 7. Database +Management" + rightLink="install-openacs-delete-tablespace" rightLabel="Next" rightTitle="Deleting a tablespace" + homeLink="index" homeLabel="Home" + upLink="database-management" upLabel="Up"> + \ No newline at end of file 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 -N -r1.3 -r1.4 --- openacs-4/packages/acs-core-docs/www/request-processor.adp 8 Nov 2017 09:42:12 -0000 1.3 +++ openacs-4/packages/acs-core-docs/www/request-processor.adp 25 Apr 2018 08:38:28 -0000 1.4 @@ -3,11 +3,11 @@ The Request Processor -
    + leftLink="objects" leftLabel="Prev" + title="Chapter 11. Development +Reference" + rightLink="db-api" rightLabel="Next"> +

    The Request Processor

    <authorblurb>

    By Pete Su

    </authorblurb>

    @@ -108,9 +108,9 @@

    - \ No newline at end of file + rightLink="db-api" rightLabel="Next" rightTitle="The OpenACS Database Access API" + homeLink="index" homeLabel="Home" + upLink="dev-guide" upLabel="Up"> + \ No newline at end of file Index: openacs-4/packages/acs-core-docs/www/requirements-template.adp =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/requirements-template.adp,v diff -u -N -r1.3 -r1.4 --- openacs-4/packages/acs-core-docs/www/requirements-template.adp 8 Nov 2017 09:42:12 -0000 1.3 +++ openacs-4/packages/acs-core-docs/www/requirements-template.adp 25 Apr 2018 08:38:28 -0000 1.4 @@ -3,11 +3,11 @@ System/Application Requirements Template -
    + leftLink="filename" leftLabel="Prev" + title="Chapter 13. Documentation +Standards" + rightLink="i18n" rightLabel="Next"> +

    System/Application Requirements Template

    <authorblurb>

    By You @@ -129,10 +129,10 @@

    - \ No newline at end of file + homeLink="index" homeLabel="Home" + upLink="doc-standards" upLabel="Up"> + \ No newline at end of file Index: openacs-4/packages/acs-core-docs/www/rp-design.adp =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/rp-design.adp,v diff -u -N -r1.3 -r1.4 --- openacs-4/packages/acs-core-docs/www/rp-design.adp 8 Nov 2017 09:42:12 -0000 1.3 +++ openacs-4/packages/acs-core-docs/www/rp-design.adp 25 Apr 2018 08:38:28 -0000 1.4 @@ -3,11 +3,11 @@ Request Processor Design -
    + leftLink="rp-requirements" leftLabel="Prev" + title="Chapter 15. Kernel +Documentation" + rightLink="tcl-doc" rightLabel="Next"> +

    Request Processor Design

    <authorblurb>

    By Rafael H. Schloming @@ -235,9 +235,9 @@

    - \ No newline at end of file + homeLink="index" homeLabel="Home" + upLink="kernel-doc" upLabel="Up"> + \ No newline at end of file Index: openacs-4/packages/acs-core-docs/www/rp-requirements.adp =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/rp-requirements.adp,v diff -u -N -r1.4 -r1.5 --- openacs-4/packages/acs-core-docs/www/rp-requirements.adp 11 Apr 2018 21:35:06 -0000 1.4 +++ openacs-4/packages/acs-core-docs/www/rp-requirements.adp 25 Apr 2018 08:38:28 -0000 1.5 @@ -3,11 +3,11 @@ Request Processor Requirements -
    + leftLink="security-notes" leftLabel="Prev" + title="Chapter 15. Kernel +Documentation" + rightLink="rp-design" rightLabel="Next"> +

    Request Processor Requirements

    <authorblurb>

    By Rafael H. Schloming @@ -63,7 +63,7 @@ Context

    20.10 The request processor must be able to determine a primary context or state -associated with a pageroot based on its location within the +associated with a pageroot based on it's location within the URL space.

    30.0 Authentication

    30.10 The request @@ -77,8 +77,8 @@

    - + leftLink="security-notes" leftLabel="Prev" leftTitle="Security Notes" + rightLink="rp-design" rightLabel="Next" rightTitle="Request Processor Design" + homeLink="index" homeLabel="Home" + upLink="kernel-doc" upLabel="Up"> + \ No newline at end of file Index: openacs-4/packages/acs-core-docs/www/rp-requirements.html =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/rp-requirements.html,v diff -u -N -r1.36 -r1.37 --- openacs-4/packages/acs-core-docs/www/rp-requirements.html 11 Apr 2018 21:35:06 -0000 1.36 +++ openacs-4/packages/acs-core-docs/www/rp-requirements.html 25 Apr 2018 08:38:28 -0000 1.37 @@ -92,7 +92,7 @@

    20.10 The request processor must be able to determine a primary context -or state associated with a pageroot based on its location within the URL +or state associated with a pageroot based on it's location within the URL space.

    Index: openacs-4/packages/acs-core-docs/www/security-design.adp =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/security-design.adp,v diff -u -N -r1.3 -r1.4 --- openacs-4/packages/acs-core-docs/www/security-design.adp 8 Nov 2017 09:42:12 -0000 1.3 +++ openacs-4/packages/acs-core-docs/www/security-design.adp 25 Apr 2018 08:38:28 -0000 1.4 @@ -3,11 +3,11 @@ Security Design -
    + leftLink="security-requirements" leftLabel="Prev" + title="Chapter 15. Kernel +Documentation" + rightLink="security-notes" rightLabel="Next"> +

    Security Design

    <authorblurb>

    By Richard Li and Archit Shah

    </authorblurb>
    @@ -562,8 +562,8 @@
    - \ No newline at end of file + leftLink="security-requirements" leftLabel="Prev" leftTitle="Security Requirements" + rightLink="security-notes" rightLabel="Next" rightTitle="Security Notes" + homeLink="index" homeLabel="Home" + upLink="kernel-doc" upLabel="Up"> + \ No newline at end of file Index: openacs-4/packages/acs-core-docs/www/security-notes.adp =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/security-notes.adp,v diff -u -N -r1.3 -r1.4 --- openacs-4/packages/acs-core-docs/www/security-notes.adp 8 Nov 2017 09:42:12 -0000 1.3 +++ openacs-4/packages/acs-core-docs/www/security-notes.adp 25 Apr 2018 08:38:28 -0000 1.4 @@ -3,11 +3,11 @@ Security Notes -
    + leftLink="security-design" leftLabel="Prev" + title="Chapter 15. Kernel +Documentation" + rightLink="rp-requirements" rightLabel="Next"> +

    Security Notes

    <authorblurb>

    By Richard Li

    </authorblurb>

    The security system was designed for security. Thus, decisions requiring trade-offs between ease-of-use and security tend to @@ -70,8 +70,8 @@

    - \ No newline at end of file + leftLink="security-design" leftLabel="Prev" leftTitle="Security Design" + rightLink="rp-requirements" rightLabel="Next" rightTitle="Request Processor Requirements" + homeLink="index" homeLabel="Home" + upLink="kernel-doc" upLabel="Up"> + \ No newline at end of file Index: openacs-4/packages/acs-core-docs/www/security-requirements.adp =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/security-requirements.adp,v diff -u -N -r1.3 -r1.4 --- openacs-4/packages/acs-core-docs/www/security-requirements.adp 8 Nov 2017 09:42:12 -0000 1.3 +++ openacs-4/packages/acs-core-docs/www/security-requirements.adp 25 Apr 2018 08:38:28 -0000 1.4 @@ -3,11 +3,11 @@ Security Requirements -
    + leftLink="i18n-requirements" leftLabel="Prev" + title="Chapter 15. Kernel +Documentation" + rightLink="security-design" rightLabel="Next"> +

    Security Requirements

    <authorblurb>

    By Richard Li

    </authorblurb>
    @@ -81,9 +81,9 @@
    - \ No newline at end of file + rightLink="security-design" rightLabel="Next" rightTitle="Security Design" + homeLink="index" homeLabel="Home" + upLink="kernel-doc" upLabel="Up"> + \ No newline at end of file Index: openacs-4/packages/acs-core-docs/www/snapshot-backup.adp =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/snapshot-backup.adp,v diff -u -N -r1.3 -r1.4 --- openacs-4/packages/acs-core-docs/www/snapshot-backup.adp 8 Nov 2017 09:42:12 -0000 1.3 +++ openacs-4/packages/acs-core-docs/www/snapshot-backup.adp 25 Apr 2018 08:38:28 -0000 1.4 @@ -3,11 +3,11 @@ Manual backup and recovery -
    + leftLink="install-next-backups" leftLabel="Prev" + title="Chapter 8. Backup and +Recovery" + rightLink="automated-backup" rightLabel="Next"> +

    Manual backup and recovery

    This section describes how to make a one-time backup and restore of the files and database. This is useful for rolling back to @@ -17,8 +17,7 @@ the information needed to rebuild the site, including the AOLserver config files, is then in tree for regular file system backup.

    1. -

      Back up the database to a -file. 

        +

        Back up the database to a file. 

        • Oracle.  @@ -27,15 +26,13 @@ /var/tmp/export-oracle.txt

        • Login as root. The following commands will install the export -script:

          -[joeuser ~]$ su -
          +script:

          [joeuser ~]$ su -
           [root ~]# cp /var/tmp/export-oracle.txt /usr/sbin/export-oracle
           [root ~]# chmod 700 /usr/sbin/export-oracle
           
        • Setup the export directory; this is the directory where backups -will be stored. We recommend the directory /ora8/m02/oracle-exports.

          -[root ~]# mkdir /ora8/m02/oracle-exports
          +will be stored. We recommend the directory /ora8/m02/oracle-exports.

          [root ~]# mkdir /ora8/m02/oracle-exports
           [root ~]# chown oracle:dba /ora8/m02/oracle-exports
           [root ~]# chmod 770 /ora8/m02/oracle-exports
           
          @@ -46,8 +43,7 @@ their correct values. If you want to use a directory other than /ora8/m02/oracle-exports, you also need to change the exportdir -setting.

          Test the export procedure by running the command:

          -[root ~]# /usr/sbin/export-oracle
          +setting.

          Test the export procedure by running the command:

          [root ~]# /usr/sbin/export-oracle
           mv: /ora8/m02/oracle-exports/oraexport-service_name.dmp.gz: No such file or directory
           
           Export: Release 8.1.6.1.0 - Production on Sun Jun 11 18:07:45 2000
          @@ -82,16 +78,14 @@
             . exporting dimensions
             . exporting post-schema procedural objects and actions
             . exporting statistics
          -Export terminated successfully without warnings.
          -
          +Export terminated successfully without warnings.
      • -PostgreSQL.  Create a backup file and -verify that it was created and has a reasonable size (several -megabytes).

        -[root root]# su - $OPENACS_SERVICE_NAME
        +PostgreSQL. 
        +Create a backup file and verify that it was created and has a
        +reasonable size (several megabytes).

        [root root]# su - $OPENACS_SERVICE_NAME
         [$OPENACS_SERVICE_NAME $OPENACS_SERVICE_NAME]$ pg_dump -f /var/lib/aolserver/$OPENACS_SERVICE_NAME/database-backup/before_upgrade_to_4.6.dmp $OPENACS_SERVICE_NAME
         
         [$OPENACS_SERVICE_NAME $OPENACS_SERVICE_NAME]$ ls -al /var/lib/aolserver/$OPENACS_SERVICE_NAME/database-backup/before_upgrade_to_4.6.dmp 
        @@ -107,9 +101,9 @@
         
    2. -Back up the file system.  Back up -all of the files in the service, including the database backup file -but excluding the auto-generated supervise directory, which is unnecessary and has +Back up the file system.  Back up all of +the files in the service, including the database backup file but +excluding the auto-generated supervise directory, which is unnecessary and has complicated permissions.

      In the tar command,

      • c create a new tar @@ -126,19 +120,16 @@ correct extensions.

      • The last clause, /var/lib/aolserver/$OPENACS_SERVICE_NAME/, specifies the starting point for backup. Tar defaults to recursive backup.

      • -
      -[root root]# su - $OPENACS_SERVICE_NAME
      +
    [root root]# su - $OPENACS_SERVICE_NAME
     
     [$OPENACS_SERVICE_NAME $OPENACS_SERVICE_NAME]$ tar -cpsz --exclude /var/lib/aolserver/$OPENACS_SERVICE_NAME/etc/daemontools/supervise \
        --file /var/tmp/$OPENACS_SERVICE_NAME-backup.tar.gz /var/lib/aolserver/$OPENACS_SERVICE_NAME/
     tar: Removing leading `/' from member names
    -[$OPENACS_SERVICE_NAME $OPENACS_SERVICE_NAME]$
    -
    +[$OPENACS_SERVICE_NAME $OPENACS_SERVICE_NAME]$
  • Suffer a catastrophic failure on your production -system.  (We'll simulate this step)

    -[root root]# svc -d /service/$OPENACS_SERVICE_NAME
    +system.  (We'll simulate this step)

    [root root]# svc -d /service/$OPENACS_SERVICE_NAME
     [root root]# mv /var/lib/aolserver/$OPENACS_SERVICE_NAME/ /var/lib/aolserver/$OPENACS_SERVICE_NAME.lost
     [root root]# rm /service/$OPENACS_SERVICE_NAME
     rm: remove symbolic link `/service/$OPENACS_SERVICE_NAME'? y
    @@ -154,8 +145,7 @@
     DROP USER
     [postgres pgsql]$ exit
     logout
    -[root root]#
    -
    +[root root]#
  • Recovery.  @@ -165,8 +155,7 @@ install material (OS CDs, OpenACS tarball and supporting software) and repeating the install guide. Recreate the service user ($OPENACS_SERVICE_NAME).

  • -

    Restore the OpenACS files and database backup file.

    -[root root]# su - $OPENACS_SERVICE_NAME
    +

    Restore the OpenACS files and database backup file.

    [root root]# su - $OPENACS_SERVICE_NAME
     
     [$OPENACS_SERVICE_NAME $OPENACS_SERVICE_NAME]$ cd /var/lib/aolserver
     [$OPENACS_SERVICE_NAME aolserver]$ tar xzf /var/tmp/$OPENACS_SERVICE_NAME-backup.tar.gz
    @@ -186,9 +175,8 @@
     
  • -Postgres.  If the database user does -not already exist, create it.

    -[root root]# su - postgres
    +Postgres.  If the database user does not
    +already exist, create it.

    [root root]# su - postgres
     [postgres ~]$ createuser $OPENACS_SERVICE_NAME
     
     Shall the new user be allowed to create databases? (y/n) y
    @@ -201,8 +189,7 @@
     create any out-of-order database objects. Next, restore the
     database from the dump file. The restoration will show some error
     messages at the beginning for objects that were pre-created from
    -the OpenACS initialization script, which can be ignored.

    -[root root]# su - $OPENACS_SERVICE_NAME
    +the OpenACS initialization script, which can be ignored.

    [root root]# su - $OPENACS_SERVICE_NAME
     
     [$OPENACS_SERVICE_NAME ~]$ createdb $OPENACS_SERVICE_NAME
     
    @@ -213,13 +200,11 @@
     (many lines omitted)
     [$OPENACS_SERVICE_NAME ~]$ exit
     [postgres ~]$ exit
    -logout
    -
    +logout
  • -

    Activate the service

    -[root root]# ln -s /var/lib/aolserver/$OPENACS_SERVICE_NAME/etc/daemontools /service/$OPENACS_SERVICE_NAME
    +

    Activate the service

    [root root]# ln -s /var/lib/aolserver/$OPENACS_SERVICE_NAME/etc/daemontools /service/$OPENACS_SERVICE_NAME
     
     [root root]# sleep 10
     [root root]# svgroup web /service/$OPENACS_SERVICE_NAME
    @@ -231,8 +216,8 @@
     
  • - \ No newline at end of file + leftLink="install-next-backups" leftLabel="Prev" leftTitle="Backup Strategy" + rightLink="automated-backup" rightLabel="Next" rightTitle="Automated Backup" + homeLink="index" homeLabel="Home" + upLink="backup-recovery" upLabel="Up"> + \ No newline at end of file Index: openacs-4/packages/acs-core-docs/www/style-guide.adp =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/style-guide.adp,v diff -u -N -r1.3 -r1.4 --- openacs-4/packages/acs-core-docs/www/style-guide.adp 8 Nov 2017 09:42:12 -0000 1.3 +++ openacs-4/packages/acs-core-docs/www/style-guide.adp 25 Apr 2018 08:38:28 -0000 1.4 @@ -3,11 +3,11 @@ OpenACS Style Guide -
    + leftLink="eng-standards" leftLabel="Prev" + title="Chapter 12. Engineering +Standards" + rightLink="cvs-guidelines" rightLabel="Next"> +

    OpenACS Style Guide

    By Jeff Davis

    @@ -41,53 +41,52 @@ ignored won't break anything, but if you follow the rules people will be able to understand your package much more easily.

  • -Be literate in your programming.  -Use ad_proc, ad_library, and ad_page_contract to provide -documentation for your code, use comments on your datamodel, -explain what things mean and how they should work.

  • -Test.  Write test cases for your -API and data model; test negative cases as well as positive; -document your tests. Provide tests for bugs which are not yet -fixed. Test, Test, Test.

  • -Use namespaces.  For new packages -choose a namespace and place all procedures in it and in oracle -create packages.

  • +Be literate in your programming.  Use +ad_proc, ad_library, and ad_page_contract to provide documentation +for your code, use comments on your datamodel, explain what things +mean and how they should work.

  • +Test.  Write test cases for your API and +data model; test negative cases as well as positive; document your +tests. Provide tests for bugs which are not yet fixed. Test, Test, +Test.

  • +Use namespaces.  For new packages choose a +namespace and place all procedures in it and in oracle create +packages.

  • Follow the constraint naming and the PL/SQL and PL/pgSQL rules.  Naming constraints is important for upgradability and for consistency. Also, named constraints can be immensely helpful in developing good error handling. Following the PL/SQL and PL/pgSQL rules ensure that the procedures created can be handled similarly across both Oracle and PostgreSQL databases.

  • -Follow the code formatting -guidelines.  The code base is very large and -if things are formatted consistently it is easier to read. Also, if -it conforms to the standard it won't be reformatted (which can -mask the change history and making tracking down bugs much harder). -Using spaces rather than tabs makes patches easier to read and -manage and does not force other programmers to decipher what tab -settings you had in place in your editor.

  • -Use the standard APIs.  Don't -reinvent the wheel. Prefer extending an existing core API to -creating your own. If something in the core does not meet your -particular needs it probably won't meet others as well and -fleshing out the core API's makes the toolkit more useful for -everyone and more easily extended.

  • +Follow the code formatting guidelines.  +The code base is very large and if things are formatted +consistently it is easier to read. Also, if it conforms to the +standard it won't be reformatted (which can mask the change +history and making tracking down bugs much harder). Using spaces +rather than tabs makes patches easier to read and manage and does +not force other programmers to decipher what tab settings you had +in place in your editor.

  • +Use the standard APIs.  Don't reinvent +the wheel. Prefer extending an existing core API to creating your +own. If something in the core does not meet your particular needs +it probably won't meet others as well and fleshing out the core +API's makes the toolkit more useful for everyone and more +easily extended.

  • Make sure your datamodel create/drop scripts work.  Break the table creation out from the package/stored procedure creation and use create or replace where possible so that scripts can be sourced more than once. Make sure your drop script works if data has been inserted (and permissioned and notifications have been attached etc).

  • -Practice CVS/Bug Tracker Hygiene.  -Commit your work. commit with sensible messages and include patch -and bug numbers in your commit messages.

    Create bug tracker tickets for things you are going to work on +Practice CVS/Bug Tracker Hygiene.  Commit +your work. commit with sensible messages and include patch and bug +numbers in your commit messages.

    Create bug tracker tickets for things you are going to work on yourself (just in case you don't get to it and to act as a pointer for others who might encounter the same problem).

  • -Solicit code reviews.  Ask others -to look over your code and provide feedback and do the same for -others.

  • +Solicit code reviews.  Ask others to look +over your code and provide feedback and do the same for others.

    @@ -104,9 +103,9 @@

    - \ No newline at end of file + leftLink="eng-standards" leftLabel="Prev" leftTitle="Chapter 12. Engineering +Standards" + rightLink="cvs-guidelines" rightLabel="Next" rightTitle="CVS Guidelines" + homeLink="index" homeLabel="Home" + upLink="eng-standards" upLabel="Up"> + \ No newline at end of file Index: openacs-4/packages/acs-core-docs/www/subsites-design.adp =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/subsites-design.adp,v diff -u -N -r1.4 -r1.5 --- openacs-4/packages/acs-core-docs/www/subsites-design.adp 11 Apr 2018 21:35:07 -0000 1.4 +++ openacs-4/packages/acs-core-docs/www/subsites-design.adp 25 Apr 2018 08:38:28 -0000 1.5 @@ -3,11 +3,11 @@ Subsites Design Document -
    + leftLink="subsites-requirements" leftLabel="Prev" + title="Chapter 15. Kernel +Documentation" + rightLink="apm-requirements" rightLabel="Next"> +

    Subsites Design Document

    <authorblurb>

    By Rafael H. Schloming @@ -217,7 +217,7 @@

    -Data Model Discussion

    The subsites implementation doesn't really have its own +Data Model Discussion

    The subsites implementation doesn't really have it's own data model, although it depends heavily on the site-nodes data model, and the APM data model.

    @@ -256,8 +256,8 @@
    - + leftLink="subsites-requirements" leftLabel="Prev" leftTitle="Subsites Requirements" + rightLink="apm-requirements" rightLabel="Next" rightTitle="Package Manager Requirements" + homeLink="index" homeLabel="Home" + upLink="kernel-doc" upLabel="Up"> + \ No newline at end of file Index: openacs-4/packages/acs-core-docs/www/subsites-design.html =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/subsites-design.html,v diff -u -N -r1.38 -r1.39 --- openacs-4/packages/acs-core-docs/www/subsites-design.html 11 Apr 2018 21:35:07 -0000 1.38 +++ openacs-4/packages/acs-core-docs/www/subsites-design.html 25 Apr 2018 08:38:28 -0000 1.39 @@ -303,7 +303,7 @@ -

    The subsites implementation doesn't really have its own data +

    The subsites implementation doesn't really have it's own data model, although it depends heavily on the site-nodes data model, and the APM data model.

    Index: openacs-4/packages/acs-core-docs/www/subsites-requirements.adp =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/subsites-requirements.adp,v diff -u -N -r1.3 -r1.4 --- openacs-4/packages/acs-core-docs/www/subsites-requirements.adp 8 Nov 2017 09:42:12 -0000 1.3 +++ openacs-4/packages/acs-core-docs/www/subsites-requirements.adp 25 Apr 2018 08:38:28 -0000 1.4 @@ -3,11 +3,11 @@ Subsites Requirements -
    + leftLink="groups-design" leftLabel="Prev" + title="Chapter 15. Kernel +Documentation" + rightLink="subsites-design" rightLabel="Next"> +

    Subsites Requirements

    <authorblurb>

    By Rafael H. Schloming and @@ -141,8 +141,8 @@

    - \ No newline at end of file + leftLink="groups-design" leftLabel="Prev" leftTitle="Groups Design" + rightLink="subsites-design" rightLabel="Next" rightTitle="Subsites Design Document" + homeLink="index" homeLabel="Home" + upLink="kernel-doc" upLabel="Up"> + \ No newline at end of file Index: openacs-4/packages/acs-core-docs/www/subsites.adp =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/subsites.adp,v diff -u -N -r1.3 -r1.4 --- openacs-4/packages/acs-core-docs/www/subsites.adp 8 Nov 2017 09:42:12 -0000 1.3 +++ openacs-4/packages/acs-core-docs/www/subsites.adp 25 Apr 2018 08:38:28 -0000 1.4 @@ -3,11 +3,11 @@ Writing OpenACS Application Pages -
    + leftLink="permissions" leftLabel="Prev" + title="Chapter 11. Development +Reference" + rightLink="parties" rightLabel="Next"> +

    Writing OpenACS Application Pages

    <authorblurb>

    By Rafael H. Schloming and Pete Su

    </authorblurb>
    @@ -245,8 +245,8 @@
    - \ No newline at end of file + leftLink="permissions" leftLabel="Prev" leftTitle="Groups, Context, Permissions" + rightLink="parties" rightLabel="Next" rightTitle="Parties in OpenACS" + homeLink="index" homeLabel="Home" + upLink="dev-guide" upLabel="Up"> + \ No newline at end of file Index: openacs-4/packages/acs-core-docs/www/tcl-doc.adp =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/tcl-doc.adp,v diff -u -N -r1.3 -r1.4 --- openacs-4/packages/acs-core-docs/www/tcl-doc.adp 8 Nov 2017 09:42:12 -0000 1.3 +++ openacs-4/packages/acs-core-docs/www/tcl-doc.adp 25 Apr 2018 08:38:28 -0000 1.4 @@ -3,11 +3,11 @@ Documenting Tcl Files: Page Contracts and Libraries -
    + leftLink="rp-design" leftLabel="Prev" + title="Chapter 15. Kernel +Documentation" + rightLink="bootstrap-acs" rightLabel="Next"> +

    Documenting Tcl Files: Page Contracts and Libraries

    <authorblurb>

    By Jon Salz on 3 July @@ -225,8 +225,8 @@

    - \ No newline at end of file + leftLink="rp-design" leftLabel="Prev" leftTitle="Request Processor Design" + rightLink="bootstrap-acs" rightLabel="Next" rightTitle="Bootstrapping OpenACS" + homeLink="index" homeLabel="Home" + upLink="kernel-doc" upLabel="Up"> + \ No newline at end of file Index: openacs-4/packages/acs-core-docs/www/templates.adp =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/templates.adp,v diff -u -N -r1.3 -r1.4 --- openacs-4/packages/acs-core-docs/www/templates.adp 8 Nov 2017 09:42:12 -0000 1.3 +++ openacs-4/packages/acs-core-docs/www/templates.adp 25 Apr 2018 08:38:28 -0000 1.4 @@ -3,11 +3,11 @@ Using Templates in OpenACS -
    + leftLink="db-api" leftLabel="Prev" + title="Chapter 11. Development +Reference" + rightLink="permissions" rightLabel="Next"> +

    Using Templates in OpenACS

    <authorblurb>

    By Pete Su

    </authorblurb>

    @@ -155,8 +155,8 @@

    - \ No newline at end of file + leftLink="db-api" leftLabel="Prev" leftTitle="The OpenACS Database Access API" + rightLink="permissions" rightLabel="Next" rightTitle="Groups, Context, Permissions" + homeLink="index" homeLabel="Home" + upLink="dev-guide" upLabel="Up"> + \ No newline at end of file Index: openacs-4/packages/acs-core-docs/www/tutorial-admin-pages.adp =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/tutorial-admin-pages.adp,v diff -u -N -r1.3 -r1.4 --- openacs-4/packages/acs-core-docs/www/tutorial-admin-pages.adp 8 Nov 2017 09:42:12 -0000 1.3 +++ openacs-4/packages/acs-core-docs/www/tutorial-admin-pages.adp 25 Apr 2018 08:38:28 -0000 1.4 @@ -3,11 +3,11 @@ Admin Pages -
    + leftLink="tutorial-comments" leftLabel="Prev" + title="Chapter 10. Advanced +Topics" + rightLink="tutorial-categories" rightLabel="Next"> +

    Admin Pages

    There are at least two flavors of admin user interface:

      @@ -20,17 +20,14 @@ that users aren't interested in or aren't allowed to see you will need dedicated admin pages. The conventional place to put those dedicated admin pages is in the /var/lib/aolserver/$OPENACS_SERVICE_NAME/packages/myfirstpackage/www/admin -directory.

      -[$OPENACS_SERVICE_NAME www]$ mkdir admin
      -
      -[$OPENACS_SERVICE_NAME www]$ cd admin
      +directory.

      [$OPENACS_SERVICE_NAME www]$ mkdir admin
      +
      [$OPENACS_SERVICE_NAME www]$ cd admin
       

      Even if your application doesn't need any admin pages of its own you will usually need at least one simple page with a bunch of links to existing administration UI such as Category Management or standard Parameters UI. Adding the link to Category Management is described in the section on categories. The listing below adds a -link to the Parameters UI of our package.

      -[$OPENACS_SERVICE_NAME admin]$ vi index.adp
      +link to the Parameters UI of our package.

      [$OPENACS_SERVICE_NAME admin]$ vi index.adp
       
       <master>
       <property name="title">\@title;noquote\@</property>
      @@ -39,8 +36,7 @@
       <ul class="action-links">
         <li><a href="\@parameters_url\@" title="Set parameters" class="action_link">Set parameters</a></li>
       </ul>
      -
      -[$OPENACS_SERVICE_NAME admin]$ vi index.tcl
      +
      [$OPENACS_SERVICE_NAME admin]$ vi index.tcl
       
       ad_page_contract {} {
       } -properties {
      @@ -92,8 +88,8 @@
       
    - \ No newline at end of file + leftLink="tutorial-comments" leftLabel="Prev" leftTitle="Adding Comments" + rightLink="tutorial-categories" rightLabel="Next" rightTitle="Categories" + homeLink="index" homeLabel="Home" + upLink="tutorial-advanced" upLabel="Up"> + \ No newline at end of file Index: openacs-4/packages/acs-core-docs/www/tutorial-advanced.adp =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/tutorial-advanced.adp,v diff -u -N -r1.3 -r1.4 --- openacs-4/packages/acs-core-docs/www/tutorial-advanced.adp 8 Nov 2017 09:42:12 -0000 1.3 +++ openacs-4/packages/acs-core-docs/www/tutorial-advanced.adp 25 Apr 2018 08:38:28 -0000 1.4 @@ -3,15 +3,13 @@ Chapter 10. Advanced Topics -
    + leftLink="tutorial-debug" leftLabel="Prev" + title="Part III. For OpenACS +Package Developers" + rightLink="tutorial-specs" rightLabel="Next"> +

    -Chapter 10. Advanced -Topics

    +Chapter 10. Advanced Topics
    - \ No newline at end of file + homeLink="index" homeLabel="Home" + upLink="acs-package-dev" upLabel="Up"> + \ No newline at end of file Index: openacs-4/packages/acs-core-docs/www/tutorial-caching.adp =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/tutorial-caching.adp,v diff -u -N -r1.3 -r1.4 --- openacs-4/packages/acs-core-docs/www/tutorial-caching.adp 8 Nov 2017 09:42:12 -0000 1.3 +++ openacs-4/packages/acs-core-docs/www/tutorial-caching.adp 25 Apr 2018 08:38:28 -0000 1.4 @@ -3,11 +3,11 @@ Basic Caching -
    + leftLink="tutorial-html-email" leftLabel="Prev" + title="Chapter 10. Advanced +Topics" + rightLink="tutorial-schedule-procs" rightLabel="Next"> +

    Basic Caching

    <authorblurb>

    Based on a post by Dave Bauer.

    </authorblurb>

    Caching using the database API is described in the database API tutorial.

    Caching using util_memoize

      @@ -18,13 +18,11 @@ one argument, -foo, so the wrapper passes that on. The wrapper also uses the list command, to ensure that the arguments get passed correctly and to prevent commands passed in as arguments from being -executed.

      -ad_proc my_proc {-foo} {
      +executed.

      ad_proc my_proc {-foo} {
               Get a cached version of my_proc.
       } {
           return [util_memoize [list my_proc_not_cached -foo $foo]]
      -}
      -
      +}
    1. In your code, always call my_proc. There will be a separate cache item for each unique call to my_proc_not_cached so that calls with different arguments are cached separately. You can flush the @@ -46,9 +44,9 @@

    - \ No newline at end of file + rightLink="tutorial-schedule-procs" rightLabel="Next" rightTitle="Scheduled Procedures" + homeLink="index" homeLabel="Home" + upLink="tutorial-advanced" upLabel="Up"> + \ No newline at end of file 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 -N -r1.3 -r1.4 --- openacs-4/packages/acs-core-docs/www/tutorial-categories.adp 8 Nov 2017 09:42:12 -0000 1.3 +++ openacs-4/packages/acs-core-docs/www/tutorial-categories.adp 25 Apr 2018 08:38:28 -0000 1.4 @@ -3,11 +3,11 @@ Categories -
    + leftLink="tutorial-admin-pages" leftLabel="Prev" + title="Chapter 10. Advanced +Topics" + rightLink="profile-code" rightLabel="Next"> +

    Categories

    <authorblurb>

    extended by Nima Mazloumi @@ -30,16 +30,14 @@ market segments etc. Before users of your application can take advantage of the Categories service there needs to be a way for administrators of your application to choose which category trees -are applicable for the application.

    The way to achieve this is is to provide a link to the Category +are applicable for the application.

    The way to achieve this is to provide a link to the Category Management pages. Add the following snippet to your /var/lib/aolserver/$OPENACS_SERVICE_NAME/packages/myfirstpackage/www/admin/index.tcl file:

                       set category_map_url [export_vars -base "[site_node::get_package_url -package_key categories]cadmin/one-object" { { object_id $package_id } }]
    -          
    -

    and the following snippet to your /var/lib/aolserver/$OPENACS_SERVICE_NAME/packages/myfirstpackage/www/admin/index.adp +

    and the following snippet to your /var/lib/aolserver/$OPENACS_SERVICE_NAME/packages/myfirstpackage/www/admin/index.adp file:

                       <a href="\@category_map_url\@">#­categories.Site_wide_Categories#</a>
    -          
    -

    The link created by the above code (category_map_url) will take the admin to +

    The link created by the above code (category_map_url) will take the admin to the generic admin UI where he can pick category trees that make sense for this application. The same UI also includes facilities to build and edit category trees. Notice that the only parameter in @@ -79,8 +77,7 @@ ad_returnredirect "." ad_script_abort } - -

    While the category::ad_form::add_widgets proc is +

    While the category::ad_form::add_widgets proc is taking care to extend your form with associated categories you need to ensure that your items are mapped to the corresponding category object yourself. Also since the categories package knows nothing @@ -89,8 +86,7 @@ listed in the categories browser by title.

    Make sure that you also delete these entries if your item is delete. Add this to your corresponding delete page:

                             db_dml delete_named_object "delete from acs_named_objects where object_id = :item_id"
    -                        
    -

    +

    note-edit.tcl requires a note_id to determine which record should be deleted. It also looks for a confirmation @@ -104,8 +100,7 @@ delete the record, set redirection back to the index, and abort script execution.

    The database commands:

     [$OPENACS_SERVICE_NAME\@yourserver www]$ emacs note-delete.xql
    -
    -<?xml version="1.0"?>
    +
    <?xml version="1.0"?>
     <queryset>
       <fullquery name="do_delete">
         <querytext>
    @@ -117,17 +112,15 @@
           select samplenote__name(:note_id)
         </querytext>
       </fullquery>
    -</queryset>
    -

    And the adp page:

    +</queryset>

    And the adp page:

     [$OPENACS_SERVICE_NAME\@yourserver www]$ emacs note-delete.adp
     
     <master>
     <property name="title">\@title\@</property>
     <property name="context">{\@title\@}</property>
     <h2>\@title\@</h2>
     <formtemplate id="note-del-confirm"></formtemplate>
    -</form>
    -

    The ADP is very simple. The formtemplate tag outputs the HTML form +</form>

    The ADP is very simple. The formtemplate tag outputs the HTML form generated by the ad_form command with the matching name. Test it by adding the new files in the APM and then deleting a few samplenotes.

    @@ -139,14 +132,12 @@ and the default value "0".

    Add the following lines to your index.tcl:

               set return_url [ns_conn url]
               set use_categories_p [parameter::get -parameter "EnableCategoriesP"]
    -          
    -

    Change your to this:

    +          

    Change your to this:

                             <a href=configure?<%=[export_vars -url {return_url}]%>>Configure</a>
                             <if \@use_categories_p\@>
                             <a href="\@category_map_url\@">#­categories.Site_wide_Categories#</a>
                             </if>
    -          
    -

    Now create a configure page

    +          

    Now create a configure page

                     ad_page_contract {
                             This page allows an admin to change the categories usage mode.
                             } {
    @@ -171,31 +162,27 @@
                                     ns_returnredirect $return_url
                             }
                             }
    -           
    -

    and add this to its corresponding ADP page

    +           

    and add this to its corresponding ADP page

                     <master>
                             <property name="title">\@title\@</property>
                             <property name="context">\@context\@</property>
     
                             <formtemplate id="categories_mode"></formtemplate>
    -              
    -

    Reference this page from your admin page

    +              

    Reference this page from your admin page

                     #TCL:
                     set return_url [ad_conn url]
     
                     #ADP:
                     <a href=configure?<%=[export_vars -url {return_url}]%>>Configure</a>
    -                
    -

    Change the note-edit.tcl:

    +                

    Change the note-edit.tcl:

                     # Use Categories?
                     set use_categories_p [parameter::get -parameter "EnableCategoriesP" -default 0]
                     if { $use_categories_p == 1 } {
                             # YOUR NEW FORM DEFINITION
                     } else {
                     # YOUR OLD FORM DEFINITION
                     }
    -        
    -
    +
  • You can filter your notes using categories. The below example does not support multiple filters and displays a category in a flat @@ -206,8 +193,7 @@ YOURPARAMS {category_id:integer,optional {}} } - -

    Now you have to check whether categories are enabled or not. If +

    Now you have to check whether categories are enabled or not. If this is the case and a category id is passed you need to extend your sql select query to support filtering. One way would be to extend the mfp::note::get proc @@ -234,8 +220,7 @@ } else { # OLD STUFF } - -

    Also you need to make sure that the user can see the +

    Also you need to make sure that the user can see the corresponding categories. Add the following snippet to the end of your index page:

               # Site-Wide Categories
    @@ -269,8 +254,7 @@
                             set tree_name [category_tree::get_name $tree_id]
                     }
                     }
    -                
    -

    and to the corresponding index ADP page:

    +                

    and to the corresponding index ADP page:

                     <if \@use_categories_p\@>
                             <multiple name="categories">
                             <h2>\@categories.tree_name\@
    @@ -279,26 +263,23 @@
                             </group>
                     </multiple>
                     <a href="\@package_url\@view?\@YOURPARAMS\@">All Items</if>
    -          
    -

    Finally you need a an index.vuh in your www folder to rewrite the -URLs correctly, the section called -“Using .vuh files for pretty -urls”:

    +          

    Finally you need a an index.vuh in your www folder to rewrite the +URLs correctly, the section called “Using .vuh +files for pretty urls”:

               set url /[ad_conn extra_url]
     
               if {[regexp {^/+cat/+([^/]+)/*} $url ignore_whole category_id]} {
                   rp_form_put category_id $category_id
               }
               rp_internal_redirect "/packages/YOURPACKAGE/www/index"          
    -          
    -

    Now when ever the user select a category only notes that belong +

    Now when ever the user select a category only notes that belong to this category are displayed.

  • - \ No newline at end of file + leftLink="tutorial-admin-pages" leftLabel="Prev" leftTitle="Admin Pages" + rightLink="profile-code" rightLabel="Next" rightTitle="Profile your code" + homeLink="index" homeLabel="Home" + upLink="tutorial-advanced" upLabel="Up"> + \ No newline at end of file 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 -N -r1.16 -r1.17 --- openacs-4/packages/acs-core-docs/www/tutorial-categories.html 8 Nov 2017 09:42:12 -0000 1.16 +++ openacs-4/packages/acs-core-docs/www/tutorial-categories.html 25 Apr 2018 08:38:28 -0000 1.17 @@ -33,7 +33,7 @@ category trees are applicable for the application.

    - The way to achieve this is is to provide a link + The way to achieve this is to provide a link to the Category Management pages. Add the following snippet to your /var/lib/aolserver/$OPENACS_SERVICE_NAME/packages/myfirstpackage/www/admin/index.tcl file: Index: openacs-4/packages/acs-core-docs/www/tutorial-comments.adp =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/tutorial-comments.adp,v diff -u -N -r1.2 -r1.3 --- openacs-4/packages/acs-core-docs/www/tutorial-comments.adp 7 Aug 2017 23:47:52 -0000 1.2 +++ openacs-4/packages/acs-core-docs/www/tutorial-comments.adp 25 Apr 2018 08:38:28 -0000 1.3 @@ -3,11 +3,11 @@ Adding Comments -

    + leftLink="tutorial-etp-templates" leftLabel="Prev" + title="Chapter 10. Advanced +Topics" + rightLink="tutorial-admin-pages" rightLabel="Next"> +

    Adding Comments

    You can track comments for any ACS Object. Here we'll track comments for notes. On the note-edit.tcl/adp pair, which is used to @@ -20,26 +20,23 @@ { object_name $title } { return_url "[ad_conn url]?[ad_conn query]"} }] - -

    This calls a global, public Tcl function that the +

    This calls a global, public Tcl function that the general_comments package registered, to get its url. You then embed in that url the id of the note and its title, and set the return_url to the current url so that the user can return after adding a comment.

    We need to create html that shows any existing comments. We do this with another general_comments function:

     set comments_html [general_comments_get_comments
    -     -print_content_p 1 $note_id]
    -

    First, we pass in an optional parameter that that says to -actually show the contents of the comments, instead of just the -fact that there are comments. Then you pass the note id, which is -also the acs_object id.

    We put our two new variables in the note-edit.adp page.

    +     -print_content_p 1 $note_id]

    First, we pass in an optional parameter that says to actually +show the contents of the comments, instead of just the fact that +there are comments. Then you pass the note id, which is also the +acs_object id.

    We put our two new variables in the note-edit.adp page.

     <a href="\@comment_add_url\@">Add a comment</a>
    - \@comments_html\@
    -
    + \@comments_html\@
    - \ No newline at end of file + leftLink="tutorial-etp-templates" leftLabel="Prev" leftTitle="OpenACS Edit This Page Templates" + rightLink="tutorial-admin-pages" rightLabel="Next" rightTitle="Admin Pages" + homeLink="index" homeLabel="Home" + upLink="tutorial-advanced" upLabel="Up"> + \ No newline at end of file Index: openacs-4/packages/acs-core-docs/www/tutorial-comments.html =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/tutorial-comments.html,v diff -u -N -r1.17 -r1.18 --- openacs-4/packages/acs-core-docs/www/tutorial-comments.html 8 Nov 2017 09:42:12 -0000 1.17 +++ openacs-4/packages/acs-core-docs/www/tutorial-comments.html 25 Apr 2018 08:38:28 -0000 1.18 @@ -23,7 +23,7 @@ We do this with another general_comments function:

    set comments_html [general_comments_get_comments
          -print_content_p 1 $note_id]
    -

    First, we pass in an optional parameter that that says to actually +

    First, we pass in an optional parameter that says to actually show the contents of the comments, instead of just the fact that there are comments. Then you pass the note id, which is also the acs_object id.

    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 -N -r1.3 -r1.4 --- openacs-4/packages/acs-core-docs/www/tutorial-css-layout.adp 8 Nov 2017 09:42:12 -0000 1.3 +++ openacs-4/packages/acs-core-docs/www/tutorial-css-layout.adp 25 Apr 2018 08:38:28 -0000 1.4 @@ -3,16 +3,16 @@ Laying out a page with CSS instead of tables -
    + leftLink="tutorial-vuh" leftLabel="Prev" + title="Chapter 10. Advanced +Topics" + rightLink="tutorial-html-email" rightLabel="Next"> +

    Laying out a page with CSS instead of tables

    -.LRN home page with table-based +.LRN home page with table-based layout

    A sample of the HTML code (full source)

     <table border="0" width="100%">
       <tr>
    @@ -36,28 +36,25 @@
                       <table border="0" bgcolor="white" cellpadding="0" cellspacing="0" width="100%">
                         <tr>
                           <td class=element-text>
    -                        MBA 101
    -
    + MBA 101

    -.LRN Home with CSS-based layout

    A sample of the HTML code (full source)

    -<div class="left">
    +.LRN Home with CSS-based layout

    A sample of the HTML code (full source)

    <div class="left">
       <div class="portlet-wrap-shadow">
         <div class="portlet-wrap-bl">
           <div class="portlet-wrap-tr">
             <div class="portlet">
               <h2>Groups</h2>
               <ul>
                 <li>
    -              <a href="#">Class MBA 101</a>
    -

    If the CSS is removed from the file, it looks somewhat + <a href="#">Class MBA 101</a>

    If the CSS is removed from the file, it looks somewhat different:

    - \ No newline at end of file + homeLink="index" homeLabel="Home" + upLink="tutorial-advanced" upLabel="Up"> + \ No newline at end of file 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 -N -r1.14 -r1.15 --- openacs-4/packages/acs-core-docs/www/tutorial-css-layout.html 8 Nov 2017 09:42:12 -0000 1.14 +++ openacs-4/packages/acs-core-docs/www/tutorial-css-layout.html 25 Apr 2018 08:38:28 -0000 1.15 @@ -1,7 +1,7 @@ Laying out a page with CSS instead of tables

    Laying out a page with CSS instead of tables

    -

    .LRN home page with table-based layout

    +

    .LRN home page with table-based layout

    A sample of the HTML code (full source)

    @@ -29,7 +29,7 @@ <td class=element-text> MBA 101
    -

    .LRN Home with CSS-based layout

    +

    .LRN Home with CSS-based layout

    A sample of the HTML code (full source)

    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 -N -r1.3 -r1.4 --- openacs-4/packages/acs-core-docs/www/tutorial-cvs.adp 8 Nov 2017 09:42:12 -0000 1.3 +++ openacs-4/packages/acs-core-docs/www/tutorial-cvs.adp 25 Apr 2018 08:38:28 -0000 1.4 @@ -3,17 +3,16 @@ Add the new package to CVS -
    + leftLink="tutorial-specs" leftLabel="Prev" + title="Chapter 10. Advanced +Topics" + rightLink="tutorial-etp-templates" rightLabel="Next"> +

    Add the new package to CVS

    Before you do any more work, make sure that your work is protected by putting it all into cvs. The cvs add command is not recursive, so you'll have to traverse the directory tree manually and add as -you go. (More on CVS)

    -[$OPENACS_SERVICE_NAME xml]$ cd ..
    +you go. (More on CVS)

    [$OPENACS_SERVICE_NAME xml]$ cd ..
     [$OPENACS_SERVICE_NAME doc]$ cd ..
     [$OPENACS_SERVICE_NAME www]$ cd ..
     [$OPENACS_SERVICE_NAME myfirstpackage]$ cd ..
    @@ -69,16 +68,15 @@
     initial revision: 1.1
     done
     (many lines omitted)
    -[$OPENACS_SERVICE_NAME myfirstpackage]$
    -
    -

    Figure 10.1. Upgrading a local CVS -repository

    Upgrading a local CVS repository
    +[$OPENACS_SERVICE_NAME myfirstpackage]$
    +

    Figure 10.1. Upgrading a local +CVS repository

    Upgrading a local CVS repository

    - \ No newline at end of file + rightLink="tutorial-etp-templates" rightLabel="Next" rightTitle="OpenACS Edit This Page Templates" + homeLink="index" homeLabel="Home" + upLink="tutorial-advanced" upLabel="Up"> + \ No newline at end of file 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 -N -r1.28 -r1.29 --- openacs-4/packages/acs-core-docs/www/tutorial-cvs.html 8 Nov 2017 09:42:12 -0000 1.28 +++ openacs-4/packages/acs-core-docs/www/tutorial-cvs.html 25 Apr 2018 08:38:28 -0000 1.29 @@ -63,7 +63,7 @@ done (many lines omitted) [$OPENACS_SERVICE_NAME myfirstpackage]$ -

    Figure 10.1. Upgrading a local CVS repository

    +

    Figure 10.1. Upgrading a local CVS repository

    Upgrading a local CVS repository

    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 -N -r1.3 -r1.4 --- openacs-4/packages/acs-core-docs/www/tutorial-database.adp 8 Nov 2017 09:42:12 -0000 1.3 +++ openacs-4/packages/acs-core-docs/www/tutorial-database.adp 25 Apr 2018 08:38:28 -0000 1.4 @@ -3,17 +3,17 @@ Setting Up Database Objects -
    + leftLink="tutorial-newpackage" leftLabel="Prev" + title="Chapter 9. Development +Tutorial" + rightLink="tutorial-pages" rightLabel="Next"> +

    Setting Up Database Objects

    <authorblurb>

    by Joel Aufrecht

    </authorblurb>

    -Code the data model

    We create all database objects with scripts in the myfirstpackage/sql/ directory. All database +Code the data model

    We create all database objects with scripts in the myfirstpackage/sql/ directory. All database scripts are database-specific and are thus in either the myfirstpackage/sql/oracle or myfirstpackage/sql/postgresql @@ -40,18 +40,16 @@ simplify our database creation. (More information about ACS Objects. More information about the Content Repository.)

    -

    Figure 9.2. Tutorial Data +

    Figure 9.2. Tutorial Data Model

    Tutorial Data Model

    The top of each sql file has some standard comments, including doc tags such as \@author which will be picked up by the API browser. The string $‌Id:$ will automatically be expanded when -the file is checked in to cvs.

    -[$OPENACS_SERVICE_NAME ~]$ cd /var/lib/aolserver/$OPENACS_SERVICE_NAME/packages/myfirstpackage/sql/postgresql
    +the file is checked in to cvs.

    [$OPENACS_SERVICE_NAME ~]$ cd /var/lib/aolserver/$OPENACS_SERVICE_NAME/packages/myfirstpackage/sql/postgresql
     [$OPENACS_SERVICE_NAME postgresql]$ emacs myfirstpackage-create.sql
     

    Paste the text below into the file, save, and close.

    -

    Figure 9.3. The -Database Creation Script

    --- creation script
    +

    Figure 9.3. The Database +Creation Script

    -- creation script
     --
     -- \@author joel\@aufrecht.org
     -- \@cvs-id &Id:$
    @@ -79,9 +77,8 @@
     uninstalled.

     [$OPENACS_SERVICE_NAME postgresql]$ emacs myfirstpackage-drop.sql
     
    -

    Figure 9.4. Database Deletion -Script

    --- drop script
    +

    Figure 9.4. Database Deletion +Script

    -- drop script
     --
     -- \@author joel\@aufrecht.org
     -- \@cvs-id &Id:$
    @@ -106,8 +103,7 @@
                              0
     (1 row)
     
    -[$OPENACS_SERVICE_NAME postgresql]$
    -

    If there are errors, use them to debug the sql file and try +[$OPENACS_SERVICE_NAME postgresql]$

    If there are errors, use them to debug the sql file and try again. If there are errors in the database table creation, you may need to run the drop script to drop the table so that you can recreate it. The drop script will probably have errors since some @@ -121,16 +117,15 @@ 0 (1 row) -[$OPENACS_SERVICE_NAME postgresql]$ -

    Once both scripts are working without errors, run the create script one last time and +[$OPENACS_SERVICE_NAME postgresql]$

    Once both scripts are working without errors, run the create script one last time and proceed.

     [$OPENACS_SERVICE_NAME postgresql]$ psql service0 -f myfirstpackage-create.sql
     
    - \ No newline at end of file + leftLink="tutorial-newpackage" leftLabel="Prev" leftTitle="Creating an Application Package" + rightLink="tutorial-pages" rightLabel="Next" rightTitle="Creating Web Pages" + homeLink="index" homeLabel="Home" + upLink="tutorial" upLabel="Up"> + \ No newline at end of file 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 -N -r1.46 -r1.47 --- openacs-4/packages/acs-core-docs/www/tutorial-database.html 8 Nov 2017 09:42:12 -0000 1.46 +++ openacs-4/packages/acs-core-docs/www/tutorial-database.html 25 Apr 2018 08:38:28 -0000 1.47 @@ -6,7 +6,7 @@

    by Joel Aufrecht

    </authorblurb> -

    Code the data model

    +

    Code the data model

    We create all database objects with scripts in the myfirstpackage/sql/ directory. All @@ -44,7 +44,7 @@ information about ACS Objects. More information about the Content Repository.)

    -

    Figure 9.2. Tutorial Data Model

    +

    Figure 9.2. Tutorial Data Model

    Tutorial Data Model

    @@ -57,7 +57,7 @@
    [$OPENACS_SERVICE_NAME ~]$ cd /var/lib/aolserver/$OPENACS_SERVICE_NAME/packages/myfirstpackage/sql/postgresql
     [$OPENACS_SERVICE_NAME postgresql]$ emacs myfirstpackage-create.sql

    Paste the text below into the file, save, and close.

    -

    Figure 9.3. The Database Creation Script

    +

    Figure 9.3. The Database Creation Script

    -- creation script
     --
    @@ -88,7 +88,7 @@
           

    Create a database file to drop everything if the package is uninstalled.

     [$OPENACS_SERVICE_NAME postgresql]$ emacs myfirstpackage-drop.sql
    -

    Figure 9.4. Database Deletion Script

    +

    Figure 9.4. Database Deletion Script

    -- drop script
     --
    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 -N -r1.3 -r1.4
    --- openacs-4/packages/acs-core-docs/www/tutorial-debug.adp	8 Nov 2017 09:42:12 -0000	1.3
    +++ openacs-4/packages/acs-core-docs/www/tutorial-debug.adp	25 Apr 2018 08:38:28 -0000	1.4
    @@ -3,47 +3,43 @@
     Debugging and Automated Testing
     
     
    -		
    + leftLink="tutorial-pages" leftLabel="Prev" + title="Chapter 9. Development +Tutorial" + rightLink="tutorial-advanced" rightLabel="Next"> +

    Debugging and Automated Testing

    <authorblurb>

    by Joel Aufrecht

    </authorblurb>

    -Debugging

    -Developer Support.  The Developer -Support package adds several goodies: debug information for every -page; the ability to log comments to the page instead of the error -log, and fast user switching so that you can test pages as -anonymous and as dummy users without logging in and out.

    -PostgreSQL.  You can work directly -with the database to do debugging steps like looking directly at -tables and testing stored procedures. Start emacs. Type -M-x sql-postgres. -Press enter for server name and use $OPENACS_SERVICE_NAME +Debugging

    +Developer Support.  The Developer Support +package adds several goodies: debug information for every page; the +ability to log comments to the page instead of the error log, and +fast user switching so that you can test pages as anonymous and as +dummy users without logging in and out.

    +PostgreSQL.  You can work directly with +the database to do debugging steps like looking directly at tables +and testing stored procedures. Start emacs. Type M-x sql-postgres. Press enter for +server name and use $OPENACS_SERVICE_NAME for database name. You can use C-(up arrow) and C-(down arrow) for command history.

    Hint: "Parse error near *" usually means that an xql file wasn't recognized, because the Tcl file is choking on the *SQL* placeholder that it falls back on.

    Watching the server log. 

    To set up real-time monitoring of the AOLserver error log, type -

    -less /var/lib/aolserver/$OPENACS_SERVICE_NAME/log/openacs-dev-error.log
    -

    +

    less /var/lib/aolserver/$OPENACS_SERVICE_NAME/log/openacs-dev-error.log

    F to show new log entries in real time (like tail -f)
    C-c to stop and F to start it up again. 
    G goes to the end.
    - ? searches backward 
    / searches forward. 
              

    -Manual testing

    Make a list of basic tests to make sure it works

    +Manual testing

    Make a list of basic tests to make sure it works

    @@ -71,21 +67,19 @@ to delete your own note. Edit your own note. Search for a note.

    -Write automated tests

    <authorblurb>

    by Simon Carstensen +Write automated tests

    <authorblurb>

    by Simon Carstensen and Joel Aufrecht

    </authorblurb>

    - It seems to me that a lot of people have + 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.

    Create the directory that will contain the test script and edit the script file. The directory location and file name are standards -which are recognized by the automated testing package:

    -[$OPENACS_SERVICE_NAME www]$ mkdir /var/lib/aolserver/$OPENACS_SERVICE_NAME/packages/myfirstpackage/tcl/test
    +which are recognized by the automated testing package:

    [$OPENACS_SERVICE_NAME www]$ mkdir /var/lib/aolserver/$OPENACS_SERVICE_NAME/packages/myfirstpackage/tcl/test
     [$OPENACS_SERVICE_NAME www]$ cd /var/lib/aolserver/$OPENACS_SERVICE_NAME/packages/myfirstpackage/tcl/test
     [$OPENACS_SERVICE_NAME test]$ emacs myfirstpackages-procs.tcl
     

    Write the tests. This is obviously the big step :) The script -should first call ad_library like any normal -procs.tcl file:

    -ad_library {
    +should first call ad_library like any normal -procs.tcl file:

    ad_library {
         ...
     }
     

    To create a test case you call @@ -104,10 +98,8 @@ back once the test has been executed. A very useful feature. Instead of inserting bogus data like: set name "Simon", I tend to generate a random script in order avoid inserting a value -that's already in the database:

    -set name [ad_generate_random_string]
    -

    Here's how the test case looks so far:

    -aa_register_case mfp_basic_test {
    +that's already in the database:

    set name [ad_generate_random_string]
    +

    Here's how the test case looks so far:

    aa_register_case mfp_basic_test {
         My test
     } {
         aa_run_with_teardown \
    @@ -123,8 +115,7 @@
     specific word in the title."

           set name [ad_generate_random_string]
           set new_id [mfp::note::add -title $name]
    -      aa_true "Note add succeeded" ([info exists new_id] && $new_id ne "")
    -

    To test our simple case, we must load the test file into the + aa_true "Note add succeeded" ([info exists new_id] && $new_id ne "")

    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 @@ -144,7 +135,7 @@ myfirstpackage. You should see your test case. Run it and examine the results.

    -TCLWebtest tests

    API testing can only test part of our package - it doesn't +TCLWebtest tests

    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 installed for this test to work. This provides a library of functions that make it easy to call a page @@ -154,9 +145,8 @@ integrating them.

    -Example

    Now we can add the rest of the API tests, including a test with -deliberately bad data. The complete test looks like:

    -ad_library {
    +Example

    Now we can add the rest of the API tests, including a test with +deliberately bad data. The complete test looks like:

    ad_library {
         Test cases for my first package.
     }
     
    @@ -308,15 +298,14 @@
     #    tcl-indent-level: 4
     #    indent-tabs-mode: nil
     # End:
    -

    See also the section called -“Automated Testing”.

    +

    See also the section called “Automated Testing”.

    - \ No newline at end of file + leftLink="tutorial-pages" leftLabel="Prev" leftTitle="Creating Web Pages" + rightLink="tutorial-advanced" rightLabel="Next" rightTitle="Chapter 10. Advanced +Topics" + homeLink="index" homeLabel="Home" + upLink="tutorial" upLabel="Up"> + \ No newline at end of file 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 -N -r1.45 -r1.46 --- openacs-4/packages/acs-core-docs/www/tutorial-debug.html 8 Nov 2017 09:42:12 -0000 1.45 +++ openacs-4/packages/acs-core-docs/www/tutorial-debug.html 25 Apr 2018 08:38:28 -0000 1.46 @@ -5,7 +5,7 @@

    by Joel Aufrecht

    </authorblurb> -

    Debugging

    +

    Debugging

    Developer Support.  The Developer Support package adds several goodies: debug @@ -42,7 +42,7 @@           

    -

    Manual testing

    +

    Manual testing

    Make a list of basic tests to make sure it works

    Test NumActionExpected Result
    @@ -75,14 +75,14 @@ Search for a note.

    -

    Write automated tests

    +

    Write automated tests

    <authorblurb>

    by Simon Carstensen and Joel Aufrecht

    </authorblurb>
    -

    +

    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.

    Create the directory that will contain the test script and edit the script file. The directory location and file name are standards which are recognized by the automated testing package:

    @@ -134,11 +134,11 @@ aa_true "Note add succeeded" ([info exists new_id] && $new_id ne "")

    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 APM 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 -procs 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 -cats flag, setting categories, makes it easier to control which tests to run. The smoke test setting means that this is a basic test case that can and should be run any time you are doing any test. (a definition of "smoke test")

    Once the file is loaded, go to ACS Automated Testing and click on myfirstpackage. You should see your test case. Run it and examine the results.

    -

    TCLWebtest tests

    +

    TCLWebtest tests

    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 installed for this test to work. This provides a library of functions 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.

    -

    Example

    +

    Example

    Now we can add the rest of the API tests, including a test with deliberately bad data. The complete test looks like:

    ad_library {
    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 -N -r1.3 -r1.4
    --- openacs-4/packages/acs-core-docs/www/tutorial-distribute.adp	8 Nov 2017 09:42:12 -0000	1.3
    +++ openacs-4/packages/acs-core-docs/www/tutorial-distribute.adp	25 Apr 2018 08:38:28 -0000	1.4
    @@ -3,22 +3,22 @@
     Prepare the package for distribution.
     
     
    -		
    + leftLink="profile-code" leftLabel="Prev" + title="Chapter 10. Advanced +Topics" + rightLink="tutorial-upgrades" rightLabel="Next"> +

    Prepare the package for distribution.

    Browse to the package manager. Click on tutorialapp.

    Click on Generate a distribution file for this package from the filesystem.

    Click on the file size (37.1KB) after the label Distribution File: and save the file to -/var/tmp.

    Package development guidelines

    +/var/tmp.

    Package development guidelines

    - \ No newline at end of file + homeLink="index" homeLabel="Home" + upLink="tutorial-advanced" upLabel="Up"> + \ No newline at end of file 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 -N -r1.28 -r1.29 --- openacs-4/packages/acs-core-docs/www/tutorial-distribute.html 8 Nov 2017 09:42:12 -0000 1.28 +++ openacs-4/packages/acs-core-docs/www/tutorial-distribute.html 25 Apr 2018 08:38:28 -0000 1.29 @@ -12,7 +12,7 @@ after the label Distribution File: and save the file to /var/tmp.

    -

    +

    Package development guidelines

    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 -N -r1.3 -r1.4 --- openacs-4/packages/acs-core-docs/www/tutorial-etp-templates.adp 8 Nov 2017 09:42:12 -0000 1.3 +++ openacs-4/packages/acs-core-docs/www/tutorial-etp-templates.adp 25 Apr 2018 08:38:28 -0000 1.4 @@ -3,11 +3,11 @@ OpenACS Edit This Page Templates -
    + leftLink="tutorial-cvs" leftLabel="Prev" + title="Chapter 10. Advanced +Topics" + rightLink="tutorial-comments" rightLabel="Next"> +

    OpenACS Edit This Page Templates

    <authorblurb>

    by Nick Carroll @@ -46,11 +46,9 @@ Exercise 2: Checkout and Install edit-this-page (ETP)

    • -

      Checkout ETP from CVS:

      -cd ~/openacs/packages
      +

      Checkout ETP from CVS:

      cd ~/openacs/packages
                   cvs -d:pserver:anonymous\@openacs.org:/cvsroot login
      -            cvs -d:pserver:anonymous\@openacs.org:/cvsroot co edit-this-page
      -
      + cvs -d:pserver:anonymous\@openacs.org:/cvsroot co edit-this-page
    • Go to the package manager at http://yoursite/acs-admin/apm. And install the new package: edit-this-page.

    • Or use the "Add Application" form available on the Main site.

    • @@ -71,21 +69,18 @@ ETP Template
    • Browse the files for each of the above ETP templates at:

      -cd ~/openacs/packages/edit-this-page/templates
      -
      +cd ~/openacs/packages/edit-this-page/templates
    • Use the article template as the basis of our new col2 -template.

      -cp article-content.adp col2-content.adp
      +template.

      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
      -
      + cp article-index.tcl col2-index.tcl
    • The template should provide us with the following ETP layout:

      -

      Table 10.1. table -showing ETP layout

    Test NumActionExpected Result
    +

    Table 10.1. table showing ETP +layout

    @@ -106,10 +101,8 @@ col2 Template with ETP
    • Need to register your template with ETP so that it appears in -the drop-down menu that you would have seen in Exercise 3.

      -cd ~/openacs/packages/edit-this-page/tcl
      -            emacs etp-custom-init.tcl
      -
      +the drop-down menu that you would have seen in Exercise 3.

      cd ~/openacs/packages/edit-this-page/tcl
      +            emacs etp-custom-init.tcl
    • Use the function etp::define_application to register your template with ETP

        @@ -131,13 +124,13 @@ Who Wrote This and When

    This problem set was originally written by Nick Carroll in August 2004 for the University of Sydney Course EBUS5002.

    This material is copyright 2004 by Nick Carroll. It may be copied, reused, and modified, provided credit is given to the -original author.

    ($‌Id: tutorial-advanced.xml,v 1.53 -2017/08/07 23:47:54 gustafn Exp $)

    +original author.

    ($‌Id: tutorial-advanced.xml,v 1.54 +2017/12/24 13:15:07 gustafn Exp $)

    - + leftLink="tutorial-cvs" leftLabel="Prev" leftTitle="Add the new package to CVS" + rightLink="tutorial-comments" rightLabel="Next" rightTitle="Adding Comments" + homeLink="index" homeLabel="Home" + upLink="tutorial-advanced" upLabel="Up"> + 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 -N -r1.11 -r1.12 --- openacs-4/packages/acs-core-docs/www/tutorial-etp-templates.html 8 Nov 2017 09:42:12 -0000 1.11 +++ openacs-4/packages/acs-core-docs/www/tutorial-etp-templates.html 25 Apr 2018 08:38:28 -0000 1.12 @@ -79,7 +79,7 @@ cp article-index.tcl col2-index.tcl
  • The template should provide us with the following ETP layout:

    -

    Table 10.1. table showing ETP layout

    +

    Table 10.1. table showing ETP layout

    Index: openacs-4/packages/acs-core-docs/www/tutorial-future-topics.adp =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/tutorial-future-topics.adp,v diff -u -N -r1.2 -r1.3 --- openacs-4/packages/acs-core-docs/www/tutorial-future-topics.adp 7 Aug 2017 23:47:52 -0000 1.2 +++ openacs-4/packages/acs-core-docs/www/tutorial-future-topics.adp 25 Apr 2018 08:38:28 -0000 1.3 @@ -3,11 +3,11 @@ Future Topics -
    + leftLink="tutorial-second-database" leftLabel="Prev" + title="Chapter 10. Advanced +Topics" + rightLink="dev-guide" rightLabel="Next"> +

    Future Topics

      @@ -21,9 +21,9 @@

    - \ No newline at end of file + leftLink="tutorial-second-database" leftLabel="Prev" leftTitle="Connect to a second database" + rightLink="dev-guide" rightLabel="Next" rightTitle="Chapter 11. Development +Reference" + homeLink="index" homeLabel="Home" + upLink="tutorial-advanced" upLabel="Up"> + \ No newline at end of file Index: openacs-4/packages/acs-core-docs/www/tutorial-hierarchical.adp =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/tutorial-hierarchical.adp,v diff -u -N -r1.3 -r1.4 --- openacs-4/packages/acs-core-docs/www/tutorial-hierarchical.adp 8 Nov 2017 09:42:12 -0000 1.3 +++ openacs-4/packages/acs-core-docs/www/tutorial-hierarchical.adp 25 Apr 2018 08:38:28 -0000 1.4 @@ -3,11 +3,11 @@ Hierarchical data -
    + leftLink="tutorial-notifications" leftLabel="Prev" + title="Chapter 10. Advanced +Topics" + rightLink="tutorial-vuh" rightLabel="Next"> +

    Hierarchical data

    <authorblurb>

    by Jade Rubick with help @@ -35,8 +35,7 @@ c.category_id = o.object_id ORDER BY o.tree_sortkey" - -

    Note the use of the tree_level() function, which gives you the +

    Note the use of the tree_level() function, which gives you the level, starting from 1, 2, 3...

    Here's an example, pulling all of the children for a given parent:

           SELECT 
    @@ -50,8 +49,7 @@
           children.tree_sortkey between parent.tree_sortkey and tree_right(parent.tree_sortkey)
           and parent.tree_sortkey <> children.tree_sortkey
           and parent.key = :the_parent_key;
    -      
    -

    The reason we subtract the parent's tree_level from the +

    The reason we subtract the parent's tree_level from the child's tree_level is that the tree_levels are global, so if you want the parent's tree_level to start with 0, you'll want the subtraction in there. This is a reason you'll commonly @@ -67,8 +65,7 @@ WHERE subtree.tree_sortkey between parent.tree_sortkey and tree_right(parent.tree_sortkey) and parent.key = :the_parent_key; - -

    If you are using the Content Repository, you get a similar +

    If you are using the Content Repository, you get a similar facility, but the parent_id column is already there. Note you can do joins with tree_sortkey:

           SELECT
    @@ -79,15 +76,14 @@
           FROM pm_projectsx p, cr_items i
           WHERE p.project_id = i.live_revision
           ORDER BY i.tree_sortkey
    -    
    -

    This rather long thread explains How tree_sortkeys work and this paper describes the technique for tree_sortkeys, +

    This rather long thread explains How tree_sortkeys work and this paper describes the technique for tree_sortkeys, although the OpenACS implementation has a few differences in the implementation, to make it work for many languages and the LIKE construct in Postgres.

    - \ No newline at end of file + leftLink="tutorial-notifications" leftLabel="Prev" leftTitle="Notifications" + rightLink="tutorial-vuh" rightLabel="Next" rightTitle="Using .vuh files for pretty urls" + homeLink="index" homeLabel="Home" + upLink="tutorial-advanced" upLabel="Up"> + \ No newline at end of file Index: openacs-4/packages/acs-core-docs/www/tutorial-html-email.adp =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/tutorial-html-email.adp,v diff -u -N -r1.3 -r1.4 --- openacs-4/packages/acs-core-docs/www/tutorial-html-email.adp 8 Nov 2017 09:42:12 -0000 1.3 +++ openacs-4/packages/acs-core-docs/www/tutorial-html-email.adp 25 Apr 2018 08:38:28 -0000 1.4 @@ -3,11 +3,11 @@ Sending HTML email from your application -
    + leftLink="tutorial-css-layout" leftLabel="Prev" + title="Chapter 10. Advanced +Topics" + rightLink="tutorial-caching" rightLabel="Next"> +

    Sending HTML email from your application

    <authorblurb>

    by Jade Rubick @@ -43,13 +43,12 @@ -subject $subject \ -body $message \ -extraheaders $extra_headers - - +

    - \ No newline at end of file + rightLink="tutorial-caching" rightLabel="Next" rightTitle="Basic Caching" + homeLink="index" homeLabel="Home" + upLink="tutorial-advanced" upLabel="Up"> + \ No newline at end of file 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 -N -r1.3 -r1.4 --- openacs-4/packages/acs-core-docs/www/tutorial-newpackage.adp 8 Nov 2017 09:42:12 -0000 1.3 +++ openacs-4/packages/acs-core-docs/www/tutorial-newpackage.adp 25 Apr 2018 08:38:28 -0000 1.4 @@ -3,11 +3,11 @@ Creating an Application Package -
    + leftLink="tutorial" leftLabel="Prev" + title="Chapter 9. Development +Tutorial" + rightLink="tutorial-database" rightLabel="Next"> +

    Creating an Application Package

    <authorblurb>

    by Joel Aufrecht @@ -16,8 +16,8 @@ The intended page map

    -Overview

    To start developing new code in OpenACS, we build a new package. -A package is a a discrete collection of web pages, Tcl code, and +Overview

    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 application; a package which provides functions to other packages and has no @@ -34,14 +34,14 @@ displaying a list of text notes.

    -Before you begin

    You will need:

      +Before you begin

    You will need:

    • A computer with a working installation of OpenACS. If you don't have this, see Chapter 2, Installation Overview .

    • Example files, which are included in the standard OpenACS 5.9.0 distribution.

    -

    Figure 9.1. Assumptions in this +

    Figure 9.1. Assumptions in this section

  • @@ -60,7 +60,7 @@

    -Use the APM to initialize a new +Use the APM to initialize a new package

    We use the ACS Package Manager (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 @@ -99,7 +99,7 @@ packages).

    -Add an Application Instance to the +Add an Application Instance to the Server

    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 @@ -118,26 +118,24 @@ to be satisfied from the files at /var/lib/aolserver/$OPENACS_SERVICE_NAME/packages/myfirstpackage/www.

    -Quick start

    The remainder of the tutorial walks you through each file one at +Quick start

    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:

    -cd /var/lib/aolserver/$OPENACS_SERVICE_NAME/packages/acs-core-docs/www/files/tutorial
    +working package, by doing the following:

    cd /var/lib/aolserver/$OPENACS_SERVICE_NAME/packages/acs-core-docs/www/files/tutorial
     psql $OPENACS_SERVICE_NAME -f myfirstpackage-create.sql
     cp note-edit.* note-delete.tcl index.* ../../../../myfirstpackage/www/
     mkdir ../../../../myfirstpackage/lib
     cp note-list.* ../../../../myfirstpackage/lib/
     cp myfirstpackage-*sql ../../../../myfirstpackage/sql/postgresql/
     cp myfirstpackage-procs.tcl ../../../../myfirstpackage/tcl/test/
    -cp note-procs.tcl ../../../../myfirstpackage/tcl/
    -

    After restarting the server, the tutorial application will be +cp note-procs.tcl ../../../../myfirstpackage/tcl/

    After restarting the server, the tutorial application will be installed and working at the url you selected in the previous step.

    - \ No newline at end of file + leftLink="tutorial" leftLabel="Prev" leftTitle="Chapter 9. Development +Tutorial" + rightLink="tutorial-database" rightLabel="Next" rightTitle="Setting Up Database Objects" + homeLink="index" homeLabel="Home" + upLink="tutorial" upLabel="Up"> + \ No newline at end of file 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 -N -r1.45 -r1.46 --- openacs-4/packages/acs-core-docs/www/tutorial-newpackage.html 8 Nov 2017 09:42:12 -0000 1.45 +++ openacs-4/packages/acs-core-docs/www/tutorial-newpackage.html 25 Apr 2018 08:38:28 -0000 1.46 @@ -11,10 +11,10 @@
    -

    Overview

    +

    Overview

    To start developing new code in OpenACS, we build a new package. A package - is a a discrete collection of web pages, Tcl code, and database tables and procedures. + is a discrete collection of web pages, Tcl code, and database tables and procedures. A package with user interface is called an application; a package which provides functions to other packages and has no direct interface, a service. A package can be installed, upgraded, and @@ -36,22 +36,22 @@

    -

    Before you begin

    +

    Before you begin

    You will need:

    • A computer with a working installation of OpenACS. If you don't have this, see Chapter 2, Installation Overview.

    • Example files, which are included in the standard OpenACS 5.9.0 distribution.

    -

    Figure 9.1. Assumptions in this section

    +

    Figure 9.1. Assumptions in this section

    Fully qualified domain name of your serveryourserver.test
    URL of your serverhttp://yourserver.test:8000
    Name of development account$OPENACS_SERVICE_NAME
    New Package keymyfirstpackage

    -

    Use the APM to initialize a new package

    +

    Use the APM to initialize a new package

    We use the ACS Package Manager (APM) to add, remove, and upgrade packages. It handles package meta-data, such as lists of @@ -98,7 +98,7 @@ files in the package will be within this directory. More on the structure of packages).

    -

    Add an Application Instance to the Server

    +

    Add an Application Instance to the Server

    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. @@ -119,7 +119,7 @@ http://yourserver.test:8000/myfirstpackage to be satisfied from the files at /var/lib/aolserver/$OPENACS_SERVICE_NAME/packages/myfirstpackage/www.

    -

    Quick start

    +

    Quick start

    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:

    cd /var/lib/aolserver/$OPENACS_SERVICE_NAME/packages/acs-core-docs/www/files/tutorial
    Index: openacs-4/packages/acs-core-docs/www/tutorial-notifications.adp
    ===================================================================
    RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/tutorial-notifications.adp,v
    diff -u -N -r1.3 -r1.4
    --- openacs-4/packages/acs-core-docs/www/tutorial-notifications.adp	8 Nov 2017 09:42:12 -0000	1.3
    +++ openacs-4/packages/acs-core-docs/www/tutorial-notifications.adp	25 Apr 2018 08:38:28 -0000	1.4
    @@ -3,11 +3,11 @@
     Notifications
     
     
    -		
    + leftLink="tutorial-upgrades" leftLabel="Prev" + title="Chapter 10. Advanced +Topics" + rightLink="tutorial-hierarchical" rightLabel="Next"> +

    Notifications

    <authorblurb>

    by David Bell and Simon Carstensen @@ -83,8 +83,7 @@ select inline_0(); drop function inline_0(); - -

    You also need a drop script. This is untested for comptability +

    You also need a drop script. This is untested for compatibility with the above script.

           -- \@author gwong\@orchardlabs.com,ben\@openforce.biz
           -- \@creation-date 2002-05-16
    @@ -174,8 +173,7 @@
     
     select inline_0();
     drop function inline_0();
    -    
    -

    The next step is to setup our notification creation. A new +

    The next step is to setup our notification creation. A new notification must be added to the notification table for each blog entry added. We do this using the notification::new procedure

             notification::new \
    @@ -185,8 +183,7 @@
                 -response_id $blog(entry_id) \
                 -notif_subject $blog(title) \
                 -notif_text $new_content
    -    
    -

    This code is placed in the Tcl procedure that creates blog +

    This code is placed in the Tcl procedure that creates blog entries, right after the entry gets created in the code. The $blog(package_id) is the OpenACS object_id of the Weblogger instance to which the entry has @@ -208,10 +205,8 @@ -pretty_name [lars_blog_name] \ -url [lars_blog_public_package_url] \ ] - -

    which will return something like

    -    You may <a href="/notifications/request-new?...">request notification</a> for Weblogger.
    -

    which can be readily put on the blog index page. The +

    which will return something like

    +    You may <a href="/notifications/request-new?...">request notification</a> for Weblogger.

    which can be readily put on the blog index page. The pretty_name parameter is what appears at the end of the text returned (i.e. "... request notification</a> for pretty_name"), The url parameter should be set to the address @@ -220,9 +215,9 @@ For more examples look at the forums package.

    - \ No newline at end of file + rightLink="tutorial-hierarchical" rightLabel="Next" rightTitle="Hierarchical data" + homeLink="index" homeLabel="Home" + upLink="tutorial-advanced" upLabel="Up"> + \ No newline at end of file Index: openacs-4/packages/acs-core-docs/www/tutorial-notifications.html =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/tutorial-notifications.html,v diff -u -N -r1.19 -r1.20 --- openacs-4/packages/acs-core-docs/www/tutorial-notifications.html 8 Nov 2017 09:42:12 -0000 1.19 +++ openacs-4/packages/acs-core-docs/www/tutorial-notifications.html 25 Apr 2018 08:38:28 -0000 1.20 @@ -84,7 +84,7 @@

    You also need a drop script. This is untested for - comptability with the above script.

    + compatibility with the above script.

           -- @author gwong@orchardlabs.com,ben@openforce.biz
           -- @creation-date 2002-05-16
    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 -N -r1.3 -r1.4
    --- openacs-4/packages/acs-core-docs/www/tutorial-pages.adp	8 Nov 2017 09:42:12 -0000	1.3
    +++ openacs-4/packages/acs-core-docs/www/tutorial-pages.adp	25 Apr 2018 08:38:28 -0000	1.4
    @@ -3,33 +3,33 @@
     Creating Web Pages
     
     
    -		
    + leftLink="tutorial-database" leftLabel="Prev" + title="Chapter 9. Development +Tutorial" + rightLink="tutorial-debug" rightLabel="Next"> +

    Creating Web Pages

    <authorblurb>

    by Joel Aufrecht

    </authorblurb>

    -Install some API

    As a workaround for missing content-repository functionality, +Install some API

    As a workaround for missing content-repository functionality, copy a provided file into the directory for Tcl files:

    cp /var/lib/aolserver/$OPENACS_SERVICE_NAME/packages/acs-core-docs/www/files/tutorial/note-procs.tcl /var/lib/aolserver/$OPENACS_SERVICE_NAME/packages/myfirstpackage/tcl/

    To make this file take effect, go to the APM and choose "Reload changed" for "MyFirstPackage".

    -Page Map

    Our package will have two visible pages. The first shows a list +Page Map

    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.

    -

    Figure 9.5. Page +

    Figure 9.5. Page Map

    Page Map

    -Build the "Index" page

    Each user-visible page in your package has, typically, three +Build the "Index" page

    Each user-visible page in your package has, typically, three parts. The tcl file holds the procedural logic for the page, including Tcl and database-independent SQL code, and does things like check @@ -41,8 +41,7 @@ first, starting with the Tcl file:

     [$OPENACS_SERVICE_NAME postgresql]$ cd /var/lib/aolserver/$OPENACS_SERVICE_NAME/packages/myfirstpackages/www
     [$OPENACS_SERVICE_NAME www]$ emacs index.tcl
    -

    Paste this into the file.

    -ad_page_contract {
    +

    Paste this into the file.

    ad_page_contract {
         This is the main page for the package.  It displays all of the Notes and provides links to edit them and to create new Notes.
     
         \@author Your Name (you\@example.com)
    @@ -56,19 +55,15 @@
     #    tcl-indent-level: 4
     #    indent-tabs-mode: nil
     # End:
    -

    Now index.adp:

    -<master>
    +

    Now index.adp:

    <master>
       <property name="doc(title)">\@page_title;literal\@</property>
       <property name="context">\@context;literal\@</property>
    -<include src="/packages/myfirstpackage/lib/note-list">
    -

    The index page includes the list page, which we put in /lib +<include src="/packages/myfirstpackage/lib/note-list">

    The index page includes the list page, which we put in /lib instead of /www to designate that it's available for reuse by -other packages.

    -[$OPENACS_SERVICE_NAME www]$ mkdir /var/lib/aolserver/$OPENACS_SERVICE_NAME/packages/myfirstpackage/lib
    +other packages.

    [$OPENACS_SERVICE_NAME www]$ mkdir /var/lib/aolserver/$OPENACS_SERVICE_NAME/packages/myfirstpackage/lib
     [$OPENACS_SERVICE_NAME www]$ cd /var/lib/aolserver/$OPENACS_SERVICE_NAME/packages/myfirstpackage/lib
     [$OPENACS_SERVICE_NAME lib]$ emacs note-list.tcl
    -
    -template::list::create \
    +
    template::list::create \
         -name notes \
         -multirow notes \
         -actions { "Add a Note" note-edit} \
    @@ -111,18 +106,14 @@
     #    tcl-indent-level: 4
     #    indent-tabs-mode: nil
     # End:
    -
    -[$OPENACS_SERVICE_NAME lib]$ emacs note-list.adp
    +
    [$OPENACS_SERVICE_NAME lib]$ emacs note-list.adp
     
    -<listtemplate name="notes"></listtemplate>
    -

    You can test your work by viewing the page /myfirstpackage on +<listtemplate name="notes"></listtemplate>

    You can test your work by viewing the page /myfirstpackage on your installation.

    Create the add/edit page. If note_id is passed in, it display that note, and can change to edit mode if appropriate. Otherwise, -it presents a form for adding notes.

    -[$OPENACS_SERVICE_NAME lib]$ cd /var/lib/aolserver/$OPENACS_SERVICE_NAME/packages/myfirstpackage/www
    +it presents a form for adding notes.

    [$OPENACS_SERVICE_NAME lib]$ cd /var/lib/aolserver/$OPENACS_SERVICE_NAME/packages/myfirstpackage/www
     [$OPENACS_SERVICE_NAME www]$ emacs note-edit.tcl
    -
    -ad_page_contract {
    +
    ad_page_contract {
         This is the view-edit page for notes.
     
         \@author Your Name (you\@example.com)
    @@ -168,24 +159,19 @@
     #    tcl-indent-level: 4
     #    indent-tabs-mode: nil
     # End:
    -
    -[$OPENACS_SERVICE_NAME www]$ emacs note-edit.adp
    -
    -<master>
    +
    [$OPENACS_SERVICE_NAME www]$ emacs note-edit.adp
    +
    <master>
       <property name="doc(title)">\@page_title;literal\@</property>
       <property name="context">\@context;literal\@</property>
       <property name="focus">note.title</property>
       
    -<formtemplate id="note"></formtemplate>
    -

    And the delete page. Since it has no UI, there is only a Tcl -page, and no adp page.

    -[$OPENACS_SERVICE_NAME www]$ emacs note-delete.tcl
    -
    -ad_page_contract {
    +<formtemplate id="note"></formtemplate>

    And the delete page. Since it has no UI, there is only a Tcl +page, and no adp page.

    [$OPENACS_SERVICE_NAME www]$ emacs note-delete.tcl
    +
    ad_page_contract {
         This deletes a note
     
         \@author Your Name (you\@example.com)
    -    \@cvs-id $‌Id: note-delete.tcl,v 1.4 2017/08/07 23:47:54 gustafn Exp $
    +    \@cvs-id $‌Id: note-delete.tcl,v 1.5 2018/01/19 21:23:51 gustafn Exp $
      
         \@param item_id The item_id of the note to delete
     } {
    @@ -198,7 +184,7 @@
     
     ad_returnredirect "."
     # stop running this code, since we're redirecting
    -abort
    +ad_script_abort
     
     # Local variables:
     #    mode: tcl
    @@ -209,8 +195,8 @@
     
    - \ No newline at end of file + leftLink="tutorial-database" leftLabel="Prev" leftTitle="Setting Up Database Objects" + rightLink="tutorial-debug" rightLabel="Next" rightTitle="Debugging and Automated Testing" + homeLink="index" homeLabel="Home" + upLink="tutorial" upLabel="Up"> + \ No newline at end of file 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 -N -r1.46 -r1.47 --- openacs-4/packages/acs-core-docs/www/tutorial-pages.html 8 Nov 2017 09:42:12 -0000 1.46 +++ openacs-4/packages/acs-core-docs/www/tutorial-pages.html 25 Apr 2018 08:38:28 -0000 1.47 @@ -6,22 +6,22 @@

    by Joel Aufrecht

    </authorblurb> -

    Install some API

    +

    Install some API

    As a workaround for missing content-repository functionality, copy a provided file into the directory for Tcl files:

         cp /var/lib/aolserver/$OPENACS_SERVICE_NAME/packages/acs-core-docs/www/files/tutorial/note-procs.tcl /var/lib/aolserver/$OPENACS_SERVICE_NAME/packages/myfirstpackage/tcl/

    To make this file take effect, go to the APM and choose "Reload changed" for "MyFirstPackage".

    -

    Page Map

    +

    Page Map

    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.

    -

    Figure 9.5. Page Map

    +

    Figure 9.5. Page Map

    Page Map

    -

    Build the "Index" page

    +

    Build the "Index" page

    Each user-visible page in your package has, typically, three parts. The tcl file @@ -186,7 +186,7 @@ ad_returnredirect "." # stop running this code, since we're redirecting -abort +ad_script_abort # Local variables: # mode: tcl Index: openacs-4/packages/acs-core-docs/www/tutorial-parameters.adp =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/tutorial-parameters.adp,v diff -u -N -r1.3 -r1.4 --- openacs-4/packages/acs-core-docs/www/tutorial-parameters.adp 27 Mar 2018 12:22:17 -0000 1.3 +++ openacs-4/packages/acs-core-docs/www/tutorial-parameters.adp 25 Apr 2018 08:38:28 -0000 1.4 @@ -3,11 +3,11 @@ Adding in parameters for your package -

    + leftLink="tutorial-wysiwyg-editor" leftLabel="Prev" + title="Chapter 10. Advanced +Topics" + rightLink="tutorial-upgrade-scripts" rightLabel="Next"> +

    Adding in parameters for your package

    Each instance of a package can have parameters associated with @@ -19,8 +19,8 @@ parameter::get procedure.

    - + leftLink="tutorial-wysiwyg-editor" leftLabel="Prev" leftTitle="Enabling WYSIWYG" + rightLink="tutorial-upgrade-scripts" rightLabel="Next" rightTitle="Writing upgrade scripts" + homeLink="index" homeLabel="Home" + upLink="tutorial-advanced" upLabel="Up"> + \ No newline at end of file Index: openacs-4/packages/acs-core-docs/www/tutorial-schedule-procs.adp =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/tutorial-schedule-procs.adp,v diff -u -N -r1.3 -r1.4 --- openacs-4/packages/acs-core-docs/www/tutorial-schedule-procs.adp 8 Nov 2017 09:42:12 -0000 1.3 +++ openacs-4/packages/acs-core-docs/www/tutorial-schedule-procs.adp 25 Apr 2018 08:38:28 -0000 1.4 @@ -3,26 +3,25 @@ Scheduled Procedures -
    + leftLink="tutorial-caching" leftLabel="Prev" + title="Chapter 10. Advanced +Topics" + rightLink="tutorial-wysiwyg-editor" rightLabel="Next"> +

    Scheduled Procedures

    Put this proc in a file /packages/myfirstpackage/tcl/scheduled-init.tcl. Files in /tcl with the -init.tcl ending are sourced on server startup. This one executes my_proc every 60 seconds:

     ad_schedule_proc 60 myfirstpackage::my_proc
    -

    This executes once a day, at midnight:

    -ad_schedule_proc \
    +

    This executes once a day, at midnight:

    ad_schedule_proc \
         -schedule_proc ns_schedule_daily \
         [list 0 0] \
         myfirstpackage::my_proc
     

    See ad_schedule_proc for more information.

    - \ No newline at end of file + leftLink="tutorial-caching" leftLabel="Prev" leftTitle="Basic Caching" + rightLink="tutorial-wysiwyg-editor" rightLabel="Next" rightTitle="Enabling WYSIWYG" + homeLink="index" homeLabel="Home" + upLink="tutorial-advanced" upLabel="Up"> + \ No newline at end of file Index: openacs-4/packages/acs-core-docs/www/tutorial-second-database.adp =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/tutorial-second-database.adp,v diff -u -N -r1.2 -r1.3 --- openacs-4/packages/acs-core-docs/www/tutorial-second-database.adp 7 Aug 2017 23:47:53 -0000 1.2 +++ openacs-4/packages/acs-core-docs/www/tutorial-second-database.adp 25 Apr 2018 08:38:28 -0000 1.3 @@ -3,20 +3,19 @@ Connect to a second database -
    + leftLink="tutorial-upgrade-scripts" leftLabel="Prev" + title="Chapter 10. Advanced +Topics" + rightLink="tutorial-future-topics" rightLabel="Next"> +

    Connect to a second database

    It is possible to use the OpenACS Tcl database API with other databases. In this example, the OpenACS site uses a PostGre database, and accesses another PostGre database called legacy.

    1. Modify config.tcl to accommodate the legacy database, and to ensure that the legacy database is not used for standard OpenACS -queries:

      -ns_section ns/db/pools
      +queries:

      ns_section ns/db/pools
       ns_param   pool1              "Pool 1"
       ns_param   pool2              "Pool 2"
       ns_param   pool3              "Pool 3"
      @@ -68,26 +67,23 @@
       ns_section ns/server/${server}/acs/database
       ns_param database_names [list main legacy]
       ns_param pools_main [list pool1 pool2 pool3]
      -ns_param pools_legacy [list legacy]
      -
      +ns_param pools_legacy [list legacy]
    2. To use the legacy database, use the -dbn flag for any of the db_ API calls. For example, suppose there is a table called "foo" in the legacy system, with a field "bar". List "bar" for all records with this Tcl -file:

      -db_foreach -dbn legacy get_bar_query {
      +file:

      db_foreach -dbn legacy get_bar_query {
         select bar from foo
         limit 10
       } {
         ns_write "<br/>$bar"
      -}
      -
      +}
    - \ No newline at end of file + leftLink="tutorial-upgrade-scripts" leftLabel="Prev" leftTitle="Writing upgrade scripts" + rightLink="tutorial-future-topics" rightLabel="Next" rightTitle="Future Topics" + homeLink="index" homeLabel="Home" + upLink="tutorial-advanced" upLabel="Up"> + \ No newline at end of file Index: openacs-4/packages/acs-core-docs/www/tutorial-specs.adp =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/tutorial-specs.adp,v diff -u -N -r1.3 -r1.4 --- openacs-4/packages/acs-core-docs/www/tutorial-specs.adp 8 Nov 2017 09:42:12 -0000 1.3 +++ openacs-4/packages/acs-core-docs/www/tutorial-specs.adp 25 Apr 2018 08:38:28 -0000 1.4 @@ -3,17 +3,16 @@ Write the Requirements and Design Specs -
    + leftLink="tutorial-advanced" leftLabel="Prev" + title="Chapter 10. Advanced +Topics" + rightLink="tutorial-cvs" rightLabel="Next"> +

    Write the Requirements and Design Specs

    Before you get started you should make yourself familiar with the tags that are used to write your documentation. For tips on editing SGML files in emacs, see the -section called “OpenACS Documentation -Guide”.

    It's time to document. For the tutorial we'll use +section called “OpenACS Documentation Guide”.

    It's time to document. For the tutorial we'll use pre-written documentation. When creating a package from scratch, start by copying the documentation template from /var/lib/aolserver/openacs-dev/packages/acs-core-docs/xml/docs/xml/package-documentation-template.xml to myfirstpackage/www/docs/xml/index.xml.

    You then edit that file with emacs to write the requirements and @@ -27,8 +26,7 @@ [$OPENACS_SERVICE_NAME myfirstpackage]$ mkdir -p www/doc/xml [$OPENACS_SERVICE_NAME myfirstpackage]$ cd www/doc/xml [$OPENACS_SERVICE_NAME xml]$ cp /var/lib/aolserver/$OPENACS_SERVICE_NAME/packages/acs-core-docs/www/files/myfirstpackage/* . -[$OPENACS_SERVICE_NAME xml]$ -

    OpenACS uses DocBook for documentation. DocBook is an XML +[$OPENACS_SERVICE_NAME xml]$

    OpenACS uses DocBook for documentation. DocBook is an XML standard for semantic markup of documentation. That means that the tags you use indicate meaning, not intended appearance. The style sheet will determine appearance. You will edit the text in an xml @@ -41,8 +39,7 @@ stored in the www/docs/ directory. A Makefile is provided to generate html from the xml, and copy all of the supporting files. If Docbook is set up -correctly, all you need to do is:

    -[$OPENACS_SERVICE_NAME xml]$ make
    +correctly, all you need to do is:

    [$OPENACS_SERVICE_NAME xml]$ make
     cd .. ; /usr/bin/xsltproc ../../../acs-core-docs/www/xml/openacs.xsl xml/index.xml
     Writing requirements-introduction.html for chapter(requirements-introduction)
     Writing requirements-overview.html for chapter(requirements-overview)
    @@ -58,15 +55,14 @@
     Writing admin-guide.html for chapter(admin-guide)
     Writing bi01.html for bibliography
     Writing index.html for book
    -[$OPENACS_SERVICE_NAME xml]$
    -

    Verify that the documentation was generated and reflects your +[$OPENACS_SERVICE_NAME xml]$

    Verify that the documentation was generated and reflects your changes by browsing to http://yoursite:8000/myfirstpackage/doc

    - \ No newline at end of file + leftLink="tutorial-advanced" leftLabel="Prev" leftTitle="Chapter 10. Advanced +Topics" + rightLink="tutorial-cvs" rightLabel="Next" rightTitle="Add the new package to CVS" + homeLink="index" homeLabel="Home" + upLink="tutorial-advanced" upLabel="Up"> + \ No newline at end of file Index: openacs-4/packages/acs-core-docs/www/tutorial-upgrade-scripts.adp =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/tutorial-upgrade-scripts.adp,v diff -u -N -r1.3 -r1.4 --- openacs-4/packages/acs-core-docs/www/tutorial-upgrade-scripts.adp 8 Nov 2017 09:42:12 -0000 1.3 +++ openacs-4/packages/acs-core-docs/www/tutorial-upgrade-scripts.adp 25 Apr 2018 08:38:28 -0000 1.4 @@ -3,11 +3,11 @@ Writing upgrade scripts -
    + leftLink="tutorial-parameters" leftLabel="Prev" + title="Chapter 10. Advanced +Topics" + rightLink="tutorial-second-database" rightLabel="Next"> +

    Writing upgrade scripts

    <authorblurb>

    by Jade Rubick

    </authorblurb>

    If your package changes its data model, you have to write an @@ -21,14 +21,13 @@ more serious and fundamental changes than the program .tcl files.

    Now use the APM to create a new package version 1.0b2. Commit all your changes, tag the release (the section called -“Distributing upgrades of your -package”), and both new installations and upgrades -will be taken care of.

    +“Distributing upgrades of your package”), and both new +installations and upgrades will be taken care of.

    - \ No newline at end of file + rightLink="tutorial-second-database" rightLabel="Next" rightTitle="Connect to a second database" + homeLink="index" homeLabel="Home" + upLink="tutorial-advanced" upLabel="Up"> + \ No newline at end of file Index: openacs-4/packages/acs-core-docs/www/tutorial-upgrades.adp =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/tutorial-upgrades.adp,v diff -u -N -r1.3 -r1.4 --- openacs-4/packages/acs-core-docs/www/tutorial-upgrades.adp 8 Nov 2017 09:42:12 -0000 1.3 +++ openacs-4/packages/acs-core-docs/www/tutorial-upgrades.adp 25 Apr 2018 08:38:28 -0000 1.4 @@ -3,11 +3,11 @@ Distributing upgrades of your package -
    + leftLink="tutorial-distribute" leftLabel="Prev" + title="Chapter 10. Advanced +Topics" + rightLink="tutorial-notifications" rightLabel="Next"> +

    Distributing upgrades of your package

    <authorblurb>

    by Jade Rubick

    </authorblurb>

    The OpenACS Package Repository builds a list of packages that @@ -17,18 +17,17 @@ release a new version of your package.

    For the sake of this example, let's assume you are the package owner of the notes package. It is currently at version 1.5, and you are planning on -releasing version 1.6. It is also located in OpenACS's CVS.

    To release your package:

    -cd /path/to/notes
    +releasing version 1.6. It is also located in OpenACS's CVS.

    To release your package:

    cd /path/to/notes
     cvs commit -m "Update package to version 1.6."
     cvs tag notes-1-6-final
     cvs tag -F openacs-5-1-compat
    -

    Of course, make sure you write upgrade scripts (the section called -“Writing upgrade scripts”)

    +

    Of course, make sure you write upgrade scripts (the section called “Writing upgrade +scripts”)

    - \ No newline at end of file + rightLink="tutorial-notifications" rightLabel="Next" rightTitle="Notifications" + homeLink="index" homeLabel="Home" + upLink="tutorial-advanced" upLabel="Up"> + \ No newline at end of file Index: openacs-4/packages/acs-core-docs/www/tutorial-vuh.adp =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/tutorial-vuh.adp,v diff -u -N -r1.3 -r1.4 --- openacs-4/packages/acs-core-docs/www/tutorial-vuh.adp 8 Nov 2017 09:42:12 -0000 1.3 +++ openacs-4/packages/acs-core-docs/www/tutorial-vuh.adp 25 Apr 2018 08:38:28 -0000 1.4 @@ -3,11 +3,11 @@ Using .vuh files for pretty urls -
    + leftLink="tutorial-hierarchical" leftLabel="Prev" + title="Chapter 10. Advanced +Topics" + rightLink="tutorial-css-layout" rightLabel="Next"> +

    Using .vuh files for pretty urls

    .Vuh files are special cases of .tcl files, used for rewriting incoming urls. We can use a vuh file to prettify the uri for our @@ -17,8 +17,7 @@ referring links in note-list. First, add the vuh:

     [$OPENACS_SERVICE_NAME $OPENACS_SERVICE_NAME]$ cd /var/lib/aolserver/$OPENACS_SERVICE_NAME/packages/myfirstpackage/www
     [$OPENACS_SERVICE_NAME www]$ emacs note.vuh
    -

    Paste this into the file:

    -# Transform requests of type: a/b
    +

    Paste this into the file:

    # Transform requests of type: a/b
     # into this internal request: A?c=b
     # for example, note/495 > note-edit?item_id=496
     # a: base name of this .vuh file
    @@ -50,8 +49,7 @@
     able to look up an item based on pretty id.

    We use rp_form_put to store the item id in the internal register that the next page is expecting, and then redirects the request in process internally -(ie, without a browser refresh).

    Next, modify note-list so that its link is of the new form.:

    -[$OPENACS_SERVICE_NAME www]$ emacs ../lib/note-edit.tcl
    +(ie, without a browser refresh).

    Next, modify note-list so that its link is of the new form.:

    [$OPENACS_SERVICE_NAME www]$ emacs ../lib/note-edit.tcl
     
     db_multirow \
         -extend {
    @@ -74,9 +72,9 @@
     being served from.

    - \ No newline at end of file + homeLink="index" homeLabel="Home" + upLink="tutorial-advanced" upLabel="Up"> + \ No newline at end of file Index: openacs-4/packages/acs-core-docs/www/tutorial-wysiwyg-editor.adp =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/tutorial-wysiwyg-editor.adp,v diff -u -N -r1.3 -r1.4 --- openacs-4/packages/acs-core-docs/www/tutorial-wysiwyg-editor.adp 8 Nov 2017 09:42:12 -0000 1.3 +++ openacs-4/packages/acs-core-docs/www/tutorial-wysiwyg-editor.adp 25 Apr 2018 08:38:28 -0000 1.4 @@ -3,28 +3,26 @@ Enabling WYSIWYG -
    + leftLink="tutorial-schedule-procs" leftLabel="Prev" + title="Chapter 10. Advanced +Topics" + rightLink="tutorial-parameters" rightLabel="Next"> +

    Enabling WYSIWYG

    <authorblurb>

    by Nima Mazloumi

    </authorblurb>

    Most of the forms in OpenACS are created using the form builder, see the section -called “Using Form Builder: building html forms -dynamically”. For detailed information on the API -take a look here.

    The following section shows how you can modify your form to +called “Using Form Builder: building html forms dynamically”. +For detailed information on the API take a look here.

    The following section shows how you can modify your form to allow WYSIWYG functionalities.

    Convert your page to use ad_form (some changes but worth it)

    Here an examples. From:

             template::form create my_form
             template::element create my_form my_form_id -label "The ID" -datatype integer -widget hidden
             template::element create my_form my_input_field_1 -html { size 30 } -label "Label 1" -datatype text -optional
             template::element create my_form my_input_field_2 -label "Label 2" -datatype text -help_text "Some Help" -after_html {<a name="#">Anchor</a>}
    -        
    -

    To:

    +        

    To:

             ad_form -name my_form -form {
                     my_form_id:key(acs_object_id_seq)
                     {my_input_field_1:text,optional
    @@ -36,20 +34,17 @@
                        {after_html
                    {<a name="#">Anchor</a>}}}
             } ...
    -        
    -
    -

    Warning

    You must not give your your form the same name that your page -has. Otherwise HTMLArea won't load.

    +
    +

    Warning

    You must not give your form the same name that your page has. +Otherwise HTMLArea won't load.

    Convert your textarea widget to a richtext widget and enable htmlarea.

    The htmlarea_p-flag can be used to prevent WYSIWYG functionality. Defaults to true if left away.

    From:

             {my_input_field_2:text
    -        
    -

    To:

    +        

    To:

             {my_input_field_2:richtext(richtext)
                             {htmlarea_p "t"}
    -        
    -

    The richtext widget presents a list with two elements: text and +

    The richtext widget presents a list with two elements: text and content type. To learn more on existing content types search in Google for "MIME-TYPES" or take a look at the cr_mime_types table.

    Make sure that both values are passed as a list to your @@ -63,16 +58,14 @@ -on_request block. If you have the format stored in the database pass this as well else use "text/html":

             set my_input_field_2 [template::util::richtext::create $my_input_field_2 "text/html"]
    -        
    -

    Now make sure that your SQL queries that do the data +

    Now make sure that your SQL queries that do the data manipulation retrieve the correct value. If you simply use my_input_field_2 you will store a list. Thus you need to add an -on_submit block:

             set my_input_field_2 [ template::util::richtext::get_property contents $my_input_field_2]
             set format [ template::util::richtext::get_property format $my_input_field_2] #This is optional
    -        
    -

    Now the correct values for my_input_field_2 and format +

    Now the correct values for my_input_field_2 and format are passed to the -new_data and -edit_data blocks which don't need to get touched.

    To make HTMLArea optional per package instance define a string @@ -84,12 +77,10 @@ ... {htmlarea_p $use_wysiwyg_p} - -

    The -on_request switch should set this +

    The -on_request switch should set this value for your form.

             set htmlarea_p $use_wysiwyg_p
    -        
    -

    All you need now is a configuration page where the user can +

    All you need now is a configuration page where the user can change this setting. Create a configure.tcl file:

     ad_page_contract {
     
    @@ -124,20 +115,18 @@
             <property name="context">\@context\@</property>
     
             <formtemplate id="categories_mode"></formtemplate>
    -        
    -

    And finally reference this page from your admin page

    +        

    And finally reference this page from your admin page

             #TCL:
             set return_url [ad_conn url]
     
             #ADP:
             <a href=configure?<%=[export_vars -url {return_url}]%>>Configure</a>
    -        
    -
    +
    - \ No newline at end of file + homeLink="index" homeLabel="Home" + upLink="tutorial-advanced" upLabel="Up"> + \ No newline at end of file Index: openacs-4/packages/acs-core-docs/www/tutorial-wysiwyg-editor.html =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/tutorial-wysiwyg-editor.html,v diff -u -N -r1.11 -r1.12 --- openacs-4/packages/acs-core-docs/www/tutorial-wysiwyg-editor.html 8 Nov 2017 09:42:12 -0000 1.11 +++ openacs-4/packages/acs-core-docs/www/tutorial-wysiwyg-editor.html 25 Apr 2018 08:38:28 -0000 1.12 @@ -30,7 +30,7 @@ } ...

    Warning

    -

    You must not give your your form the same name that your page has. Otherwise HTMLArea won't load.

    +

    You must not give your form the same name that your page has. Otherwise HTMLArea won't load.

    Convert your textarea widget to a richtext widget and enable htmlarea.

    The htmlarea_p-flag can be used to prevent Index: openacs-4/packages/acs-core-docs/www/tutorial.adp =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/tutorial.adp,v diff -u -N -r1.2 -r1.3 --- openacs-4/packages/acs-core-docs/www/tutorial.adp 7 Aug 2017 23:47:53 -0000 1.2 +++ openacs-4/packages/acs-core-docs/www/tutorial.adp 25 Apr 2018 08:38:28 -0000 1.3 @@ -1,19 +1,15 @@ -{/doc/acs-core-docs {ACS Core Documentation}} {Chapter 9. Development -Tutorial} -Chapter 9. Development -Tutorial +{/doc/acs-core-docs {ACS Core Documentation}} {Chapter 9. Development Tutorial} +Chapter 9. Development Tutorial -

    + leftLink="acs-package-dev" leftLabel="Prev" + title="Part III. For OpenACS +Package Developers" + rightLink="tutorial-newpackage" rightLabel="Next"> +

    -Chapter 9. Development -Tutorial

    +Chapter 9. Development Tutorial
    - \ No newline at end of file + leftLink="acs-package-dev" leftLabel="Prev" leftTitle="Part III. For OpenACS +Package Developers" + rightLink="tutorial-newpackage" rightLabel="Next" rightTitle="Creating an Application Package" + homeLink="index" homeLabel="Home" + upLink="acs-package-dev" upLabel="Up"> + \ No newline at end of file Index: openacs-4/packages/acs-core-docs/www/unix-installation.adp =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/unix-installation.adp,v diff -u -N -r1.3 -r1.4 --- openacs-4/packages/acs-core-docs/www/unix-installation.adp 8 Nov 2017 09:42:12 -0000 1.3 +++ openacs-4/packages/acs-core-docs/www/unix-installation.adp 25 Apr 2018 08:38:28 -0000 1.4 @@ -3,11 +3,11 @@ Install a Unix-like system and supporting software -
    + leftLink="complete-install" leftLabel="Prev" + title="Chapter 3. Complete +Installation" + rightLink="oracle" rightLabel="Next"> +

    Install a Unix-like system and supporting software

    <authorblurb>

    by Joel @@ -35,15 +35,15 @@

    In order to cut and paste the example code into your shell, you must first do Setting a global shell variable for cut and paste.

    To install a machine to the specifications of the Reference -Platform, do the walkthrough -of the Red Hat 8.0 Install for OpenACS.

    ($‌Id: os.xml,v 1.16 2017/08/07 23:47:55 +Platform, do the walkthrough of the Red +Hat 8.0 Install for OpenACS.

    ($‌Id: os.xml,v 1.16 2017/08/07 23:47:55 gustafn Exp $)

    - \ No newline at end of file + leftLink="complete-install" leftLabel="Prev" leftTitle="Chapter 3. Complete +Installation" + rightLink="oracle" rightLabel="Next" rightTitle="Install Oracle 8.1.7" + homeLink="index" homeLabel="Home" + upLink="complete-install" upLabel="Up"> + \ No newline at end of file Index: openacs-4/packages/acs-core-docs/www/update-repository.adp =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/update-repository.adp,v diff -u -N -r1.3 -r1.4 --- openacs-4/packages/acs-core-docs/www/update-repository.adp 27 Mar 2018 12:22:17 -0000 1.3 +++ openacs-4/packages/acs-core-docs/www/update-repository.adp 25 Apr 2018 08:38:28 -0000 1.4 @@ -3,11 +3,11 @@ How to Update the OpenACS.org repository -
    + leftLink="releasing-openacs-core" leftLabel="Prev" + title="Chapter 16. Releasing +OpenACS" + rightLink="releasing-package" rightLabel="Next"> +

    How to Update the OpenACS.org repository

      @@ -31,8 +31,7 @@ for building the repository, invoked with this shell script. Since the page circumvents security checks for ease of use, the entire site is limited to local requests. The script is called daily with -a cron job.

      -#!/bin/sh
      +a cron job.

      #!/bin/sh
       #set -x
       
       STATUS=`wget --output-document - http://127.0.0.1:8002/build-repository.tcl | grep DONE | wc -l`
      @@ -42,15 +41,14 @@
           rm -rf /web/openacs.org/www/repository.old
           mv /web/openacs.org/www/repository /web/openacs.org/www/repository.old
           cp -r /web/repository/www/repository /web/openacs.org/www/repository
      -fi
      -
      +fi
    - + homeLink="index" homeLabel="Home" + upLink="releasing-openacs" upLabel="Up"> + \ No newline at end of file Index: openacs-4/packages/acs-core-docs/www/update-translations.adp =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/update-translations.adp,v diff -u -N -r1.3 -r1.4 --- openacs-4/packages/acs-core-docs/www/update-translations.adp 8 Nov 2017 09:42:12 -0000 1.3 +++ openacs-4/packages/acs-core-docs/www/update-translations.adp 25 Apr 2018 08:38:28 -0000 1.4 @@ -3,11 +3,11 @@ How to Update the translations -
    + leftLink="releasing-package" leftLabel="Prev" + title="Chapter 16. Releasing +OpenACS" + rightLink="ix01" rightLabel="Next"> +

    How to Update the translations

    1. @@ -16,13 +16,11 @@ format [two-letter code for language, lower-case]_[TWO-LETTER CODE FOR COUNTRY, UPPER-CASE], and create a sql command. A example sql command for creating a -locale is:

      -insert into ad_locales 
      +locale is:

      insert into ad_locales 
              (locale, label, language, country, nls_language, nls_territory, 
               nls_charset, mime_charset, default_p, enabled_p)
              values ('fa_IR', 'Farsi (IR)', 'fa', 'IR', 'FARSI', 'IRAN', 'AL24UTFFSS', 
      -        'windows-1256', 't', 'f');
      -

      Put this command into the following four files. For the upgrade + 'windows-1256', 't', 'f');

      Put this command into the following four files. For the upgrade files, the correct file name will depend on the exact version.

      • /packages/acs-lang/sql/postgresql/ad-locales.sql

      • /packages/acs-lang/sql/postgresql/upgrade/upgrade-current-version.sql

      • /packages/acs-lang/sql/oracle/ad-locales.sql

      • /packages/acs-lang/sql/oracle/upgrade/upgrade-current-version.sql

      @@ -36,10 +34,8 @@ usually, /etc/config.tcl and /etc/daemontools/run and modify appropriately. Also, copy over several translation-server-only -files:

      -...TBD
      -          
      -
      +files:

      ...TBD
      +          
    2. Shut down the production site and put up a notice (no procedure on how to do this yet.)

    3. Start the new site, and upgrade it.

    4. Go to ACS Lang admin page and click "Import All Messages"

    5. Resolve conflicts, if any, on the provided page.

    6. Back on the admin page, click the export link. If there are @@ -54,9 +50,9 @@

    - \ No newline at end of file + rightLink="ix01" rightLabel="Next" rightTitle="Index" + homeLink="index" homeLabel="Home" + upLink="releasing-openacs" upLabel="Up"> + \ No newline at end of file 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 -N -r1.3 -r1.4 --- openacs-4/packages/acs-core-docs/www/upgrade-4.5-to-4.6.adp 8 Nov 2017 09:42:12 -0000 1.3 +++ openacs-4/packages/acs-core-docs/www/upgrade-4.5-to-4.6.adp 25 Apr 2018 08:38:28 -0000 1.4 @@ -3,13 +3,12 @@ Upgrading 4.5 or higher to 4.6.3 -
    + leftLink="upgrade-overview" leftLabel="Prev" + title="Chapter 5. Upgrading" + rightLink="upgrade-4.6.3-to-5" rightLabel="Next"> +

    -Upgrading 4.5 or higher to 4.6.3

    The required platform for OpenACS 4.6 is the same as 4.5, with +Upgrading 4.5 or higher to 4.6.3

    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.

    If upgrading from 4.4, you need to manually run @@ -21,26 +20,21 @@

    1. -Make a Backup.  Back up the -database and file system (see the -section called “Manual backup and -recovery”).

    2. +Make a Backup.  Back up the database and +file system (see the section called “Manual backup and +recovery”).

    3. OPTIONAL: Upgrade OpenFTS. the section called -“Upgrading OpenFTS from 0.2 to -0.3.2” +“Upgrading OpenFTS from 0.2 to 0.3.2”

    4. -

      Stop the server

      -[root root]# svc -d /service/$OPENACS_SERVICE_NAME
      +

      Stop the server

      [root root]# svc -d /service/$OPENACS_SERVICE_NAME
       
       
    5. -Upgrade the file system. the section called -“Upgrading the OpenACS -files” +Upgrade the file system. the section called “Upgrading the +OpenACS files”

    6. Start the -server

      -[root root]# svc -u /service/$OPENACS_SERVICE_NAME
      +server

      [root root]# svc -u /service/$OPENACS_SERVICE_NAME
       
       
    7. @@ -55,8 +49,7 @@ desired packages in a second pass.

    8. On the next screen, click Install Packages

    9. -

      When prompted, restart the server:

      -[root root]# restart-aolserver $OPENACS_SERVICE_NAME
      +

      When prompted, restart the server:

      [root root]# restart-aolserver $OPENACS_SERVICE_NAME
       
       
    10. Wait a minute, then browse to the package manager, http://yourserver/acs-admin/apm.

    11. Check that the kernel upgrade worked by clicking All and @@ -69,8 +62,8 @@

    - \ No newline at end of file + leftLink="upgrade-overview" leftLabel="Prev" leftTitle="Overview" + rightLink="upgrade-4.6.3-to-5" rightLabel="Next" rightTitle="Upgrading OpenACS 4.6.3 to 5.0" + homeLink="index" homeLabel="Home" + upLink="upgrade" upLabel="Up"> + \ No newline at end of file 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 -N -r1.29 -r1.30 --- openacs-4/packages/acs-core-docs/www/upgrade-4.5-to-4.6.html 8 Nov 2017 09:42:12 -0000 1.29 +++ openacs-4/packages/acs-core-docs/www/upgrade-4.5-to-4.6.html 25 Apr 2018 08:38:28 -0000 1.30 @@ -1,7 +1,7 @@ Upgrading 4.5 or higher to 4.6.3

    Upgrading 4.5 or higher to 4.6.3

    - +

    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.

    If upgrading from 4.4, you need to manually run acs-kernel/sql/postgres/upgrade-4.4-4.5.sql. See Bug #632

    Index: openacs-4/packages/acs-core-docs/www/upgrade-4.6.3-to-5.adp =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/upgrade-4.6.3-to-5.adp,v diff -u -N -r1.3 -r1.4 --- openacs-4/packages/acs-core-docs/www/upgrade-4.6.3-to-5.adp 8 Nov 2017 09:42:12 -0000 1.3 +++ openacs-4/packages/acs-core-docs/www/upgrade-4.6.3-to-5.adp 25 Apr 2018 08:38:28 -0000 1.4 @@ -3,37 +3,32 @@ Upgrading OpenACS 4.6.3 to 5.0 -
    + leftLink="upgrade-4.5-to-4.6" leftLabel="Prev" + title="Chapter 5. Upgrading" + rightLink="upgrade-5-0-dot" rightLabel="Next"> +

    Upgrading OpenACS 4.6.3 to 5.0

    - \ No newline at end of file + homeLink="index" homeLabel="Home" + upLink="upgrade" upLabel="Up"> + \ No newline at end of file Index: openacs-4/packages/acs-core-docs/www/upgrade-5-0-dot.adp =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/upgrade-5-0-dot.adp,v diff -u -N -r1.3 -r1.4 --- openacs-4/packages/acs-core-docs/www/upgrade-5-0-dot.adp 8 Nov 2017 09:42:12 -0000 1.3 +++ openacs-4/packages/acs-core-docs/www/upgrade-5-0-dot.adp 25 Apr 2018 08:38:28 -0000 1.4 @@ -3,19 +3,18 @@ Upgrading an OpenACS 5.0.0 or greater installation -

    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:

    1. Declare a freeze on new cvs updates - ie, you cannot run cvs @@ -227,9 +214,9 @@

    + leftLink="upgrade-4.6.3-to-5" leftLabel="Prev" + title="Chapter 5. Upgrading" + rightLink="upgrade-openacs-files" rightLabel="Next"> +

    Upgrading an OpenACS 5.0.0 or greater installation

    • -Upgrading a stock site.  If you -have no custom code, and your site is not in a CVS repository, -upgrade with these steps:

        +Upgrading a stock site.  If you have no +custom code, and your site is not in a CVS repository, upgrade with +these steps:

        1. Go to /acs-admin/install/ and click "Upgrade Your System" in "Install from OpenACS Repository"

        2. Select all of the packages you want to upgrade and proceed

        3. After upgrade is complete, restart the server as indicated.

        4. If you are using locales other than en_US, go to acs-lang/admin and "Import all Messages" to load the new translated @@ -24,14 +23,13 @@

      1. -Upgrading a Custom or CVS site.  If -you have custom code, and your site is in a CVS repository, upgrade +Upgrading a Custom or CVS site.  If you +have custom code, and your site is in a CVS repository, upgrade with these steps:

        1. Upgrade the file system for all packages in -use. the section called -“Upgrading the OpenACS -files” +use. the section called “Upgrading the +OpenACS files”

        2. Go to /acs-admin/install/ and click "Upgrade Your System" in "Install from local file system"

        3. Select all of the packages you want to upgrade and proceed

        4. After upgrade is complete, restart the server as indicated.

        5. If you are using locales other than en_US, go to acs-lang/admin and "Import all Messages" to load the new translated @@ -42,8 +40,8 @@

    - \ No newline at end of file + leftLink="upgrade-4.6.3-to-5" leftLabel="Prev" leftTitle="Upgrading OpenACS 4.6.3 to 5.0" + rightLink="upgrade-openacs-files" rightLabel="Next" rightTitle="Upgrading the OpenACS files" + homeLink="index" homeLabel="Home" + upLink="upgrade" upLabel="Up"> + \ No newline at end of file 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 -N -r1.4 -r1.5 --- openacs-4/packages/acs-core-docs/www/upgrade-openacs-files.adp 24 Mar 2018 00:14:57 -0000 1.4 +++ openacs-4/packages/acs-core-docs/www/upgrade-openacs-files.adp 25 Apr 2018 08:38:28 -0000 1.5 @@ -3,16 +3,15 @@ Upgrading the OpenACS files -
    + leftLink="upgrade-5-0-dot" leftLabel="Prev" + title="Chapter 5. Upgrading" + rightLink="upgrade-supporting" rightLabel="Next"> +

    Upgrading the OpenACS files

    -Choosing a Method to Upgrade your +Choosing a Method to Upgrade your Files

    OpenACS is distributed in many different ways:

    • as a collection of files

    • as one big tarball

    • via CVS

    • via automatic download from within the APM (package manager)

    Upgrades work by first changing the file system (via any of the @@ -22,20 +21,19 @@ system for you. If you are using the last method, you can skip this page. This page describes whether or not you need to be upgrading using this page or not: the -section called “Upgrading an OpenACS 5.0.0 or -greater installation” +section called “Upgrading an OpenACS 5.0.0 or greater +installation”

    -Methods of upgrading OpenACS files

      +Methods of upgrading OpenACS files
    • Upgrading files for a site which is not in a CVS -repository.  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.

      -[root root]# su - $OPENACS_SERVICE_NAME
      +repository.  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.

      [root root]# su - $OPENACS_SERVICE_NAME
       
       [$OPENACS_SERVICE_NAME aolserver]$ cd /var/lib/aolserver
       [$OPENACS_SERVICE_NAME web]$ tar xzf /var/tmp/openacs-5-1.tar.gz
      @@ -56,20 +54,20 @@
       version, without overriding your own local customizations.

      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.

      -

      Figure 5.2. Upgrading a local CVS -repository

      Upgrading a local CVS repository
      +

      Figure 5.2. Upgrading a local +CVS repository

      Upgrading a local CVS repository

      • -Step 0: Set up a working CVS -checkout.  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 into your local CVS -checkout, create a temporary CVS checkout to merge your local -changes, fix any conflicts, commit your changes, and then update -your site. It sounds complicated, but it's not too bad, and it -is the best way to work around CVS's limitations.

        This part describes how to set up your working CVS checkout. +Step 0: Set up a working CVS checkout.  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 into your local CVS checkout, create a temporary CVS +checkout to merge your local changes, fix any conflicts, commit +your changes, and then update your site. It sounds complicated, but +it's not too bad, and it is the best way to work around +CVS's limitations.

        This part describes how to set up your working CVS checkout. Once it is set up, you'll be able to update any packages using the existing working CVS checkout. We use one dedicated directory for each branch of OpenACS - if you are using OpenACS 5.1,x, you @@ -80,8 +78,7 @@ 5.1.3 or 5.1.4) and the latest compatible version of each package. Each minor release of OpenACS since 5.0 has this tagging structure. For example, OpenACS 5.1.x has openacs-5-1-compat.

        You will want to separately check out all the packages you are -using.

        -[root root]# su - $OPENACS_SERVICE_NAME
        +using.

        [root root]# su - $OPENACS_SERVICE_NAME
         
         [$OPENACS_SERVICE_NAME aolserver]$ cd /var/lib/aolserver
         [$OPENACS_SERVICE_NAME aolserver]$ cvs -d :pserver:anonymous\@cvs.openacs.org:/cvsroot checkout -r openacs-5-1-compat acs-core
        @@ -97,13 +94,11 @@
         tree. You might want to start over, remove your working CVS
         checkout, and try again.

      • -

        Step 1: Import new OpenACS -code. 

          +

          Step 1: Import new OpenACS code. 

          • -Update CVS.  Update your local CVS -working checkout (unless you just set it up).

            -[root root]# su - $OPENACS_SERVICE_NAME
            +Update CVS.  Update your local CVS working
            +checkout (unless you just set it up).

            [root root]# su - $OPENACS_SERVICE_NAME
             
             [$OPENACS_SERVICE_NAME aolserver]$ cd /var/lib/aolserver/openacs-5-1
             
            @@ -112,9 +107,8 @@
             
          • Update a single package via cvs working -checkout.  You can add or upgrade a single -package at a time, if you already have a cvs working directory.

            -[root root]# su - $OPENACS_SERVICE_NAME
            +checkout.  You can add or upgrade a single package at
            +a time, if you already have a cvs working directory.

            [root root]# su - $OPENACS_SERVICE_NAME
             
             [$OPENACS_SERVICE_NAME aolserver]$ cd /var/lib/aolserver/packages/openacs-5-1
             
            @@ -126,10 +120,10 @@
             
        • -Step 2: Merge New OpenACS code.  -Now that you have a local copy of the new OpenACS code, you need to -import it into your local CVS repository and resolve any conflicts -that occur.

          Import the new files into your cvs repository; where they match +Step 2: Merge New OpenACS code.  Now that +you have a local copy of the new OpenACS code, you need to import +it into your local CVS repository and resolve any conflicts that +occur.

          Import the new files into your cvs repository; where they match existing files, they will become the new version of the file.

           [$OPENACS_SERVICE_NAME openacs-5-1]$  cd /var/lib/aolserver/openacs-5-1
           
          @@ -139,8 +133,7 @@
           

          Tip

          If adding or upgrading a single package, run the cvs import from within the base directory of that package, and adjust the cvs command accordingly. In this example, we are adding the -myfirstpackage package.

          -[root root]# su - $OPENACS_SERVICE_NAME
          +myfirstpackage package.

          [root root]# su - $OPENACS_SERVICE_NAME
           
           [$OPENACS_SERVICE_NAME aolserver]$ cd /var/lib/aolserver/openacs-5-0/package/myfirstpackage
           
          @@ -156,8 +149,7 @@
           [$OPENACS_SERVICE_NAME tmp]$ rm -rf $OPENACS_SERVICE_NAME-upgrade
           [$OPENACS_SERVICE_NAME tmp]$ mkdir $OPENACS_SERVICE_NAME-upgrade
           [$OPENACS_SERVICE_NAME tmp]$ cvs checkout -d $OPENACS_SERVICE_NAME-upgrade -jOpenACS:yesterday -jOpenACS -kk $OPENACS_SERVICE_NAME > cvs.txt 2>&1
          -(CVS feedback here)
          -

          The file /var/tmp/openacs-upgrade/cvs.txt contains the results +(CVS feedback here)

          The file /var/tmp/openacs-upgrade/cvs.txt contains the results of the upgrade. If you changed files that are part of the OpenACS tarball and those changes conflict, you'll have to manually reconcile them. Use the emacs command M-x sort-lines (you may have to click @@ -166,37 +158,32 @@ C, open that file and manually resolve the conflict by deleting the excess lines. When you're finished, or if there aren't any conflicts, save and exit.

          Once you've fixed any conflicts, commit the new code to your -local tree.

          -[$OPENACS_SERVICE_NAME tmp]$ cd $OPENACS_SERVICE_NAME-upgrade
          +local tree.

          [$OPENACS_SERVICE_NAME tmp]$ cd $OPENACS_SERVICE_NAME-upgrade
           [$OPENACS_SERVICE_NAME $OPENACS_SERVICE_NAME-upgrade]$ cvs commit -m "Upgraded to 5.1"
           
        • -Step 3: Upgrade your local staging -site.  Update your working tree with the new -files. The CVS flags ensure that new directories are created and -pruned directories destroyed.

          -[$OPENACS_SERVICE_NAME $OPENACS_SERVICE_NAME-upgrade]$ cd /var/lib/aolserver/$OPENACS_SERVICE_NAME
          +Step 3: Upgrade your local staging site. 
          +Update your working tree with the new files. The CVS flags ensure
          +that new directories are created and pruned directories
          +destroyed.

          [$OPENACS_SERVICE_NAME $OPENACS_SERVICE_NAME-upgrade]$ cd /var/lib/aolserver/$OPENACS_SERVICE_NAME
           
           [$OPENACS_SERVICE_NAME $OPENACS_SERVICE_NAME]$ cvs up -Pd
           (CVS feedback)
           [$OPENACS_SERVICE_NAME $OPENACS_SERVICE_NAME]$ exit
          -[root root]# 
          -
          +[root root]#

      Upgrading files for a site using -the OpenACS CVS repository (cvs.openacs.org)

      1. -[$OPENACS_SERVICE_NAME ~]$ cd /var/lib/aolserver/$OPENACS_SERVICE_NAME
        +the OpenACS CVS repository (cvs.openacs.org)

        1. [$OPENACS_SERVICE_NAME ~]$ cd /var/lib/aolserver/$OPENACS_SERVICE_NAME
           
           [$OPENACS_SERVICE_NAME $OPENACS_SERVICE_NAME]$ cvs up -Pd
           (CVS feedback)
          -[$OPENACS_SERVICE_NAME $OPENACS_SERVICE_NAME]$
          -
        +[$OPENACS_SERVICE_NAME $OPENACS_SERVICE_NAME]$

    -Upgrading a Production Site Safely

    If you are upgrading a production OpenACS site which is on a +Upgrading a Production Site Safely

    - + rightLink="upgrade-supporting" rightLabel="Next" rightTitle="Upgrading Platform components" + homeLink="index" homeLabel="Home" + upLink="upgrade" upLabel="Up"> + \ No newline at end of file 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 -N -r1.30 -r1.31 --- openacs-4/packages/acs-core-docs/www/upgrade-openacs-files.html 24 Mar 2018 00:14:57 -0000 1.30 +++ openacs-4/packages/acs-core-docs/www/upgrade-openacs-files.html 25 Apr 2018 08:38:28 -0000 1.31 @@ -2,7 +2,7 @@ Upgrading the OpenACS files

    Upgrading the OpenACS files

    -

    Choosing a Method to Upgrade your Files

    +

    Choosing a Method to Upgrade your Files

    OpenACS is distributed in many different ways:

    • as a collection of files

    • as one big tarball

    • via CVS

    • via automatic download from within the APM @@ -21,7 +21,7 @@

    -

    Methods of upgrading OpenACS files

    +

    Methods of upgrading OpenACS files

    • @@ -57,7 +57,7 @@ labels are incorrect. Step 1(a) has been removed, and Step 1(b) should be labelled Step 1.

      -

      Figure 5.2. Upgrading a local CVS repository

      +

      Figure 5.2. Upgrading a local CVS repository

      Upgrading a local CVS repository

      @@ -192,7 +192,7 @@ [$OPENACS_SERVICE_NAME $OPENACS_SERVICE_NAME]$
    -

    Upgrading a Production Site Safely

    +

    Upgrading a Production Site Safely

    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:

    1. 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 -N -r1.3 -r1.4 --- openacs-4/packages/acs-core-docs/www/upgrade-overview.adp 8 Nov 2017 09:42:12 -0000 1.3 +++ openacs-4/packages/acs-core-docs/www/upgrade-overview.adp 25 Apr 2018 08:38:28 -0000 1.4 @@ -3,11 +3,10 @@ Overview -
      + leftLink="upgrade" leftLabel="Prev" + title="Chapter 5. Upgrading" + rightLink="upgrade-4.5-to-4.6" rightLabel="Next"> +

      Overview

      Starting with Version 4.5, all OpenACS core packages support automatic upgrade. That means that, if you have OpenACS 4.5 or @@ -26,11 +25,11 @@ upgrade scripts, and prompt you to restart the server. After restarting the server again, the upgrade is complete.

    -

    Figure 5.1. Upgrading with the +

    Figure 5.1. Upgrading with the APM

    Upgrading with the APM

    It's always a good idea to precede an upgrade attempt with a snapshot backup.

    -

    Table 5.1. Assumptions in this +

    Table 5.1. Assumptions in this section

    @@ -49,9 +48,8 @@
    - \ No newline at end of file + leftLink="upgrade" leftLabel="Prev" leftTitle="Chapter 5. Upgrading" + rightLink="upgrade-4.5-to-4.6" rightLabel="Next" rightTitle="Upgrading 4.5 or higher to 4.6.3" + homeLink="index" homeLabel="Home" + upLink="upgrade" upLabel="Up"> + \ No newline at end of file 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 -N -r1.29 -r1.30 --- openacs-4/packages/acs-core-docs/www/upgrade-overview.html 8 Nov 2017 09:42:12 -0000 1.29 +++ openacs-4/packages/acs-core-docs/www/upgrade-overview.html 25 Apr 2018 08:38:28 -0000 1.30 @@ -23,13 +23,13 @@
  • 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.

  • -

    Figure 5.1. Upgrading with the APM

    +

    Figure 5.1. Upgrading with the APM

    Upgrading with the APM

    It's always a good idea to precede an upgrade attempt with a snapshot backup.

    -

    Table 5.1. Assumptions in this section

    +

    Table 5.1. Assumptions in this section

    name of OpenACS user$OPENACS_SERVICE_NAME
    OpenACS server name$OPENACS_SERVICE_NAME
    Root of OpenACS file tree/var/lib/aolserver/$OPENACS_SERVICE_NAME
    Database backup directory/var/lib/aolserver/$OPENACS_SERVICE_NAME/database-backup

    Index: openacs-4/packages/acs-core-docs/www/upgrade-supporting.adp =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/upgrade-supporting.adp,v diff -u -N -r1.4 -r1.5 --- openacs-4/packages/acs-core-docs/www/upgrade-supporting.adp 27 Mar 2018 12:22:17 -0000 1.4 +++ openacs-4/packages/acs-core-docs/www/upgrade-supporting.adp 25 Apr 2018 08:38:28 -0000 1.5 @@ -3,11 +3,10 @@ Upgrading Platform components -
    + leftLink="upgrade-openacs-files" leftLabel="Prev" + title="Chapter 5. Upgrading" + rightLink="maintenance-web" rightLabel="Next"> +

    Upgrading Platform components

    @@ -25,32 +24,26 @@
  • Build and install the new OpenFTS driver and supporting Tcl procedures. (This section of shell code is not fully documented; -please exercise care.)

    -cd /usr/local/src/
    +please exercise care.)

    cd /usr/local/src/
               tar xzf /var/tmp/Search-OpenFTS-tcl-0.3.2.tar.gz
               chown -R root.root Search-OpenFTS-tcl-0.3.2/
               cd Search-OpenFTS-tcl-0.3.2/
               ./configure --with-aolserver-src=/usr/local/src/aolserver/aolserver --with-tcl=/usr/lib/
               cd aolserver/
               make
    -          
    -

    Back up the old fts driver as a precaution and install the newly +

    Back up the old fts driver as a precaution and install the newly compiled one

     mv /usr/local/aolserver/bin/nsfts.so /usr/local/aolserver/bin/nsfts-0.2.so 
               cp nsfts.so /usr/local/aolserver/bin
    -          
    -

    Build and install the OpenFTS code for PostgreSQL

    -cd /usr/local/src/Search-OpenFTS-tcl-0.3.2/
    +          

    Build and install the OpenFTS code for PostgreSQL

    cd /usr/local/src/Search-OpenFTS-tcl-0.3.2/
               cp -r pgsql_contrib_openfts /usr/local/src/postgresql-7.2.3/contrib /usr/local/src/postgresql-7.2.3/contrib/pgsql_contrib_openfts
               make
               su - postgres
               cd tsearch/
               make
               make install
    -          exit
    -

    In order for the OpenACS 4.6 OpenFTS Engine to use the OpenFTS -0.3.2 driver, we need some commands added to the database.

    -[root root]# su - $OPENACS_SERVICE_NAME
    +          exit

    In order for the OpenACS 4.6 OpenFTS Engine to use the OpenFTS +0.3.2 driver, we need some commands added to the database.

    [root root]# su - $OPENACS_SERVICE_NAME
     
               [$OPENACS_SERVICE_NAME dev]$ psql $OPENACS_SERVICE_NAME -f /usr/local/pgsql/share/contrib/openfts.sql
               CREATE
    @@ -68,19 +61,17 @@
     
  • -OPTIONAL: Install the new OpenFTS -Engine.  If you want to upgrade the OpenFTS -Engine, do these steps. (You must have already upgraded the OpenFTS -driver to 0.3.2.)

      +OPTIONAL: Install the new OpenFTS Engine.  +If you want to upgrade the OpenFTS Engine, do these steps. (You +must have already upgraded the OpenFTS driver to 0.3.2.)

      1. Browse to http://yourserver/admin/site-map

      2. On the openfts line, click on set parameters.

      3. Change the value of openfts_tcl_src_path from /usr/local/src/Search-OpenFTS-tcl-0.2/ to /usr/local/src/Search-OpenFTS-tcl-0.3.2/

      4. Click Set Parameters -

      5. -[root root]# restart-aolserver $OPENACS_SERVICE_NAME
        +

      6. [root root]# restart-aolserver $OPENACS_SERVICE_NAME
         
      7. Browse to http://yourserver/openfts

      8. Click Administration.

      9. Click Initialize OpenFTS Engine @@ -105,8 +96,7 @@ on the dump file, and reply the dump. See Forum OpenACS Q&A: PG 7.2->7.3 upgrade gotcha?. Example:

        1. Back up the database as per PostgreSQL.

        2. -

          Run the upgrade script on the backup file.

          -[root root]# su - $OPENACS_SERVICE_NAME
          +

          Run the upgrade script on the backup file.

          [root root]# su - $OPENACS_SERVICE_NAME
           
                     [$OPENACS_SERVICE_NAME $OPENACS_SERVICE_NAME]# cd /var/lib/aolserver/$OPENACS_SERVICE_NAME/bin
                     [$OPENACS_SERVICE_NAME bin]$ ./pg_7.2to7.3_upgrade_helper.pl \
          @@ -122,8 +112,7 @@
           
                     (many lines omitted)
                     [$OPENACS_SERVICE_NAME bin]$
          -          
          -
          +
        3. Use perl to replace timestamp with timestamptz in the dump file. See example perl code in step two in /contrib/misc/upgrade_4.6_to_5.0.sh

        4. Create a new user for PostgreSQL 7.3.x, as per the Postgres @@ -146,9 +135,9 @@

      - + leftLink="upgrade-openacs-files" leftLabel="Prev" leftTitle="Upgrading the OpenACS files" + rightLink="maintenance-web" rightLabel="Next" rightTitle="Chapter 6. Production +Environments" + homeLink="index" homeLabel="Home" + upLink="upgrade" upLabel="Up"> + \ No newline at end of file Index: openacs-4/packages/acs-core-docs/www/upgrade.adp =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/upgrade.adp,v diff -u -N -r1.3 -r1.4 --- openacs-4/packages/acs-core-docs/www/upgrade.adp 8 Nov 2017 09:42:12 -0000 1.3 +++ openacs-4/packages/acs-core-docs/www/upgrade.adp 25 Apr 2018 08:38:28 -0000 1.4 @@ -3,11 +3,11 @@ Chapter 5. Upgrading -
      + rightLink="upgrade-overview" rightLabel="Next"> +

      Chapter 5. Upgrading

      Table of Contents

      @@ -23,8 +23,8 @@

      </authorblurb>
      - \ No newline at end of file + leftLink="how-do-I" leftLabel="Prev" leftTitle="How Do I?" + rightLink="upgrade-overview" rightLabel="Next" rightTitle="Overview" + homeLink="index" homeLabel="Home" + upLink="acs-admin" upLabel="Up"> + \ No newline at end of file Index: openacs-4/packages/acs-core-docs/www/uptime.adp =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/uptime.adp,v diff -u -N -r1.3 -r1.4 --- openacs-4/packages/acs-core-docs/www/uptime.adp 8 Nov 2017 09:42:12 -0000 1.3 +++ openacs-4/packages/acs-core-docs/www/uptime.adp 25 Apr 2018 08:38:28 -0000 1.4 @@ -3,20 +3,20 @@ External uptime validation -
      + leftLink="analog-setup" leftLabel="Prev" + title="Chapter 6. Production +Environments" + rightLink="maint-performance" rightLabel="Next"> +

      External uptime validation

      The OpenACS uptime site can monitor your site and send you an email whenever your site fails to respond. If you test the url http://yourserver.test/SYSTEM/dbtest.tcl, you should get back the string success.

      - \ No newline at end of file + leftLink="analog-setup" leftLabel="Prev" leftTitle="Set up Log Analysis Reports" + rightLink="maint-performance" rightLabel="Next" rightTitle="Diagnosing Performance Problems" + homeLink="index" homeLabel="Home" + upLink="maintenance-web" upLabel="Up"> + \ No newline at end of file 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 -N -r1.3 -r1.4 --- openacs-4/packages/acs-core-docs/www/variables.adp 8 Nov 2017 09:42:12 -0000 1.3 +++ openacs-4/packages/acs-core-docs/www/variables.adp 25 Apr 2018 08:38:28 -0000 1.4 @@ -3,11 +3,11 @@ Variables -
      + leftLink="eng-standards-plsql" leftLabel="Prev" + title="Chapter 12. Engineering +Standards" + rightLink="automated-testing-best-practices" rightLabel="Next"> +

      Variables

      @@ -19,9 +19,8 @@

      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 lc_time_fmt to format it for display.

      -

      Example 12.1. Getting datetime from -the database ANSI-style

      -db_multirow -extend { mydate_pretty } {
      +

      Example 12.1. Getting datetime +from the database ANSI-style

      db_multirow -extend { mydate_pretty } {
           select to_char(mydate, 'YYYY-MM-DD HH24:MI:SS') as mydate_ansi,
                 ...
           ...
      @@ -34,8 +33,8 @@
       
      - \ No newline at end of file + leftLink="eng-standards-plsql" leftLabel="Prev" leftTitle="PL/SQL Standards" + rightLink="automated-testing-best-practices" rightLabel="Next" rightTitle="Automated Testing" + homeLink="index" homeLabel="Home" + upLink="eng-standards" upLabel="Up"> + \ No newline at end of file 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 -N -r1.32 -r1.33 --- openacs-4/packages/acs-core-docs/www/variables.html 8 Nov 2017 09:42:12 -0000 1.32 +++ openacs-4/packages/acs-core-docs/www/variables.html 25 Apr 2018 08:38:28 -0000 1.33 @@ -13,7 +13,7 @@

      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 lc_time_fmt to format it for display.

      -

      Example 12.1. Getting datetime from the database ANSI-style

      +

      Example 12.1. Getting datetime from the database ANSI-style

      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/win2k-installation.adp
      ===================================================================
      RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/win2k-installation.adp,v
      diff -u -N -r1.2 -r1.3
      --- openacs-4/packages/acs-core-docs/www/win2k-installation.adp	7 Aug 2017 23:47:53 -0000	1.2
      +++ openacs-4/packages/acs-core-docs/www/win2k-installation.adp	25 Apr 2018 08:38:28 -0000	1.3
      @@ -3,21 +3,21 @@
       OpenACS Installation Guide for Windows
       
       
      -		
      + leftLink="openacs" leftLabel="Prev" + title="Chapter 3. Complete +Installation" + rightLink="mac-installation" rightLabel="Next"> +

      OpenACS Installation Guide for Windows

      A binary version of OpenACS and NaviServer is maintained by Maurizio Martignano and is available from Spazio IT

      - \ No newline at end of file + homeLink="index" homeLabel="Home" + upLink="complete-install" upLabel="Up"> + \ No newline at end of file Index: openacs-4/packages/acs-core-docs/www/files/acs-start.adp =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/files/acs-start.adp,v diff -u -N -r1.2 -r1.3 --- openacs-4/packages/acs-core-docs/www/files/acs-start.adp 7 Aug 2017 23:47:54 -0000 1.2 +++ openacs-4/packages/acs-core-docs/www/files/acs-start.adp 25 Apr 2018 08:38:28 -0000 1.3 @@ -14,5 +14,5 @@

      The next step is to install the ACS kernel data model. Click the Next button to proceed.

      -

      acs\@arsdigita.com
      +

      acs\@arsdigita.com
      Index: openacs-4/packages/acs-core-docs/www/files/openacs-start.adp =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/files/openacs-start.adp,v diff -u -N -r1.2 -r1.3 --- openacs-4/packages/acs-core-docs/www/files/openacs-start.adp 7 Aug 2017 23:47:54 -0000 1.2 +++ openacs-4/packages/acs-core-docs/www/files/openacs-start.adp 25 Apr 2018 08:38:28 -0000 1.3 @@ -16,5 +16,5 @@

      The next step is to install the OpenACS kernel data model. Click the Next button to proceed.

      -

      gatekeepers\@openacs.org
      +

      gatekeepers\@openacs.org
      Index: openacs-4/packages/acs-core-docs/www/unit-testing-guide/index.adp =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/unit-testing-guide/index.adp,v diff -u -N -r1.2 -r1.3 --- openacs-4/packages/acs-core-docs/www/unit-testing-guide/index.adp 7 Aug 2017 23:47:54 -0000 1.2 +++ openacs-4/packages/acs-core-docs/www/unit-testing-guide/index.adp 25 Apr 2018 08:38:28 -0000 1.3 @@ -88,5 +88,4 @@
      Last updated - 2000-12-19
      - -
      pmcneill\@arsdigita.com
      +
      pmcneill\@arsdigita.com
      Index: openacs-4/packages/acs-core-docs/www/xml/developers-guide/tutorial-advanced.xml =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/xml/developers-guide/tutorial-advanced.xml,v diff -u -N -r1.54 -r1.55 --- openacs-4/packages/acs-core-docs/www/xml/developers-guide/tutorial-advanced.xml 24 Dec 2017 13:15:07 -0000 1.54 +++ openacs-4/packages/acs-core-docs/www/xml/developers-guide/tutorial-advanced.xml 25 Apr 2018 08:38:28 -0000 1.55 @@ -358,7 +358,7 @@ We do this with another general_comments function: set comments_html [general_comments_get_comments -print_content_p 1 $note_id] - First, we pass in an optional parameter that that says to actually + First, we pass in an optional parameter that says to actually show the contents of the comments, instead of just the fact that there are comments. Then you pass the note id, which is also the acs_object id. @@ -506,7 +506,7 @@ category trees are applicable for the application. - The way to achieve this is is to provide a link + The way to achieve this is to provide a link to the Category Management pages. Add the following snippet to your /var/lib/aolserver/$OPENACS_SERVICE_NAME/packages/myfirstpackage/www/admin/index.tcl file: @@ -1434,7 +1434,7 @@ } ... - You must not give your your form the same name that your page has. Otherwise HTMLArea won't load. + You must not give your form the same name that your page has. Otherwise HTMLArea won't load. Convert your textarea widget to a richtext widget and enable htmlarea. The htmlarea_p-flag can be used to prevent Index: openacs-4/packages/acs-core-docs/www/xml/developers-guide/tutorial.xml =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/xml/developers-guide/tutorial.xml,v diff -u -N -r1.22 -r1.23 --- openacs-4/packages/acs-core-docs/www/xml/developers-guide/tutorial.xml 7 Aug 2017 23:47:54 -0000 1.22 +++ openacs-4/packages/acs-core-docs/www/xml/developers-guide/tutorial.xml 25 Apr 2018 08:38:28 -0000 1.23 @@ -25,7 +25,7 @@ Overview To start developing new code in OpenACS, we build a new package. A package - is a a discrete collection of web pages, Tcl code, and database tables and procedures. + is a discrete collection of web pages, Tcl code, and database tables and procedures. A package with user interface is called an application; a package which provides functions to other packages and has no direct interface, a service. A package can be installed, upgraded, and Index: openacs-4/packages/acs-core-docs/www/xml/install-guide/other-software.xml =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/xml/install-guide/other-software.xml,v diff -u -N -r1.34 -r1.35 --- openacs-4/packages/acs-core-docs/www/xml/install-guide/other-software.xml 28 Mar 2018 17:00:40 -0000 1.34 +++ openacs-4/packages/acs-core-docs/www/xml/install-guide/other-software.xml 25 Apr 2018 08:38:28 -0000 1.35 @@ -314,7 +314,7 @@ chmod 755 /var/qmail/supervise/qmail-smtpd/log/run ln -s /var/qmail/supervise/qmail-send /var/qmail/supervise/qmail-smtpd /service - Wait ten seconds or so, and then verify that that the four qmail processes are running. If uptimes don't rise above 1 second, this may indicate broken scripts that are continuously restarting. In that case, start debugging by checking permissions. + Wait ten seconds or so, and then verify that the four qmail processes are running. If uptimes don't rise above 1 second, this may indicate broken scripts that are continuously restarting. In that case, start debugging by checking permissions. [root root]# qmailctl stat /service/qmail-send: up (pid 32700) 430 seconds /service/qmail-send/log: up (pid 32701) 430 seconds Index: openacs-4/packages/acs-core-docs/www/xml/kernel/ext-auth.xml =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/xml/kernel/ext-auth.xml,v diff -u -N -r1.7 -r1.8 --- openacs-4/packages/acs-core-docs/www/xml/kernel/ext-auth.xml 28 Mar 2018 21:55:34 -0000 1.7 +++ openacs-4/packages/acs-core-docs/www/xml/kernel/ext-auth.xml 25 Apr 2018 08:38:28 -0000 1.8 @@ -167,7 +167,7 @@ either already be in the users table through a batch synchronization job, or that the relevant authentication implementation supports real-time synchronization of user data. -Specifically, if you want remote users who haven't yet logged in to +Specifically, if you want remote users who haven't yet logged-in to OpenACS to show up in user searches, you'll have to do the batch synchronization. All in all, the login box will be an includeable template and @@ -511,19 +511,19 @@ I like the idea of having multiple login levels: - Not logged in + Not logged-in Untrusted login: We'll show you un-sensitive personal content, but won't let you modify anything or see personal data. A normal login becomes untrusted after a certain amount of time, and the user will have to re-enter his/her password in order to gain access to personal data. Untrusted login never expires, unless explicitly done so through either changing password or clicking a special "expire all logins" link. - Normal login: The user is logged, and has type his + Normal login: The user is logged-in, and has type his password sufficiently recently that we trust the login. All normal operations are allowed. Will degrade to untrusted login after a specified amount of time. - Secure login: The user is logged in over a secure + Secure login: The user is logged-in over a secure connection (HTTPS), potentially even using a special secure password. This would be for sensitive actions, such as credit card transactions. @@ -544,13 +544,13 @@ even more feasible to have a more secure login expiration setting. By default, auth::require_login would -bounce to the login page if the user is only logged in at the +bounce to the login page if the user is only logged-in at the untrusted level. Only if you explicitly say auth::require_login -untrusted will we give you -the user_id of a user who's only logged in in untrusted +the user_id of a user who's only logged-in in untrusted mode. Similarly, ad_conn user_id will continue -to return 0 (not logged in) when the user is only logged in +to return 0 (not logged-in) when the user is only logged-in untrusted, and we'll supply another variable, ad_conn untrusted_user_id, which wlll be set to the user_id for all login levels. @@ -619,10 +619,10 @@ Currently, if you've ever left a permanent login cookie on -someone elses machine, that person will be forever logged in until +someone elses machine, that person will be forever logged-in until he/she explicitly logs out. You can change your password, you can do anything you want, but unless a logout is requested from that -particular browser, that browser will be logged in forever. +particular browser, that browser will be logged-in forever. I want to change our session handling code so that old login cookies can be expired. This would be done automatically whenever you change your password, and we could also offer a link which does Index: openacs-4/packages/acs-core-docs/www/xml/kernel/groups-requirements.xml =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/xml/kernel/groups-requirements.xml,v diff -u -N -r1.7 -r1.8 --- openacs-4/packages/acs-core-docs/www/xml/kernel/groups-requirements.xml 17 Jul 2006 05:38:38 -0000 1.7 +++ openacs-4/packages/acs-core-docs/www/xml/kernel/groups-requirements.xml 25 Apr 2018 08:38:28 -0000 1.8 @@ -30,7 +30,7 @@ A powerful web service that can meet the needs of large enterprises must - be able to model the the real world's very rich organizational structures + be able to model the real world's very rich organizational structures and many ways of decomposing the same organization. For example, a corporation can be broken into structures (the corporation, its divisions, and their departments) or regions (the Boston office, the LA office); a Index: openacs-4/packages/acs-core-docs/www/xml/kernel/i18n-requirements.xml =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/xml/kernel/i18n-requirements.xml,v diff -u -N -r1.10 -r1.11 --- openacs-4/packages/acs-core-docs/www/xml/kernel/i18n-requirements.xml 24 Dec 2017 13:15:07 -0000 1.10 +++ openacs-4/packages/acs-core-docs/www/xml/kernel/i18n-requirements.xml 25 Apr 2018 08:38:28 -0000 1.11 @@ -489,8 +489,11 @@ Acs-templating does the following. - When the acs-templating package opens an an ADP or Tcl file, it assumes the file is iso-8859-1. If the output charset (OutputCharset) in the AOLserver config file is set, then acs-templating assumes it's that charset. -Writing Files + When the acs-templating package opens an ADP or Tcl + file, it assumes the file is iso-8859-1. If the output + charset (OutputCharset) in the AOLserver config file is set, + then acs-templating assumes it's that charset. + Writing Files When the acs-templating package writes an an ADP or Index: openacs-4/packages/acs-core-docs/www/xml/kernel/object-system-design.xml =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/xml/kernel/object-system-design.xml,v diff -u -N -r1.9 -r1.10 --- openacs-4/packages/acs-core-docs/www/xml/kernel/object-system-design.xml 7 Aug 2017 23:47:55 -0000 1.9 +++ openacs-4/packages/acs-core-docs/www/xml/kernel/object-system-design.xml 25 Apr 2018 08:38:28 -0000 1.10 @@ -123,7 +123,7 @@ -The next section will explore these facilities in the context of the the +The next section will explore these facilities in the context of the particular programming idioms that we wish to generalize. Related Links @@ -277,7 +277,8 @@ permission to perform action Y on object Z. The context system forms the basis for the rest of the OpenACS access control -system, which is described in in two separate documents: one for the permissions system and another for the +system, which is described in two separate documents: one for the +permissions system and another for the party groups system. The context system is also used to implement subsites. Index: openacs-4/packages/acs-core-docs/www/xml/kernel/object-system-req.xml =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/xml/kernel/object-system-req.xml,v diff -u -N -r1.7 -r1.8 --- openacs-4/packages/acs-core-docs/www/xml/kernel/object-system-req.xml 17 Jul 2006 05:38:38 -0000 1.7 +++ openacs-4/packages/acs-core-docs/www/xml/kernel/object-system-req.xml 25 Apr 2018 08:38:28 -0000 1.8 @@ -245,7 +245,7 @@ done using mapping tables. The user/groups module has the most highly developed data model for this purpose, using a single table called user_group_map that mapped users to groups. In addition, it uses -the the user_group_member_fields and +the user_group_member_fields and user_group_member_fields_map tables to allow developers to attach custom attributes to group members. In fact, these custom attributes were not really attached to the users, but to the fact that a user was a Index: openacs-4/packages/acs-subsite/tcl/party-procs.tcl =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-subsite/tcl/Attic/party-procs.tcl,v diff -u -N -r1.10 -r1.11 --- openacs-4/packages/acs-subsite/tcl/party-procs.tcl 7 Aug 2017 23:47:58 -0000 1.10 +++ openacs-4/packages/acs-subsite/tcl/party-procs.tcl 25 Apr 2018 08:40:23 -0000 1.11 @@ -217,7 +217,7 @@ if {$party_id eq "" && $email eq ""} { error "You need to provide either party_id or email" } elseif {"" ne $party_id && "" ne $email } { - error "Only provide provide party_id OR email, not both" + error "Only provide party_id OR email, not both" } if {$party_id eq ""} { Index: openacs-4/packages/acs-subsite/www/admin/groups/elements-by-group-type.tcl =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-subsite/www/admin/groups/elements-by-group-type.tcl,v diff -u -N -r1.2 -r1.3 --- openacs-4/packages/acs-subsite/www/admin/groups/elements-by-group-type.tcl 7 Aug 2017 23:47:58 -0000 1.2 +++ openacs-4/packages/acs-subsite/www/admin/groups/elements-by-group-type.tcl 25 Apr 2018 08:40:23 -0000 1.3 @@ -3,9 +3,10 @@ # Datasource for elements-by-rel-type.adp # (meant to be included by other templates) # -# Shows the user a summary of components (NOT members!) of the given -# group, provided that the the user has permission to see the component. -# The components are summarized by their relationship to the given group. +# Shows the user a summary of components (NOT members!) of the given +# group, provided that the user has permission to see the component. +# The components are summarized by their relationship to the given +# group. # # NOTE: # There is no scope check done here to ensure that the component "belongs" to Index: openacs-4/packages/acs-subsite/www/admin/groups/elements-by-rel-type.tcl =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-subsite/www/admin/groups/elements-by-rel-type.tcl,v diff -u -N -r1.7 -r1.8 --- openacs-4/packages/acs-subsite/www/admin/groups/elements-by-rel-type.tcl 7 Aug 2017 23:47:58 -0000 1.7 +++ openacs-4/packages/acs-subsite/www/admin/groups/elements-by-rel-type.tcl 25 Apr 2018 08:40:23 -0000 1.8 @@ -3,9 +3,10 @@ # Datasource for elements-by-rel-type.adp # (meant to be included by other templates) # -# Shows the user a summary of elements (components or members) of the given -# group, provided that the the user has permission to see the element. -# The elements are summarized by their relationship to the given group. +# Shows the user a summary of elements (components or members) of the +# given group, provided that the user has permission to see the +# element. The elements are summarized by their relationship to the +# given group. # # NOTE: # There is no scope check done here to ensure that the element "belongs" to Index: openacs-4/packages/acs-subsite/www/doc/group-admin-pages-acceptance-test.adp =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-subsite/www/doc/group-admin-pages-acceptance-test.adp,v diff -u -N -r1.3 -r1.4 --- openacs-4/packages/acs-subsite/www/doc/group-admin-pages-acceptance-test.adp 7 Aug 2017 23:47:59 -0000 1.3 +++ openacs-4/packages/acs-subsite/www/doc/group-admin-pages-acceptance-test.adp 25 Apr 2018 08:40:23 -0000 1.4 @@ -11,7 +11,8 @@ The first thing we have to test is developer defined group types working in conjunction with the user defined ones.

      Create the following object type in SQL*Plus.

      -
      begin
      +
      
      +begin
        acs_object_type.create_type (
          supertype => 'group',
          object_type => 'developer_defined_test_type',
      @@ -217,7 +218,8 @@
       Relation
    1. Delete the employment relation type.
    2. Delete the employee, employer, and project_leader roles
    3. Delete any groups you created for the developer defined type
    4. -Drop the developer defined type (in SQL*Plus):
      exec acs_object_type.drop_type('developer_defined_test_type'); 
      +Drop the developer defined type (in SQL*Plus):
      
      +exec acs_object_type.drop_type('developer_defined_test_type'); 
       drop table developer_defined_test_types;
       drop package developer_defined_test_type;
       
      @@ -227,6 +229,6 @@
      Michael Bryzek
      -
      $‌Id: group-admin-pages-acceptance-test.html,v -1.3.24.1 2016/07/18 11:40:32 gustafn Exp $ +
      $‌Id: group-admin-pages-acceptance-test.html,v 1.4 +2017/08/07 23:47:59 gustafn Exp $
      Index: openacs-4/packages/acs-subsite/www/doc/group-admin-pages-requirements.adp =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-subsite/www/doc/group-admin-pages-requirements.adp,v diff -u -N -r1.3 -r1.4 --- openacs-4/packages/acs-subsite/www/doc/group-admin-pages-requirements.adp 7 Aug 2017 23:47:59 -0000 1.3 +++ openacs-4/packages/acs-subsite/www/doc/group-admin-pages-requirements.adp 25 Apr 2018 08:40:23 -0000 1.4 @@ -88,7 +88,7 @@ a group type. Removing the attribute removes all values specified for that attribute.

      40.10 Relationship Constraints

      The API must support the following types of constraints on -relationships:

      40.10.10 Permissible +relationships:

      40.10.10 Permissible relationships

      Each group type should maintain a list of all relationship types that can be used to add elements to groups of this group type.

      40.10.20 Constraints on @@ -129,9 +129,9 @@ removes all groups of this type.

      -
      +
      150.10 Group instance summary -page
      +page
      150.10.10 Display relations

      Each group should display all the parties related to it @@ -165,5 +165,5 @@

      Michael Bryzek

      -$‌Id: group-admin-pages-requirements.html,v 1.2.30.1 -2016/07/18 11:40:32 gustafn Exp $ +$‌Id: group-admin-pages-requirements.html,v 1.3 +2017/08/07 23:47:59 gustafn Exp $ Index: openacs-4/packages/acs-subsite/www/doc/index.adp =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-subsite/www/doc/index.adp,v diff -u -N -r1.3 -r1.4 --- openacs-4/packages/acs-subsite/www/doc/index.adp 7 Aug 2017 23:47:59 -0000 1.3 +++ openacs-4/packages/acs-subsite/www/doc/index.adp 25 Apr 2018 08:40:23 -0000 1.4 @@ -33,6 +33,6 @@
      Michael Bryzek

      -$‌Id: index.html,v 1.3.2.3 2016/11/19 09:10:54 -gustafn Exp $ +$‌Id: index.html,v 1.4 2017/08/07 23:47:59 gustafn +Exp $ \ No newline at end of file Index: openacs-4/packages/acs-templating/tcl/list-procs.tcl =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-templating/tcl/list-procs.tcl,v diff -u -N -r1.76 -r1.77 --- openacs-4/packages/acs-templating/tcl/list-procs.tcl 9 Apr 2018 21:16:06 -0000 1.76 +++ openacs-4/packages/acs-templating/tcl/list-procs.tcl 25 Apr 2018 08:42:17 -0000 1.77 @@ -2341,7 +2341,7 @@
    5. type: The type of values this filter sets. Also see 'values' below. Valid options are: 'singleval', meaning that the - value is a single value of a query variable with the name of the filter; 'multival', meaning the the value is really a Tcl list of values, + value is a single value of a query variable with the name of the filter; 'multival', meaning the value is really a Tcl list of values, sent to a :multiple page variable; and 'multivar', meaning that the value is a list of (key value) lists, as in { { var1 value1 } { var2 value 2 } }. 'multival' is useful when you're filtering on, say, a date range, in which case you'd send two values, namely the start and end date. 'multivar' is useful when you want the selection of one filter to change the value of another filter, for example when selecting groupby, you also Index: openacs-4/packages/acs-templating/tcl/query-procs.tcl =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-templating/tcl/query-procs.tcl,v diff -u -N -r1.41 -r1.42 --- openacs-4/packages/acs-templating/tcl/query-procs.tcl 24 Apr 2018 21:59:37 -0000 1.41 +++ openacs-4/packages/acs-templating/tcl/query-procs.tcl 25 Apr 2018 08:42:17 -0000 1.42 @@ -180,8 +180,8 @@ } ad_proc -private template::query::multirow { statement_name db result_name sql } { - Process a multirow query. Use an array for each row row in the - result. Arrays are named name0, name1, name2 etc. The variable + Process a multirow query. Use an array for each row in the + result. Arrays are named name0, name1, name2 etc. The variable name.rowcount is also defined for checking and iteration. @param statement_name Standard db_api statement name used to hook @@ -598,7 +598,7 @@
      template::multirow columns datasourcename
      returns the columns in the datasource
      template::multirow get datasourcename rownum [column]
      -
      returns the row of of data (or the particular row/column if column is provided)
      +
      returns the row of data (or the particular row/column if column is provided)
      template::multirow set datasourcename rownum column value
      set an element value
      template::multirow foreach datasource code
      @@ -607,8 +607,8 @@
      upvar the multirow, aliasing to new_name if provided
      template::multirow unset datasource
      unset multirow
      -
      template::multirow sort datasource -lsort-switch -lsort-switch col1 col2
      -
      Sort the multirow by the column(s) specified. The value sorted by will be the the values of the columns specified, separated by the space character. Any switches specified before the columns will be passed directly to the lsort command.
      +
      template::multirow sort datasource -lsort-switch col1 col2
      +
      Sort the multirow by the column(s) specified. The value sorted by will be the values of the columns specified, separated by the space character. Any switches specified before the columns will be passed directly to the lsort command.
      template::multirow exists datasource
      Return 1 if the multirow datasource exists, 0 if it doesn't. Index: openacs-4/packages/acs-templating/tcl/richtext-procs.tcl =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-templating/tcl/richtext-procs.tcl,v diff -u -N -r1.61 -r1.62 --- openacs-4/packages/acs-templating/tcl/richtext-procs.tcl 24 Apr 2018 21:19:43 -0000 1.61 +++ openacs-4/packages/acs-templating/tcl/richtext-procs.tcl 25 Apr 2018 08:42:17 -0000 1.62 @@ -275,7 +275,7 @@ ad_proc -public template::util::richtext::render_widgets { } { - Render all rich-text editors with their their widget specific + Render all rich-text editors with their widget specific code. Every editor might have multiple instances on the page, which are accessible to "render_widgets" via the global variable acs_blank_master__htmlareas. This function can be used to perform Index: openacs-4/packages/acs-templating/tcl/wizard-procs.tcl =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-templating/tcl/wizard-procs.tcl,v diff -u -N -r1.14 -r1.15 --- openacs-4/packages/acs-templating/tcl/wizard-procs.tcl 29 Mar 2018 21:24:01 -0000 1.14 +++ openacs-4/packages/acs-templating/tcl/wizard-procs.tcl 25 Apr 2018 08:42:17 -0000 1.15 @@ -689,7 +689,7 @@ get_reference - # check the old visited step on the the state manager + # check the old visited step on the state manager set visited_step [ad_get_client_property -default "" $key ${wizard_name}visited] if {$visited_step ne "" } { template::wizard::set_visited_step $visited_step Index: openacs-4/packages/acs-templating/www/doc/design.adp =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-templating/www/doc/design.adp,v diff -u -N -r1.7 -r1.8 --- openacs-4/packages/acs-templating/www/doc/design.adp 11 Apr 2018 20:52:01 -0000 1.7 +++ openacs-4/packages/acs-templating/www/doc/design.adp 25 Apr 2018 08:42:17 -0000 1.8 @@ -287,8 +287,7 @@ DefaultMaster=/www/default-master ; anything other than "never" or "always" means normal operation RefreshCache=as necessary - -
    6. +

      X. Future Improvements/Areas of Likely Change

      Passing datasources by reference is new. The acs-templating syntax &formal="actual" is different @@ -304,21 +303,20 @@

    7. System creator: Karl Goldstein
    8. System owners: Karl -Goldstein and Christian -Brechbühler +Goldstein and Christian Brechbühler
    9. Documentation authors: Karl Goldstein, Christian -Brechbühler, and Bryan Quinn +Brechbühler, and Bryan +Quinn
    10. XII. Revision History

      - + @@ -327,5 +325,5 @@
      Christian Brechbuehler
      -Last modified: $‌Id: design.html,v 1.4.2.3 2017/04/22 18:30:26 -gustafn Exp $ +Last modified: $‌Id: design.html,v 1.9 2018/04/11 20:52:01 hectorr +Exp $ Index: openacs-4/packages/acs-templating/www/doc/developer-guide.adp =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-templating/www/doc/developer-guide.adp,v diff -u -N -r1.3 -r1.4 --- openacs-4/packages/acs-templating/www/doc/developer-guide.adp 7 Aug 2017 23:48:02 -0000 1.3 +++ openacs-4/packages/acs-templating/www/doc/developer-guide.adp 25 Apr 2018 08:42:17 -0000 1.4 @@ -21,7 +21,8 @@ datasources defined in the Tcl page.

      Guide

        -
      1. User Guide
        • +
        • User Guide + +
        • Object and API Reference @@ -97,5 +99,5 @@
          Christian Brechbühler
          -Last modified: $‌Id: developer-guide.html,v 1.4.2.1 2017/04/22 -18:30:26 gustafn Exp $ +Last modified: $‌Id: developer-guide.html,v 1.5 2017/08/07 23:48:02 +gustafn Exp $ 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 -N -r1.3 -r1.4 --- openacs-4/packages/acs-templating/www/doc/index.adp 7 Aug 2017 23:48:02 -0000 1.3 +++ openacs-4/packages/acs-templating/www/doc/index.adp 25 Apr 2018 08:42:17 -0000 1.4 @@ -43,5 +43,5 @@ Original maintainer: Christian Brechbühler (christian\@arsdigita.com) -Last modified: $‌Id: index.html,v 1.6.2.5 2017/04/22 18:30:26 -gustafn Exp $ +Last modified: $‌Id: index.html,v 1.7 2017/08/07 23:48:02 gustafn +Exp $ Index: openacs-4/packages/acs-templating/www/doc/install.adp =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-templating/www/doc/install.adp,v diff -u -N -r1.3 -r1.4 --- openacs-4/packages/acs-templating/www/doc/install.adp 7 Aug 2017 23:48:02 -0000 1.3 +++ openacs-4/packages/acs-templating/www/doc/install.adp 25 Apr 2018 08:42:17 -0000 1.4 @@ -19,11 +19,9 @@

          Obtaining the distribution

          To install the templating system, download and unpack the tar file under your page root:

          -
          -$ wget http://bob.sf.arsdigita.com:8089/ats/ats.tar.gz
          +
          $ wget http://bob.sf.arsdigita.com:8089/ats/ats.tar.gz
           $ cd /web/myserver/www
          -$ gunzip -c ats.tar.gz | tar xvf -
          -
          +$ gunzip -c ats.tar.gz | tar xvf -

          The distribution consists of four subdirectories:

          1. @@ -47,23 +45,19 @@ installation (as indicated by the Library parameter in the ns/server/myserver/tcl section of the AOLserver configuration file):

            -
            -$ cd /web/myserver/tcl
            -$ ln -s <path_to_distribution>/ats/tcl/ ats
            -
            +
            $ cd /web/myserver/tcl
            +$ ln -s <path_to_distribution>/ats/tcl/ ats

            Configuring AOLserver

            The last step is to modify your AOLserver configuration file. You will need to register the templating system as a Tcl-only module:

            -
            -[ns/server/myserver/modules]
            +
            [ns/server/myserver/modules]
             nssock=nssock.so
             nslog=nslog.so
             ats=Tcl
             

            or if you are using the new configuration file format:

            -
            -ns_section "ns/server/${server}/modules"
            +
            ns_section "ns/server/${server}/modules"
             ns_param   nssock          nssock.so
             ns_param   nslog           nslog.so
             ns_param   ats          Tcl
            @@ -73,14 +67,12 @@
             private Tcl library.

            You will also need to ensure that the "fancy" ADP parser is the default:

            -
            -[ns/server/yourserver/adp]
            +
            [ns/server/yourserver/adp]
             Map=/*.adp
             DefaultParser=fancy
             
             [ns/server/yourserver/adp/parsers]
            -fancy=.adp
            -
            +fancy=.adp

            Optional Configuration

            The templating system recognizes two optional parameters in the AOLserver configuration file in the Index: openacs-4/packages/acs-templating/www/doc/migration.adp =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-templating/www/doc/migration.adp,v diff -u -N -r1.4 -r1.5 --- openacs-4/packages/acs-templating/www/doc/migration.adp 7 Aug 2017 23:48:02 -0000 1.4 +++ openacs-4/packages/acs-templating/www/doc/migration.adp 25 Apr 2018 08:42:17 -0000 1.5 @@ -33,8 +33,7 @@ file.

                   [ns/server/myserver/adp]
            -      DefaultParser=fancy
            -
            + DefaultParser=fancy

            A few more hints

            • Do not write to the connection directly. Avoid @@ -46,10 +45,8 @@ that will be <include>d from several pages. Prefer this to writing a Tcl proc that returns HTML.
            • Remember to remove backslashes where you had to escape special characters, as in -
              -Nuts  \$2.70 \[<a href="\"shoppe\">buy</a>\]
              -          
              -
              +
              Nuts  \$2.70 \[<a href="\"shoppe\">buy</a>\]
              +          

            Forms

            @@ -158,8 +155,7 @@ ad_return_template - -
      +
      Document Revision #Action Taken, NotesWhen?By Whom?
      0.1Brought into the form suggested by Finkler, -McLoghlin and Wu (href="http://dev.arsdigita.com/ad-sepg/process/design-template) -18 Jul 2000Christian Brechbühler0.1Brought into the form suggested by Finkler, McLoghlin and Wu +(http://dev.arsdigita.com/ad-sepg/process/design-template)18 Jul 2000Christian Brechbühler
      0.2Adapted to acs-templating as distributed with ACS/Tcl 4.0122 Nov 2000Christian Brechbühler
      +          
       
       
       
      @@ -198,8 +194,7 @@
       \@body\@
       </blockquote>
       
      -          
      -

      Multi-Row Data Sources

      @@ -287,8 +282,7 @@ security in place). </ul> -" -

  • +"
     db_multirow item
      news_items_select {
         select news_item_id, title
    @@ -298,8 +292,7 @@
         and (   expiration_date is null
              or expiration_date > sysdate)
     }
    -          
    -
    +          
     
     <ul>
     
    @@ -332,8 +325,7 @@
       security in place).
     
     </ul>
    -          
    -
    @@ -362,11 +354,11 @@
    packages/acs-core-ui/www/pvt/alerts.tclpackages/acs-core-ui/www/pvt/alerts.adp
    ad_page_contract {
    -    \@cvs-id $‌Id: migration.html,v 1.3.2.2 2017/04/22 18:30:26 gustafn Exp $
    +    \@cvs-id $‌Id: migration.html,v 1.4 2017/08/07 23:48:02 gustafn Exp $
     } {
     }
     ad_page_contract {
    -    \@cvs-id $‌Id: migration.html,v 1.3.2.2 2017/04/22 18:30:26 gustafn Exp $
    +    \@cvs-id $‌Id: migration.html,v 1.4 2017/08/07 23:48:02 gustafn Exp $
     } {
     } -properties {
         header:onevalue
    @@ -460,8 +452,7 @@
        "
      }
     }
    -          
    -
    +          
     set discussion_forum_alert_p 0
     
     if { [db_table_exists "bboard_email_alerts"] } {
    @@ -506,8 +497,7 @@
     }
     
               
    -          
    -
    +          
     
     
     
    @@ -560,8 +550,7 @@
     </blockquote> 
     
     </if>
    -          
    -

    @@ -571,5 +560,5 @@ Iwashima -Last modified: $‌Id: migration.html,v 1.3.2.2 2017/04/22 18:30:26 +Last modified: $‌Id: migration.html,v 1.4 2017/08/07 23:48:02 gustafn Exp $ Index: openacs-4/packages/acs-templating/www/doc/no-quote-upgrade.adp =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-templating/www/doc/no-quote-upgrade.adp,v diff -u -N -r1.4 -r1.5 --- openacs-4/packages/acs-templating/www/doc/no-quote-upgrade.adp 7 Aug 2017 23:48:02 -0000 1.4 +++ openacs-4/packages/acs-templating/www/doc/no-quote-upgrade.adp 25 Apr 2018 08:42:17 -0000 1.5 @@ -68,8 +68,7 @@ <input name=var2 value="value2"> ... real form stuff ... </form> - - + ACS has a convenience function for creating hidden form variables, export_form_vars @@ -79,8 +78,7 @@ In that case, the Tcl code would set the HTML code to a variable:
     set form_vars [export_vars -form {var1 var2}]
    -      
    -
    + The ADP will simply refer to the form_vars variable: @@ -89,8 +87,7 @@ \@form_vars\@ <!-- WRONG! Needs noquote --> ... real form stuff ... </form> - - + This will no longer work as intended because form_vars @@ -105,8 +102,7 @@ \@form_vars;noquote\@ ... real form stuff ... </form> - - +

    Snippets of HTML produced by Tcl code, aka widgets @@ -153,14 +149,12 @@ <h1>\@heading\@</h1> <slave> </body> - -slave:

    +      
    slave:
     <master>
     <property name="title">\@title\@</property>
     <property name="heading">\@title\@</property>
     ...
    -      
    -
    + The obvious intention of the master is to allow its slave templates @@ -215,23 +209,20 @@ <property name="doc(title)">\@title;literal\@</property> <property name="heading">\@title;literal\@</property> ... - - +

    The exact same problems when the include statement passes some text. Here is an example:

    Including template:
     <include src="user-kick-form" id=\@kicked_id\@ reason=\@default_reason\@>
    -      
    -
    Included template:
    +      
    Included template:
     <form action="do-kick" method=POST>
       Kick user \@name\@.<br>
       Reason: <textarea name=reason>\@reason\@</textarea><br>
       <input type="submit" value="Kick">
     </form>
    -      
    -
    +
    Here an include statement is used to include an HTML form widget @@ -249,8 +240,7 @@
    Including template, sans over-quoting:
     <include src="user-kick-form" id=\@kicked_id;literal\@ reason=\@default_reason;literal\@>
    -      
    -
    +

    Upgrade Overview.

    Index: openacs-4/packages/acs-templating/www/doc/noquote.adp =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-templating/www/doc/noquote.adp,v diff -u -N -r1.4 -r1.5 --- openacs-4/packages/acs-templating/www/doc/noquote.adp 7 Aug 2017 23:48:02 -0000 1.4 +++ openacs-4/packages/acs-templating/www/doc/noquote.adp 25 Apr 2018 08:42:17 -0000 1.5 @@ -5,10 +5,10 @@ Requirements -
    + leftLink="" leftLabel="" + title="" + rightLink="" rightLabel=""> +

    HTMLQuoting as @@ -133,8 +133,8 @@ templating still supports all the ADP features, including embedding Tcl code in the template. Thus instead of referring to the multirow variable with the \@forums.name\@ variable substitutions, we use -<%= [ns_quotehtml \@forums.name\@] %>. -This works correctly, but obviously breaks the abstraction barrier +<%= [ns_quotehtml \@forums.name\@] %>. This +works correctly, but obviously breaks the abstraction barrier between ADP and Tcl syntaxes. The practical result of breaking the abstraction is that every occurrence of Tcl code in an ADP template will have to be painstakingly reviewed and converted once ADPs @@ -148,7 +148,7 @@ radical but much more robust solution to the problem.

    -Quote Always, Except +Quote Always, Except When Told Not to.

    At the time when we came to realize how serious the quoting deficiencies of ACS 4.0 were, we were about two weeks away from the release of a project for the German Bank. There was simply no time @@ -195,8 +195,8 @@

    - \ No newline at end of file + leftLink="" leftLabel="" leftTitle="" + rightLink="" rightLabel="" rightTitle="" + homeLink="" homeLabel="" + upLink="" upLabel=""> + \ No newline at end of file Index: openacs-4/packages/acs-templating/www/doc/requirements.adp =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-templating/www/doc/requirements.adp,v diff -u -N -r1.4 -r1.5 --- openacs-4/packages/acs-templating/www/doc/requirements.adp 24 Mar 2018 00:14:57 -0000 1.4 +++ openacs-4/packages/acs-templating/www/doc/requirements.adp 25 Apr 2018 08:42:17 -0000 1.5 @@ -6,10 +6,9 @@ by Karl Goldstein , -Christian -Brechbühler -, Peter -Su +Christian Brechbühler +, +Peter Su , and Yonatan Feldman

    I. Introduction

    @@ -100,7 +99,8 @@

    VI.A Functional Requirements

    • -10.0 A Common Solution

      Programmers and designers should only have to learn a single +10.0 A Common +Solution

      Programmers and designers should only have to learn a single system that serves as a UI substrate for all the functionally specific modules in the toolkit.

      10.0.1

      The system should not make any assumptions about how pages @@ -160,8 +160,8 @@

  • -20.0 Separation of Code and -Layout

    Programmers should be able to specify the page properties +20.0 Separation of Code +and Layout

    Programmers should be able to specify the page properties independently of the markup used to present the data in the template. Markup authors should be to able to write templates that reference the page properties without further intervention from the @@ -173,26 +173,26 @@ be available through the standard ACS documentation facilities.

  • -30.0 Separation of Page +30.0 Separation of Page Components

    There should be provisions so that pages can be broken into discrete components to simplify maintenance of the markup code and allow for reuse in different contexts. Examples of common page components include a navigation bar, a search box, or a section of a report or story.

  • -40.0 Global Control Over +40.0 Global Control Over Presentation

    There should be a way to define one or more standard master templates used by most pages on a site, so that changes to the overall look and feel of a site can be made in one place.

  • -50.0 Dynamic Selection of +50.0 Dynamic Selection of Presentation Style

    Given that the same data may be presented in many different ways, there should be a general mechanism for selecting a specific presentation (including file format, layout, character set and language) for each page request, depending on characteristics such as user preference, location, browser type and/or device.

  • -60.0 Usability

    Programmers should be able to develop template specifications +60.0 Usability

    Programmers should be able to develop template specifications using their standard tools for writing and maintaining code on the server. HTML authors should be able to access information about template specifications and work on templates remotely without @@ -203,13 +203,15 @@

    VI.B Non-functional Requirements

    • -100.0 Distribution

      The Templating System must be releasable as part of the ACS and +100.0 +Distribution

      The Templating System must be releasable as part of the ACS and as a separate product. When distributed as part of the ACS all documentation, examples, and source code must follow ACS standards. This includes but is not limited to: using the db_api, using ad_page_contract appropriately.

    • -110.0 Performance

      The Templating System must not cause any performance problems to +110.0 +Performance

      The Templating System must not cause any performance problems to a site. It must be fast and efficient, and it must not slow down page load speed by more than 10% versus a Tcl page with inline HTML.

      @@ -222,13 +224,13 @@
  • 0.1Creation8/23/2000Yonatan Feldman
    0.2Merge with previous docs8/25/2000Christian BrechbÃ&frac14;hler0.2Merge with previous docs8/25/2000Christian Brechbühler
    0.3Edited, reviewed, pending freeze8/28/2000Kai Wu

    yon\@arsdigita.com
    -Last modified: $‌Id: requirements.html,v 1.2.2.2 2017/04/21 16:50:30 -gustafn Exp $ +Last modified: $‌Id: requirements.html,v 1.4 2018/03/24 00:14:57 +hectorr Exp $ Index: openacs-4/packages/acs-templating/www/doc/timing.adp =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-templating/www/doc/timing.adp,v diff -u -N -r1.4 -r1.5 --- openacs-4/packages/acs-templating/www/doc/timing.adp 18 Apr 2018 09:09:13 -0000 1.4 +++ openacs-4/packages/acs-templating/www/doc/timing.adp 25 Apr 2018 08:42:17 -0000 1.5 @@ -12,7 +12,8 @@ for the template system asks for efficiency:
    • -110.0 Performance

      The Templating System must not cause any performance problems to +110.0 +Performance

      The Templating System must not cause any performance problems to a site. It must be fast and efficient, and it must not slow down page load speed by more than 10% versus a Tcl page with inline HTML.

      @@ -78,8 +79,7 @@ end cut -d" " -f3 $i-1| cut -c2-| tr \? 0 > $i-2 end - - + The three resulting files, ending in -2, contain 18000 numbers, for 2 runs * 200 tries * 3 pages * 15 stages.
    • Group and sort times. The time one stage of processing @@ -141,8 +141,7 @@ (cd $i; gnuplot ../distrib.gplt > $i.gif) echo $i done. end - - +

    IV. Results

    +</table></body></html>

    The only special feature of this master template is the slave tag, which marks the location of the content area. Note that the content is inserted into the master template as a @@ -78,15 +77,13 @@

    Write the Page Template(s)

    A page template must include a master tag to specify that its output should be enclosed in a master template:

    -
    -<master src="/templates/master">
    +
    <master src="/templates/master">
     
     <!--Begin layout of page content-->
     <h3>\@title\@</h3>
     <p>by \@name\@</p>
     <p><b>\@byline\@</b>: \@text</p>
    -...
    -
    +...

    The master tag may be included anywhere in the body of the page template, although usually the top of the file is the best location for it.

    @@ -98,31 +95,26 @@ personalized. The Tcl script associated with the master template would include code like this:

    -set user_name [your_procedure_to_get_the_current_user_name]
    -
    +set user_name [your_procedure_to_get_the_current_user_name]

    The template would have a section like this:

    -
    -<if \@user_name\@ nil>
    +
    <if \@user_name\@ nil>
       <a href="/register.acs">Register Now!</a>
     </if>
     <else>
       \@user_name\@ (<a href="/signout.acs">Sign Out</a>)
    -</else>
    -
    +</else>

    Passing Property Values from the Page Template to Master Template

    As mentioned above, in many cases the dynamic elements of the master template depend on whatever is appearing in the content area for a particular request. The property tag may be used in the page template to specify values that should be passed to the master template:

    -
    -<master src="/templates/master">
    +
    <master src="/templates/master">
     <property name="title">\@title\@</property>
     
     <!--Begin layout of page content-->
    -...
    -
    +...

    In this case, the property tag establishes title as a data source for the master template. Properties are set as regular Tcl variables prior to executing the Index: openacs-4/packages/acs-templating/www/doc/guide/wizard-procs-doc.adp =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-templating/www/doc/guide/wizard-procs-doc.adp,v diff -u -N -r1.4 -r1.5 --- openacs-4/packages/acs-templating/www/doc/guide/wizard-procs-doc.adp 22 Apr 2018 18:11:00 -0000 1.4 +++ openacs-4/packages/acs-templating/www/doc/guide/wizard-procs-doc.adp 25 Apr 2018 08:42:18 -0000 1.5 @@ -6,17 +6,15 @@

    1. Create a wizard file (ex. wizard.tcl) that contains the "template::wizard create" code. -
      -ex.
      +
      ex.
              template::wizard create -action "wizard" -name my_wizard -params {
                 my_param1 my_param2
              } -steps {
                 1 -label "Step 1" -url "step1"
                 2 -label "Step 2" -url "step2"        
                 3 -label "Step 3" -url "step3"
              }
      -    
      -
        +
      • action - the url where the wizard will always submit, normally its the same as your current wizard file. Has no effect for subwizards.
      • name - use to distinguish between the different wizards, since @@ -35,11 +33,9 @@ processing the wizard will take over and rewrite the url.

      • Create the wizard template file (ex. wizard.adp). This file will include the file based current step of the wizard -
        -ex.
        +
        ex.
                <include src="\@wizard:current_url\@">
        -    
        -
        +
      • Create the individual steps, these are just normal Tcl and/or adp files. So make a step1.tcl, step1.adp, step2.tcl, step2.adp, step3.tcl and step3.adp. Normally these files are self submitting @@ -49,13 +45,11 @@ step1.tcl will include
             template::wizard submit myform -buttons {back next}
        -    
        -
        + On the last step you may want to use the following on step3.tcl
             template::wizard submit myform -buttons {back next}
        -    
        -
        + The following values are acceptable for the buttons: back, next and finish. Back buttons are not rendered if the step is the first step, like wise next buttons are not displayed if its the last @@ -77,8 +71,7 @@ \@wizard.label\@ <br> </else> </multiple> - - +
      • How do you set the value of a wizard param?

        Use "template::wizard set_param myparam_name" to set it. Normally you place this in the steps of the wizard where the @@ -99,27 +92,23 @@ 2 -label "Step 2" -url "step2" 3 -label "Step 3" -url "step3" } - - + You can access my_param1 and/or my_param2 on any step1.tcl, step2.tcl, or step3.tcl by using "ad_page_contract" or "template::wizard get_param" -

        -ex.
        +
        ex.
             ad_page_contract {
                gets the wizard params
             } {
                my_param1
                my_param2
             }
        -    
        -
        +
        or
             set my_param1 [template::wizard get_param my_param1]
             set my_param2 [template::wizard get_param my_param2]
        -    
        -
        + Note: "template::wizard get_param" has the advantage of getting the param value during the response time. What does this mean? It will properly get the current value of the param which was @@ -138,8 +127,7 @@ \@wizard.label\@ <br> </a> </multiple> - - + Note: that this is not a very wise thing to do especially if the latter steps will depend on the inputs from the earlier steps. You can however do checking on each step.
      • @@ -156,8 +144,7 @@ \@wizard.label\@ <br> </else> </multiple> - - + Note: that this is not a very wise thing to do especially if the latter steps will depend on the inputs from the earlier steps. You can however do checking on each step.
      • Index: openacs-4/packages/acs-templating/www/doc/guide/wizards.adp =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-templating/www/doc/guide/wizards.adp,v diff -u -N -r1.3 -r1.4 --- openacs-4/packages/acs-templating/www/doc/guide/wizards.adp 7 Aug 2017 23:48:03 -0000 1.3 +++ openacs-4/packages/acs-templating/www/doc/guide/wizards.adp 25 Apr 2018 08:42:18 -0000 1.4 @@ -16,17 +16,14 @@

        Use the wizard create command to initialize a wizard, declaring any wizard state variables in the -params option:

        -
        -wizard create make_sandwich -params { sandwich_id }
        -
        +
        wizard create make_sandwich -params { sandwich_id }

        See the wizard API for optional parameters to this command.

        Add steps

        Once the wizard is created, use the wizard create command to add steps to it:

        -wizard add make_sandwich -label "Add the lettuce" -url "add-lettuce"
        -
        +wizard add make_sandwich -label "Add the lettuce" -url "add-lettuce"

        In auto-generated wizards, the wizard steps appear in the order they were created. See the wizard API for optional parameters to this command. Alternatively, @@ -68,22 +65,18 @@

        • Adding wizard submit buttons to the form in place of the standard form submit button: -

          In the .tcl file:

          -if { [wizard exists] } {
          +

          In the .tcl file:

          if { [wizard exists] } {
             wizard submit form_name -buttons { 
               { previous "Back" } repeat { next "Continue" } { finish Save } 
             }
           } else {
             element create form_name submit -datatype keyword -widget submit
           }
          -

          In the .adp file:

          -<formtemplate id=\@form_name\@ style=wizard>
          -
          +

          In the .adp file:

          <formtemplate id=\@form_name\@ style=wizard>
        • Advancing the wizard with the wizard forward command. The page the wizard forwards to depends on which wizard submit button was pressed (next, repeat, previous, finish): -
          -if { [wizard exists] } {
          +
          if { [wizard exists] } {
             # go to the next wizard step
             wizard forward
           } else {
          Index: openacs-4/packages/acs-templating/www/doc/tagref/formgroup.adp
          ===================================================================
          RCS file: /usr/local/cvsroot/openacs-4/packages/acs-templating/www/doc/tagref/formgroup.adp,v
          diff -u -N -r1.4 -r1.5
          --- openacs-4/packages/acs-templating/www/doc/tagref/formgroup.adp	7 Aug 2017 23:48:03 -0000	1.4
          +++ openacs-4/packages/acs-templating/www/doc/tagref/formgroup.adp	25 Apr 2018 08:42:18 -0000	1.5
          @@ -43,8 +43,7 @@
           check box in the group. Although possible, newer browser security
           features such as CSP discourage the use of inline Javascript event
           handlers.

          -<formgroup id="services" style="background-color:white;">
          -
          +<formgroup id="services" style="background-color:white;">
        • See the formtemplate and formwidget tags for more information on writing the body of a dynamic form Index: openacs-4/packages/acs-templating/www/doc/tagref/formtemplate.adp =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-templating/www/doc/tagref/formtemplate.adp,v diff -u -N -r1.4 -r1.5 --- openacs-4/packages/acs-templating/www/doc/tagref/formtemplate.adp 7 Aug 2017 23:48:03 -0000 1.4 +++ openacs-4/packages/acs-templating/www/doc/tagref/formtemplate.adp 25 Apr 2018 08:42:18 -0000 1.5 @@ -35,8 +35,7 @@ templating system will generate a form automatically based on the list of elements created in the Tcl script associated with the template:

          -<formtemplate id="add_user" style="standard"></formtemplate>
          -

          The style attribute is optional. It may be used to +<formtemplate id="add_user" style="standard"></formtemplate>

          The style attribute is optional. It may be used to select a style template from /ats/templates/forms for determining the layout of the auto-generated form. The default style is defined in the DefaultFormStyle parameter on the @@ -48,8 +47,7 @@ attributes in the form tag of the rendered HTML form. Although possible, newer browser security features such as CSP discourage the use of inline Javascript event handlers.

          -<formtemplate id="add_user" style="background-color:white;">
          -

          This will work for both autogenerated and explicitly formatted +<formtemplate id="add_user" style="background-color:white;">

          This will work for both autogenerated and explicitly formatted forms.

        • See the formwidget and formgroup tags for more Index: openacs-4/packages/acs-templating/www/doc/tagref/formwidget.adp =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-templating/www/doc/tagref/formwidget.adp,v diff -u -N -r1.4 -r1.5 --- openacs-4/packages/acs-templating/www/doc/tagref/formwidget.adp 7 Aug 2017 23:48:03 -0000 1.4 +++ openacs-4/packages/acs-templating/www/doc/tagref/formwidget.adp 25 Apr 2018 08:42:18 -0000 1.5 @@ -40,8 +40,7 @@ rendered HTML form. Although possible, newer browser security features such as CSP discourage the use of inline Javascript event handlers.

          -<formwidget id="cc_number" style="background-color:white;">
          -
          +<formwidget id="cc_number" style="background-color:white;">
        • See the formtemplate and formgroup tags for more information on writing the body of a dynamic form template.

        • Index: openacs-4/packages/acs-templating/www/doc/tagref/group.adp =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-templating/www/doc/tagref/group.adp,v diff -u -N -r1.3 -r1.4 --- openacs-4/packages/acs-templating/www/doc/tagref/group.adp 7 Aug 2017 23:48:03 -0000 1.3 +++ openacs-4/packages/acs-templating/www/doc/tagref/group.adp 25 Apr 2018 08:42:18 -0000 1.4 @@ -28,8 +28,7 @@ group tags nested within each other.

        Usage

        -
        -<table>
        +
        <table>
         
         <multiple name="shirts">
         
        @@ -60,8 +59,7 @@
         
         </multiple>
         
        -</table>
        -
        +</table>

        [Note: Carsten added this feature during the Berlin Hackaton 2004-02-14]

        The delimiter attribute will add a string after each Index: openacs-4/packages/acs-templating/www/doc/tagref/if.adp =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-templating/www/doc/tagref/if.adp,v diff -u -N -r1.4 -r1.5 --- openacs-4/packages/acs-templating/www/doc/tagref/if.adp 7 Aug 2017 23:48:03 -0000 1.4 +++ openacs-4/packages/acs-templating/www/doc/tagref/if.adp 25 Apr 2018 08:42:18 -0000 1.5 @@ -11,8 +11,7 @@

        The if tag is used to output a template section only when certain conditions are met.

        Usage Examples

        -
        -<if \@x\@ eq 5>True</if>
        +
        <if \@x\@ eq 5>True</if>
         <if \@x\@ eq "Greta">True</if>
         
         <if \@x\@ ne 5>True</if>
        @@ -37,8 +36,7 @@
         <if \@s\@ not nil>True</if>
         
         <if \@z\@ in "Greta" "Fred" "Sam">True</if>
        -<if \@z\@ not in "Greta" "Fred" "Sam">True</if>
        -
        +<if \@z\@ not in "Greta" "Fred" "Sam">True</if>

        Expression Syntax

        The condition of the <if> tag is built from terms of the form @@ -118,8 +116,7 @@ grouped correctly:

           <if \@datasource.variable\@ eq "blue sky">
             <td bgcolor="#0000ff">
        -  </if>
        -
        + </if>
      • The elseif tag may be used following an if block to specify an alternate conditional template section.

        @@ -131,8 +128,7 @@
           </elseif>
           <else>
             <td bgcolor="#ffffff">
        -  </else>
        -
        + </else>
      • The else tag may be used following an if block to specify an alternate template section when a condition is @@ -142,8 +138,7 @@ </if> <else> <td bgcolor="#ffffff"> - </else> - + </else>

      • Compound expressions can be created by combining terms with the and and or keywords, as illustrated above. Any number of statements may be connected in this fashion. There is Index: openacs-4/packages/acs-templating/www/doc/tagref/include.adp =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-templating/www/doc/tagref/include.adp,v diff -u -N -r1.3 -r1.4 --- openacs-4/packages/acs-templating/www/doc/tagref/include.adp 7 Aug 2017 23:48:03 -0000 1.3 +++ openacs-4/packages/acs-templating/www/doc/tagref/include.adp 25 Apr 2018 08:42:18 -0000 1.4 @@ -14,13 +14,11 @@ may associate data sources and other properties to them.

        Usage

        -<include src="subtemplate" attribute="value" ...>
        -
        +<include src="subtemplate" attribute="value" ...> or
        -<include src="/packages/packagename/www/lib/subtemplate" attribute="value" ...>
        -
        +<include src="/packages/packagename/www/lib/subtemplate" attribute="value" ...>

        Notes

        • Arguments may be passed to the subtemplate by specifying @@ -30,8 +28,7 @@ var tag. To pass a dynamic variable to the subtemplate, specify the variable name surrounded by at signs as the value:
          -<include src="subtemplate" source_id="\@source_id\@" ...>
          -
          +<include src="subtemplate" source_id="\@source_id\@" ...> Note that passing an html string to a subtemplate via \@var\@ will result in passing an html-escaped and internationalized string. To prevent this, use @@ -42,8 +39,7 @@ passing a Tcl array like a templating datasource. To pass e.g. users by reference, use this notation:
          -<include src="subtemplate" &persons="users" ...>
          -
          +<include src="subtemplate" &persons="users" ...> This is particularly useful for passing onerow and multirow data sourced. Note that in this case, if the subtemplate modifies the value this will affect the includer. When the datasource in the Index: openacs-4/packages/acs-templating/www/doc/tagref/index.adp =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-templating/www/doc/tagref/index.adp,v diff -u -N -r1.3 -r1.4 --- openacs-4/packages/acs-templating/www/doc/tagref/index.adp 7 Aug 2017 23:48:03 -0000 1.3 +++ openacs-4/packages/acs-templating/www/doc/tagref/index.adp 25 Apr 2018 08:42:18 -0000 1.4 @@ -41,8 +41,7 @@ crowding the start and end tags like so:

           <td><if %x% eq 5><img src="five.gif"></if>
           <else><img src="notfive.gif"></else></td>
          -        
          -

          Note that this should not be done unless necessary, since it +

          Note that this should not be done unless necessary, since it reduces the legibility of the template to others who need to edit the template later.

        • @@ -51,5 +50,5 @@
          Christian Brechbühler
          -Last modified: $‌Id: index.html,v 1.4.24.2 2016/11/08 10:42:20 -gustafn Exp $ +Last modified: $‌Id: index.html,v 1.5 2017/08/07 23:48:03 gustafn +Exp $ Index: openacs-4/packages/acs-templating/www/doc/tagref/list.adp =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-templating/www/doc/tagref/list.adp,v diff -u -N -r1.3 -r1.4 --- openacs-4/packages/acs-templating/www/doc/tagref/list.adp 7 Aug 2017 23:48:03 -0000 1.3 +++ openacs-4/packages/acs-templating/www/doc/tagref/list.adp 25 Apr 2018 08:42:18 -0000 1.4 @@ -11,8 +11,7 @@

          The list tag is used to repeat a template section for each item in a list data source.

          Usage

          -
          -<list name="datasource">
          +
          <list name="datasource">
           
             <if \@datasource:rownum\@ ne \@datasource:rowcount\@>
               \@datasource:item\@ :
          @@ -21,8 +20,7 @@
               <b>\@datasource:item\@</b>
             </else>
           
          -</list>
          -
          +</list>

          Notes

          • The special variable Index: openacs-4/packages/acs-templating/www/doc/tagref/master.adp =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-templating/www/doc/tagref/master.adp,v diff -u -N -r1.3 -r1.4 --- openacs-4/packages/acs-templating/www/doc/tagref/master.adp 7 Aug 2017 23:48:03 -0000 1.3 +++ openacs-4/packages/acs-templating/www/doc/tagref/master.adp 25 Apr 2018 08:42:18 -0000 1.4 @@ -15,8 +15,7 @@ slave tag in the master template.

            Usage

            -
            -<master src="master">
            +
            <master src="master">
             
             <property name="title">My Home Page</property>
             
            Index: openacs-4/packages/acs-templating/www/doc/tagref/multiple.adp
            ===================================================================
            RCS file: /usr/local/cvsroot/openacs-4/packages/acs-templating/www/doc/tagref/multiple.adp,v
            diff -u -N -r1.4 -r1.5
            --- openacs-4/packages/acs-templating/www/doc/tagref/multiple.adp	7 Aug 2017 23:48:03 -0000	1.4
            +++ openacs-4/packages/acs-templating/www/doc/tagref/multiple.adp	25 Apr 2018 08:42:18 -0000	1.5
            @@ -13,8 +13,7 @@
             with each repetition to the values of the next row of the data
             source.

            Usage

            -
            -<!-- Begin multiple layout, i.e. <table> -->
            +
            <!-- Begin multiple layout, i.e. <table> -->
             <table>
             
             <multiple name="users">
            @@ -39,8 +38,7 @@
             </multiple>
             
             <!-- End multiple layout, i.e. </table> -->
            -</table>
            -
            +</table>
            
             

            Notes

              Index: openacs-4/packages/acs-templating/www/doc/tagref/property.adp =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-templating/www/doc/tagref/property.adp,v diff -u -N -r1.3 -r1.4 --- openacs-4/packages/acs-templating/www/doc/tagref/property.adp 7 Aug 2017 23:48:03 -0000 1.3 +++ openacs-4/packages/acs-templating/www/doc/tagref/property.adp 25 Apr 2018 08:42:18 -0000 1.4 @@ -14,8 +14,7 @@ Properties are most commonly used to pass information to a master template, such as a title or logo.

              Usage

              -
              -<master src="master">
              +
              <master src="master">
               
               <property name="title">My Home Page</property>
               
              Index: openacs-4/packages/acs-templating/www/doc/tagref/slave.adp
              ===================================================================
              RCS file: /usr/local/cvsroot/openacs-4/packages/acs-templating/www/doc/tagref/slave.adp,v
              diff -u -N -r1.3 -r1.4
              --- openacs-4/packages/acs-templating/www/doc/tagref/slave.adp	7 Aug 2017 23:48:03 -0000	1.3
              +++ openacs-4/packages/acs-templating/www/doc/tagref/slave.adp	25 Apr 2018 08:42:18 -0000	1.4
              @@ -11,17 +11,15 @@
               

              The slave tag is used to mark the position in the master template where the body template should be inserted.

              Usage

              -
              -<html>
              +
              <html>
               <head><title>\@title\@</title></head>
               <body>
               <h2>\@title\@</h2>
               <hr>
               <blockquote>
                 <slave>
               </blockquote>
              -<hr>
              -
              +<hr>

              Note(s)

              • See property and master for more information related to master templates.

              Index: openacs-4/packages/acs-templating/www/doc/tagref/switch.adp =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-templating/www/doc/tagref/switch.adp,v diff -u -N -r1.4 -r1.5 --- openacs-4/packages/acs-templating/www/doc/tagref/switch.adp 7 Aug 2017 23:48:03 -0000 1.4 +++ openacs-4/packages/acs-templating/www/doc/tagref/switch.adp 25 Apr 2018 08:42:18 -0000 1.5 @@ -68,8 +68,7 @@ with spaces correctly results in an error.

                 <case "{blue sky}">
                   <td bgcolor="#0000ff">
              -  </case>
              -
              + </case>

            Index: openacs-4/packages/acs-templating/www/doc/tagref/variable.adp =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-templating/www/doc/tagref/variable.adp,v diff -u -N -r1.4 -r1.5 --- openacs-4/packages/acs-templating/www/doc/tagref/variable.adp 7 Aug 2017 23:48:03 -0000 1.4 +++ openacs-4/packages/acs-templating/www/doc/tagref/variable.adp 25 Apr 2018 08:42:18 -0000 1.5 @@ -13,22 +13,17 @@

            Usage

            Simple variables are referenced by surrounding the variable name with "commercial at" (\@) signs:

            -
            -<!-- simple variables -->
            -<b><i>\@first_name\@ \@last_name\@</b></i>
            -
            +
            <!-- simple variables -->
            +<b><i>\@first_name\@ \@last_name\@</b></i>

            When processing this template, the server will look for variables named first_name and last_name and substitute their values in the output:

            -
            -<b><i>Fred Finkel</b></i>
            -
            +
            <b><i>Fred Finkel</b></i>

            The columns of a row variable are referenced by separating the data source name and column with a period:

             <!-- onerow or multirow data sources -->
            -<b><i>\@user.first_name\@ \@user.last_name\@</b></i>
            -
            +<b><i>\@user.first_name\@ \@user.last_name\@</b></i>

            Note(s)

            • An attempt to reference a variable that does not exist will cause an error message to appear in the browser.