Index: openacs-4/packages/acs-core-docs/www/acs-admin.html =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/acs-admin.html,v diff -u -r1.43.2.1 -r1.43.2.2 --- openacs-4/packages/acs-core-docs/www/acs-admin.html 12 Jun 2011 20:03:47 -0000 1.43.2.1 +++ openacs-4/packages/acs-core-docs/www/acs-admin.html 12 Jun 2011 20:52:56 -0000 1.43.2.2 @@ -1,2 +1,2 @@ -Part II. Administrator's Guide

Administrator's Guide

Table of Contents

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 OpenACS 5.6.0
OpenACS Installation Guide for Windows2000
OpenACS Installation Guide for Mac OS X
4. 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
5. 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
6. Database Management
Running a PostgreSQL database on another server
Deleting a tablespace
Vacuum Postgres nightly
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 Full Text Search using OpenFTS (deprecated see 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
Section missingSection missingCredits Section Missing
View comments on this page at openacs.org
+Part II. Administrator's Guide

Administrator's Guide

Table of Contents

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.7.0
OpenACS Installation Guide for Windows2000
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. Database Management
Running a PostgreSQL database on another server
Deleting a tablespace
Vacuum Postgres nightly
7. 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 Full Text Search using OpenFTS (deprecated see 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
Section missingCredits Section Missing
View comments on this page at openacs.org
Index: openacs-4/packages/acs-core-docs/www/acs-package-dev.html =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/acs-package-dev.html,v diff -u -r1.31.2.1 -r1.31.2.2 --- openacs-4/packages/acs-core-docs/www/acs-package-dev.html 12 Jun 2011 20:03:47 -0000 1.31.2.1 +++ openacs-4/packages/acs-core-docs/www/acs-package-dev.html 12 Jun 2011 20:52:56 -0000 1.31.2.2 @@ -1,5 +1,5 @@ -Part III. For OpenACS Package Developers

For OpenACS Package Developers

Tutorials and reference material for creating new OpenACS packages. -

Table of Contents

7. Development Tutorial
Creating an Application Package
Setting Up Database Objects
Creating Web Pages
Debugging and Automated Testing
8. Development Reference
OpenACS Packages
OpenACS Data Models and the Object System
The Request Processor
Using Templates in OpenACS
Groups, Context, Permissions
Writing OpenACS Application Pages
Parties in OpenACS
OpenACS Permissions Tediously Explained
Object Identity
Programming with AOLserver
9. Engineering Standards
OpenACS Style Guide
+Part III. For OpenACS Package Developers
View comments on this page at openacs.org
+
Release Version Numbering
Constraint naming standard
ACS File Naming and Formatting Standards
Variables
Automated Testing
11. Documentation Standards
OpenACS Documentation Guide
Using PSGML mode in Emacs
Using nXML mode in Emacs
Detailed Design Documentation Template
System/Application Requirements Template
12. Internationalization
Internationalization and Localization Overview
How Internationalization/Localization works in OpenACS
How to Internationalize a Package
Design Notes
Translator's Guide
C. Using CVS with an OpenACS Site
Section missing
View comments on this page at openacs.org
Index: openacs-4/packages/acs-core-docs/www/acs-plat-dev.html =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/acs-plat-dev.html,v diff -u -r1.29.2.1 -r1.29.2.2 --- openacs-4/packages/acs-core-docs/www/acs-plat-dev.html 12 Jun 2011 20:03:47 -0000 1.29.2.1 +++ openacs-4/packages/acs-core-docs/www/acs-plat-dev.html 12 Jun 2011 20:52:56 -0000 1.29.2.2 @@ -1,2 +1,2 @@ -Part IV. For OpenACS Platform Developers

For OpenACS Platform Developers

Table of Contents

12. 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
Security Requirements
Security Design
Request Processor Requirements
Request Processor Design
Documenting Tcl Files: Page Contracts and Libraries
Bootstrapping OpenACS
External Authentication Requirements
13. 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
View comments on this page at openacs.org
+Part IV. For OpenACS Platform Developers

For OpenACS Platform Developers

Table of Contents

13. Kernel Documentation
Overview
Object Model Requirements
Object Model Design
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
Request Processor Requirements
Request Processor Design
Documenting Tcl Files: Page Contracts and Libraries
Bootstrapping OpenACS
External Authentication Requirements
14. 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
View comments on this page at openacs.org
Index: openacs-4/packages/acs-core-docs/www/analog-install.html =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/analog-install.html,v diff -u -r1.21.2.1 -r1.21.2.2 --- openacs-4/packages/acs-core-docs/www/analog-install.html 12 Jun 2011 20:03:48 -0000 1.21.2.1 +++ openacs-4/packages/acs-core-docs/www/analog-install.html 12 Jun 2011 20:52:56 -0000 1.21.2.2 @@ -18,4 +18,4 @@ cd analog-5.32 make cd .. -mv analog-5.32 /usr/share/

See also Section , “Set up Log Analysis Reports”

View comments on this page at openacs.org
+mv analog-5.32 /usr/share/

See also ???

View comments on this page at openacs.org
Index: openacs-4/packages/acs-core-docs/www/aolserver.html =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/aolserver.html,v diff -u -r1.50.2.1 -r1.50.2.2 --- openacs-4/packages/acs-core-docs/www/aolserver.html 12 Jun 2011 20:03:48 -0000 1.50.2.1 +++ openacs-4/packages/acs-core-docs/www/aolserver.html 12 Jun 2011 20:52:56 -0000 1.50.2.2 @@ -2,7 +2,7 @@ Install AOLserver 3.3oacs1

Install AOLserver 3.3oacs1

by Vinod Kurup

OpenACS docs are written by the named authors, and may be edited by OpenACS documentation staff. -

We recommend the use of AOLserver 4.0.1 or later. These instructions are retained as a resource.

+

We recommend the use of AOLserver 4.0.1 or later. These instructions are retained as a resource.

Debian users: we do not recommend installing Debian packages for Aolserver or Postgres. Several people have reported problems while trying to install using apt-get @@ -83,17 +83,17 @@ 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.

  • 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
    @@ -205,7 +205,7 @@
               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.
    +          services in general. We cover this topic in the ??? 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 Index: openacs-4/packages/acs-core-docs/www/aolserver4.html =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/aolserver4.html,v diff -u -r1.25 -r1.25.2.1 --- openacs-4/packages/acs-core-docs/www/aolserver4.html 11 Dec 2010 23:36:32 -0000 1.25 +++ openacs-4/packages/acs-core-docs/www/aolserver4.html 12 Jun 2011 20:52:56 -0000 1.25.2.1 @@ -1,54 +1,54 @@ - -Install AOLserver 4

    Install AOLserver 4

    by Malte Sussdorff

    + +Install AOLserver 4

    Install AOLserver 4

    by Malte Sussdorff

    OpenACS docs are written by the named authors, and may be edited by OpenACS documentation staff. -
    1. Check suitability of previously installed TCL. Start tcl (type tclsh or find it using which tclsh). -

      [root root]% info exists tcl_platform(threaded)
      +        
    1. Check suitability of previously installed TCL. Start tcl (type tclsh or find it using which tclsh). +

      [root root]% info exists tcl_platform(threaded)
       1
      -[root root]% info patchlevel
      +[root root]% info patchlevel
       8.4.7
       [root root]%
       tclsh
       info exists tcl_platform(threaded)
       info patchlevel
      -

      If the first command returns anything other than 1, +

      If the first command returns anything other than 1, then tcl is not threaded. If tcl is 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 +

      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 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 + Install Postgres page). You'll have to use /usr/lib/tcl8.4/ instead of /usr/local/lib when you - try to find the tcl libraries, however.

      If you have not installed TCL already, download the latest TCL version from Sourceforge

      Debian: - apt-get install - tcl8.4 tcl8.4-dev and proceed to + try to find the tcl libraries, however.

      If you have not installed TCL already, download the latest TCL version from Sourceforge

      Debian: + apt-get install + tcl8.4 tcl8.4-dev and proceed to the next step. In that step, replace - --with-tcl=/usr/local/lib/ with - --with-tcl=/usr/lib/tcl8.4.

      Remember that you have to be root if you want to follow these 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
      -[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
      -[root unix]# ./configure --enable-threads
      -[root unix]# make install
      +      --with-tcl=/usr/local/lib/ with
      +        --with-tcl=/usr/lib/tcl8.4.

      Remember that you have to be root if you want to follow these 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
      +[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
      +[root unix]# ./configure --enable-threads
      +[root unix]# make install
       [root root]# 
       cd /usr/local/src
       wget http://heanet.dl.sourceforge.net/sourceforge/tcl/tcl8.4.9-src.tar.gz
       tar xfz tcl8.4.9-src.tar.gz
       cd tcl8.4.9/unix
       ./configure --enable-threads
       make install
      -      
    2. Retrieve AOLserver. Download the 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
      -[root aolserver]# cvs -z3 -d:pserver:anonymous@cvs.sourceforge.net:/cvsroot/aolserver co  -r aolserver_v40_r10 aolserver
      -[root aolserver]# cvs -z3 -d:pserver:anonymous@cvs.sourceforge.net:/cvsroot/aolserver co nscache
      -[root aolserver]# cvs -z3 -d:pserver:anonymous@cvs.sourceforge.net:/cvsroot/aolserver co nspostgres
      -[root aolserver]# cvs -z3 -d:pserver:anonymous@cvs.sourceforge.net:/cvsroot/aolserver co nssha1
      -[root aolserver]# cvs -z3 -d:pserver:anonymous@cvs.sourceforge.net:/cvsroot/aolserver co -r v2_7 nsoracle
      -[root aolserver]# wget http://www.tdom.org/tDOM-0.7.8.tar.gz
      -[root aolserver]# tar xvfz tDOM-0.7.8.tar.gz
      -[root aolserver]# cvs -z3 -d:pserver:anonymous@cvs.sourceforge.net:/cvsroot/tcllib co -r tcllib-1-8 tcllib
      +      
    3. Retrieve AOLserver. Download the 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
      +[root aolserver]# cvs -z3 -d:pserver:anonymous@cvs.sourceforge.net:/cvsroot/aolserver co  -r aolserver_v40_r10 aolserver
      +[root aolserver]# cvs -z3 -d:pserver:anonymous@cvs.sourceforge.net:/cvsroot/aolserver co nscache
      +[root aolserver]# cvs -z3 -d:pserver:anonymous@cvs.sourceforge.net:/cvsroot/aolserver co nspostgres
      +[root aolserver]# cvs -z3 -d:pserver:anonymous@cvs.sourceforge.net:/cvsroot/aolserver co nssha1
      +[root aolserver]# cvs -z3 -d:pserver:anonymous@cvs.sourceforge.net:/cvsroot/aolserver co -r v2_7 nsoracle
      +[root aolserver]# wget http://www.tdom.org/tDOM-0.7.8.tar.gz
      +[root aolserver]# tar xvfz tDOM-0.7.8.tar.gz
      +[root aolserver]# cvs -z3 -d:pserver:anonymous@cvs.sourceforge.net:/cvsroot/tcllib co -r tcllib-1-8 tcllib
       [root root]# 
       cd /usr/local/src
       mkdir aolserver40r10
      @@ -60,32 +60,32 @@
       cvs -z3 -d:pserver:anonymous@cvs.sourceforge.net:/cvsroot/aolserver co -r v2_7 nsoracle
       wget http://www.tdom.org/files/tDOM-0.8.0.tar.gz
       tar xvfz tDOM-0.8.0.tar.gz
      -cvs -z3 -d:pserver:anonymous@cvs.sourceforge.net:/cvsroot/tcllib co -r tcllib-1-8 tcllib
    4. Configure, compile and install AOLserver. Many people need to run more than one version of AOLserver in parallel. This section accomodates 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 install
      +cvs -z3 -d:pserver:anonymous@cvs.sourceforge.net:/cvsroot/tcllib co -r tcllib-1-8 tcllib
    5. Configure, compile and install AOLserver. Many people need to run more than one version of AOLserver in parallel. This section accomodates 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 install
       cd /usr/local/src/aolserver40r10/aolserver
       ./configure --prefix=/usr/local/aolserver40r10 --with-tcl=/usr/local/lib/
       make install
      -

      If you are using gcc 4 or later, see http://openacs.org/forums/message-view?message_id=309814

      If this is the only version of AOLserver in use, or is the default version, create a symlink. If not, then be sure to use /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
    6. Configure, compile and install the modules.  -

      1. 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
        -[root nsoracle]# make install AOLSERVER=/usr/local/aolserver

        OpenACS looks for the Oracle driver at +

        If you are using gcc 4 or later, see http://openacs.org/forums/message-view?message_id=309814

        If this is the only version of AOLserver in use, or is the default version, create a symlink. If not, then be sure to use /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
      3. Configure, compile and install the modules.  +

        1. 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
          +[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
          -[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
          +            can symlink (ln -s nsoracle.so ora8.so) to fix it. 

        4. 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 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 +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

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

          MODLIBS = -L$(PGLIB) -lpq -lnsdb
        5. 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;
        6. 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 differnt 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
        7. Install TCLLIB

          [root nssha1]# cd ../tcllib

          Configure and compile TCLLIB

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

        -

      4. Add a database-specific wrapper script. This script + 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

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

        MODLIBS = -L$(PGLIB) -lpq -lnsdb
      5. 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;
      6. 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 differnt 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
      7. Install TCLLIB

        [root nssha1]# cd ../tcllib

        Configure and compile TCLLIB

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

      +

    7. 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 @@ -99,17 +99,17 @@ OpenACS code, but don't forget to come back. (Note to maintainers: this should be moved to the next page and integrated into the text there) -

      • Oracle

        [root aolserver]# cd /usr/local/aolserver/bin
        -[root bin]# cp /tmp/openacs-5.6.0/packages/acs-core-docs/www/files/nsd-oracle.txt ./nsd-oracle
        -[root bin]# chmod 750 nsd-oracle
        +    

        • Oracle

          [root aolserver]# cd /usr/local/aolserver/bin
          +[root bin]# cp /tmp/openacs-5.7.0/packages/acs-core-docs/www/files/nsd-oracle.txt ./nsd-oracle
          +[root bin]# chmod 750 nsd-oracle
           [root bin]#
           cd /usr/local/aolserver/bin
          -cp /var/tmp/openacs-5.6.0/packages/acs-core-docs/www/files/nsd-oracle.txt ./nsd-oracle
          -chmod 750 nsd-oracle
        • PostgreSQL

          [root aolserver]# cd /usr/local/aolserver/bin
          -[root bin]# cp /var/tmp/openacs-5.6.0/packages/acs-core-docs/www/files/nsd-postgres.txt ./nsd-postgres
          -[root bin]# chmod 755 nsd-postgres
          +cp /var/tmp/openacs-5.7.0/packages/acs-core-docs/www/files/nsd-oracle.txt ./nsd-oracle
          +chmod 750 nsd-oracle
        • PostgreSQL

          [root aolserver]# cd /usr/local/aolserver/bin
          +[root bin]# cp /var/tmp/openacs-5.7.0/packages/acs-core-docs/www/files/nsd-postgres.txt ./nsd-postgres
          +[root bin]# chmod 755 nsd-postgres
           [root bin]#
           cd /usr/local/aolserver/bin
          -cp /var/tmp/openacs-5.6.0/packages/acs-core-docs/www/files/nsd-postgres.txt ./nsd-postgres
          +cp /var/tmp/openacs-5.7.0/packages/acs-core-docs/www/files/nsd-postgres.txt ./nsd-postgres
           chmod 755 nsd-postgres

        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 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 -b yourip:yourport switch)

      • Test AOLserver.

    ($Id$)
    View comments on this page at openacs.org
    + /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 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 -b yourip:yourport switch)

  • Test AOLserver.

  • ($Id$)
    View comments on this page at openacs.org
    Index: openacs-4/packages/acs-core-docs/www/apm-design.html =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/apm-design.html,v diff -u -r1.38.2.1 -r1.38.2.2 --- openacs-4/packages/acs-core-docs/www/apm-design.html 12 Jun 2011 20:03:48 -0000 1.38.2.1 +++ openacs-4/packages/acs-core-docs/www/apm-design.html 12 Jun 2011 20:52:56 -0000 1.38.2.2 @@ -1,5 +1,5 @@ -Package Manager Design

    Package Manager Design

    By Bryan Quinn

    +Package Manager Design

    Package Manager Design

    By Bryan Quinn

    OpenACS docs are written by the named authors, and may be edited by OpenACS documentation staff.

    Essentials

    • OpenACS Administrator directory

    • Package Manager Requirements

    • Packages

    • ER diagram

    • Tcl API

      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 individual pieces of subsites. A subsite can contain multiple Index: openacs-4/packages/acs-core-docs/www/apm-requirements.html =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/apm-requirements.html,v diff -u -r1.34.2.1 -r1.34.2.2 --- openacs-4/packages/acs-core-docs/www/apm-requirements.html 12 Jun 2011 20:03:48 -0000 1.34.2.1 +++ openacs-4/packages/acs-core-docs/www/apm-requirements.html 12 Jun 2011 20:52:56 -0000 1.34.2.2 @@ -1,5 +1,5 @@ -Package Manager Requirements

      Package Manager Requirements

      By Bryan Quinn and Todd Nightingale

      +Package Manager Requirements

      Package Manager Requirements

      By Bryan Quinn and Todd Nightingale

      OpenACS docs are written by the named authors, and may be edited by OpenACS documentation staff.

      Introduction

      The following is a requirements document for the OpenACS Package Manager Index: openacs-4/packages/acs-core-docs/www/automated-backup.html =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/automated-backup.html,v diff -u -r1.11 -r1.11.2.1 --- openacs-4/packages/acs-core-docs/www/automated-backup.html 17 Oct 2010 21:06:07 -0000 1.11 +++ openacs-4/packages/acs-core-docs/www/automated-backup.html 12 Jun 2011 20:52:56 -0000 1.11.2.1 @@ -1,4 +1,4 @@ -Automated Backup

      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 /var/lib/aolserver/$OPENACS_SERVICE_NAME/database-backup and then backs up all of /var/lib/aolserver/$OPENACS_SERVICE_NAME to a single zip file, and then copies that zip file to another computer.

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

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

      3. +Automated Backup

        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 /var/lib/aolserver/$OPENACS_SERVICE_NAME/database-backup and then backs up all of /var/lib/aolserver/$OPENACS_SERVICE_NAME to a single zip file, and then copies that zip file to another computer.

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

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

        3. Make sure the file is executable:

          chmod +x backup.sh
        4. 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
        View comments on this page at openacs.org
        Index: openacs-4/packages/acs-core-docs/www/automated-testing-best-practices.html =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/automated-testing-best-practices.html,v diff -u -r1.26.2.1 -r1.26.2.2 --- openacs-4/packages/acs-core-docs/www/automated-testing-best-practices.html 12 Jun 2011 20:03:48 -0000 1.26.2.1 +++ openacs-4/packages/acs-core-docs/www/automated-testing-best-practices.html 12 Jun 2011 20:52:56 -0000 1.26.2.2 @@ -1,5 +1,5 @@ -Automated Testing

        Automated Testing

        By Jeff Davis

        +Automated Testing

        Automated Testing

        By Jeff Davis

        OpenACS docs are written by the named authors, and may be edited by OpenACS documentation staff.

        Best practices in writing OpenACS automated tests

        • Special characters in Tcl.  @@ -25,4 +25,4 @@ 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$)
        View comments on this page at openacs.org
        +

    ($Id$)
    View comments on this page at openacs.org
    Index: openacs-4/packages/acs-core-docs/www/backup-recovery.html =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/backup-recovery.html,v diff -u -r1.41 -r1.41.2.1 --- openacs-4/packages/acs-core-docs/www/backup-recovery.html 17 Oct 2010 21:06:07 -0000 1.41 +++ openacs-4/packages/acs-core-docs/www/backup-recovery.html 12 Jun 2011 20:52:56 -0000 1.41.2.1 @@ -1,12 +1,12 @@ -Chapter 8. Backup and Recovery

    Chapter 8. Backup and Recovery

    ($Id$)

    By Don Baccus with additions +Chapter 7. Backup and Recovery

    Chapter 7. Backup and Recovery

    ($Id$)

    By Don Baccus with additions by Joel Aufrecht

    We will cover some basic backup and recovery strategies. These are intended to be robust but simple enough to set up. For a large scale production site you would probably need to create your own backup strategies (in particular full dumps from oracle, while easy to set up, are far from the best solution).

    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

    Backup and Recovery Strategy

    +

    Figure 7.1. Backup and Recovery Strategy

    Backup and Recovery Strategy

    OpenACS docs are written by the named authors, and may be edited by OpenACS documentation staff. Index: openacs-4/packages/acs-core-docs/www/backups-with-cvs.html =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/backups-with-cvs.html,v diff -u -r1.11 -r1.11.2.1 --- openacs-4/packages/acs-core-docs/www/backups-with-cvs.html 17 Oct 2010 21:06:07 -0000 1.11 +++ openacs-4/packages/acs-core-docs/www/backups-with-cvs.html 12 Jun 2011 20:52:56 -0000 1.11.2.1 @@ -1,5 +1,5 @@ -Using CVS for backup-recovery

    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 probably don't +Using CVS for backup-recovery

    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 probably don't need to do anything to back up your files. Just make sure that your current work is checked into the system. You can then roll back based on date - note the Index: openacs-4/packages/acs-core-docs/www/bootstrap-acs.html =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/bootstrap-acs.html,v diff -u -r1.47.2.1 -r1.47.2.2 --- openacs-4/packages/acs-core-docs/www/bootstrap-acs.html 12 Jun 2011 20:03:48 -0000 1.47.2.1 +++ openacs-4/packages/acs-core-docs/www/bootstrap-acs.html 12 Jun 2011 20:52:56 -0000 1.47.2.2 @@ -1,5 +1,5 @@ -Bootstrapping OpenACS

    Bootstrapping OpenACS

    By Jon Salz

    +Bootstrapping OpenACS

    Bootstrapping OpenACS

    By Jon Salz

    OpenACS docs are written by the named authors, and may be edited by OpenACS documentation staff.
    • Tcl code: /tcl/0-acs-init.tcl and /packages/acs-kernel/bootstrap.tcl

    This document describes the startup (bootstrapping) process for an AOLserver Index: openacs-4/packages/acs-core-docs/www/complete-install.html =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/complete-install.html,v diff -u -r1.23.2.1 -r1.23.2.2 --- openacs-4/packages/acs-core-docs/www/complete-install.html 12 Jun 2011 20:03:48 -0000 1.23.2.1 +++ openacs-4/packages/acs-core-docs/www/complete-install.html 12 Jun 2011 20:52:56 -0000 1.23.2.2 @@ -1,2 +1,2 @@ -Chapter 3. Complete Installation

    View comments on this page at openacs.org
    +Chapter 3. Complete Installation
    View comments on this page at openacs.org
    Index: openacs-4/packages/acs-core-docs/www/configuring-configuring-packages.html =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/configuring-configuring-packages.html,v diff -u -r1.8 -r1.8.2.1 --- openacs-4/packages/acs-core-docs/www/configuring-configuring-packages.html 11 Dec 2010 23:36:32 -0000 1.8 +++ openacs-4/packages/acs-core-docs/www/configuring-configuring-packages.html 12 Jun 2011 20:52:56 -0000 1.8.2.1 @@ -1,8 +1,8 @@ - -Configuring an OpenACS package

    Configuring an OpenACS package

    by Jade Rubick

    + +Configuring an OpenACS package

    Configuring an OpenACS package

    by Jade Rubick

    OpenACS docs are written by the named authors, and may be edited by OpenACS documentation staff. -

    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' Index: openacs-4/packages/acs-core-docs/www/configuring-configuring-permissions.html =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/configuring-configuring-permissions.html,v diff -u -r1.8 -r1.8.2.1 --- openacs-4/packages/acs-core-docs/www/configuring-configuring-permissions.html 11 Dec 2010 23:36:32 -0000 1.8 +++ openacs-4/packages/acs-core-docs/www/configuring-configuring-permissions.html 12 Jun 2011 20:52:56 -0000 1.8.2.1 @@ -1,8 +1,8 @@ - -Setting Permissions on an OpenACS package

    Setting Permissions on an OpenACS package

    by Jade Rubick

    + +Setting Permissions on an OpenACS package

    Setting Permissions on an OpenACS package

    by Jade Rubick

    OpenACS docs are written by the named authors, and may be edited by OpenACS documentation staff. -

    Setting Permission on an OpenACS package

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

    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 click on Applications. If you click on the 'Permissions' Index: openacs-4/packages/acs-core-docs/www/configuring-install-packages.html =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/configuring-install-packages.html,v diff -u -r1.8 -r1.8.2.1 --- openacs-4/packages/acs-core-docs/www/configuring-install-packages.html 11 Dec 2010 23:36:32 -0000 1.8 +++ openacs-4/packages/acs-core-docs/www/configuring-install-packages.html 12 Jun 2011 20:52:56 -0000 1.8.2.1 @@ -1,8 +1,8 @@ - -Installing OpenACS packages

    Installing OpenACS packages

    by Jade Rubick

    + +Installing OpenACS packages

    Installing OpenACS packages

    by Jade Rubick

    OpenACS docs are written by the named authors, and may be edited by OpenACS documentation staff. -

    Installing OpenACS packages

    An OpenACS package extends your website and lets it do +

    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 @@ -22,7 +22,7 @@ you want depends on. If you're installing from Local Files, and you are missing any packages, you may have to add the packages your desired package depends on: - Upgrading the OpenACS files + Section , “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 Index: openacs-4/packages/acs-core-docs/www/configuring-mounting-packages.html =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/configuring-mounting-packages.html,v diff -u -r1.8 -r1.8.2.1 --- openacs-4/packages/acs-core-docs/www/configuring-mounting-packages.html 11 Dec 2010 23:36:32 -0000 1.8 +++ openacs-4/packages/acs-core-docs/www/configuring-mounting-packages.html 12 Jun 2011 20:52:56 -0000 1.8.2.1 @@ -1,8 +1,8 @@ - -Mounting OpenACS packages

    Mounting OpenACS packages

    by Jade Rubick

    + +Mounting OpenACS packages

    Mounting OpenACS packages

    by Jade Rubick

    OpenACS docs are written by the named authors, and may be edited by OpenACS documentation staff. -

    Mounting OpenACS packages

    After you've installed your packages, you have to 'mount' +

    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 Site-Wide Administration page (at /acs-admin). Click on the subsite you'd Index: openacs-4/packages/acs-core-docs/www/configuring-new-site.html =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/configuring-new-site.html,v diff -u -r1.13 -r1.13.2.1 --- openacs-4/packages/acs-core-docs/www/configuring-new-site.html 11 Dec 2010 23:36:32 -0000 1.13 +++ openacs-4/packages/acs-core-docs/www/configuring-new-site.html 12 Jun 2011 20:52:56 -0000 1.13.2.1 @@ -1,5 +1,5 @@ - -Chapter 4. Configuring a new OpenACS Site

    Chapter 4. Configuring a new OpenACS Site

    by Joel Aufrecht

    + +Chapter 4. Configuring a new OpenACS Site

    Chapter 4. Configuring a new OpenACS Site

    by Joel Aufrecht

    OpenACS docs are written by the named authors, and may be edited by OpenACS documentation staff. -

    In this chapter, Configuring refers to making changes to a new OpenACS site through the web interface. In crude terms, these changes happen in the database, and are upgrade-safe. Customizing refers to changes that touch the file system, and require some planning if easy upgradability is to be maintained.

    View comments on this page at openacs.org
    +

    In this chapter, Configuring refers to making changes to a new OpenACS site through the web interface. In crude terms, these changes happen in the database, and are upgrade-safe. Customizing refers to changes that touch the file system, and require some planning if easy upgradability is to be maintained.

    View comments on this page at openacs.org
    Index: openacs-4/packages/acs-core-docs/www/cvs-guidelines.html =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/cvs-guidelines.html,v diff -u -r1.8.2.1 -r1.8.2.2 --- openacs-4/packages/acs-core-docs/www/cvs-guidelines.html 12 Jun 2011 20:03:48 -0000 1.8.2.1 +++ openacs-4/packages/acs-core-docs/www/cvs-guidelines.html 12 Jun 2011 20:52:56 -0000 1.8.2.2 @@ -1,14 +1,14 @@ CVS Guidelines -

    +

    CVS Guidelines

    ($Id$)

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

    OpenACS docs are written by the named authors, and may be edited by OpenACS documentation staff. -

    Using CVS with OpenACS

    Getting Started

    +

    Using CVS with OpenACS

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

    Checkout for Package Development

    If you are actively developing a non-core package, you + User yournamehere

    into your ~/.ssh/config file, then you can use -d :ext:cvs-server:/cvsroot instead of -d :ext:cvs.openacs.org:/cvsroot. You can then change the definition of cvs-server by changing one file instead of editing hundreds of CVSROOT/Repository files.

    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-6. This ensures that you are working on top + is oacs-5-7. This ensures that you are working on top of a stable OpenACS core, but still allows you to commit feature - changes to non-core packages. To check out all packages,

    cvs -d :ext:cvs.openacs.org:/cvsroot co -r oacs-5-6 openacs-4

    If you work in the directories created with this command, all of your - cvs updates and commits will be confined to the oacs-5-6 + changes to non-core packages. To check out all packages,

    cvs -d :ext:cvs.openacs.org:/cvsroot co -r oacs-5-7 openacs-4

    If you work in the directories created with this command, all of your + cvs updates and commits will be confined to the oacs-5-7 branch. Your work will be merged back to HEAD for you with each release.

    Because the entire openacs-4 directory is large, you may want to use only acs-core plus some specific modules. To do - this, check out core first:

    cvs -d:ext:cvs.openacs.org:/cvsroot -r oacs-5-6 checkout acs-core

    Then add modules as needed:

    cd /var/lib/aolserver/service0/packages
    +      this, check out core first:

    cvs -d:ext:cvs.openacs.org:/cvsroot -r oacs-5-7 checkout acs-core

    Then add modules as needed:

    cd /var/lib/aolserver/service0/packages
     cvs up -d packagename

    ... where packagename is the name of the package you want. Visit the Package Inventory and Package maintainers and status for a list of available packages and their current state. -

    Checkout for Core Development

    If you are actively developing packages in the OpenACS +

    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 non-core features unless your work depends on some of the HEAD core work. To check out HEAD, omit the - -r tag.

    To check out HEAD for development, which requires an OpenACS 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

    + -r tag.

    To check out HEAD for development, which requires an OpenACS 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 packages. These are collectively packages together to form a distrubution of .LRN. F .LRN 2.0.0 sits on top of OpenACS 5.0.0. .LRN also uses an OpenACS install.xml file during installation; this file is distributed within the dotlrn package and must be moved. To get a development checkout of .LRN in the subdirectory dotlrn: -

    cvs -d :pserver:anonymous@cvs.openacs.org:/cvsroot checkout -r oacs-5-6 acs-core
    +      

    cvs -d :pserver:anonymous@cvs.openacs.org:/cvsroot checkout -r oacs-5-7 acs-core
     mv openacs-4 dotlrn
     cd dotlrn/packages
    -cvs -d :pserver:anonymous@cvs.openacs.org:/cvsroot checkout -r oacs-5-6 dotlrn-all
    +cvs -d :pserver:anonymous@cvs.openacs.org:/cvsroot checkout -r oacs-5-7 dotlrn-all
     mv dotlrn/install.xml ..

    Working with CVS

    Once you have a checkout you can use some commands to track what has changed since you checked out your copy. cvs -n update does not change any files, but reports which changes have been updated or locally modified, or are not present in CVS. -

    To update your files, use cvs update. This will merge changes from the repository with your local files. It has no effect on the cvs.openacs.org repository.

    OpenACS CVS Concepts

    Modules

    +

    To update your files, use cvs update. This will merge changes from the repository with your local files. It has no effect on the cvs.openacs.org repository.

    OpenACS CVS Concepts

    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.

    acs-core contains only critical common packages. It does not have any user applications, such as forums, @@ -117,7 +117,7 @@ project-manager-all contains the packages required, in combination with acs-core, to run the project-manager package.

    Each OpenACS package (i.e., directory in openacs-4/packages/) is also aliased as a module of the same name. -

    +

    Tags and Branches

    Tags and Branches look similar in commands, but behave differently. A tag is a fixed point on a branch. Check out @@ -317,7 +317,7 @@ flag which defaults to no-effect wouldn't require a TIP. Added a new mandatory flag to an existing function would require a TIP. -

    +

    Informal Guidelines

    Informal guidelines which may be obsolete in places and should be reviewed: Index: openacs-4/packages/acs-core-docs/www/cvs-tips.html =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/cvs-tips.html,v diff -u -r1.32 -r1.32.2.1 --- openacs-4/packages/acs-core-docs/www/cvs-tips.html 11 Dec 2010 23:36:32 -0000 1.32 +++ openacs-4/packages/acs-core-docs/www/cvs-tips.html 12 Jun 2011 20:52:56 -0000 1.32.2.1 @@ -1,31 +1,31 @@ - -Appendix D. Using CVS with an OpenACS Site

    Appendix D. Using CVS with an OpenACS Site

    By Joel Aufrecht

    + +Appendix C. Using CVS with an OpenACS Site

    Appendix C. Using CVS with an OpenACS Site

    By Joel Aufrecht

    OpenACS docs are written by the named authors, and may be edited by OpenACS documentation staff. -

    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
      -[root root]# chown $OPENACS_SERVICE_NAME.$OPENACS_SERVICE_NAME /cvsroot/$OPENACS_SERVICE_NAME
      +        

    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
      +[root root]# chown $OPENACS_SERVICE_NAME.$OPENACS_SERVICE_NAME /cvsroot/$OPENACS_SERVICE_NAME
       [root root]#
       mkdir /cvsroot/$OPENACS_SERVICE_NAME
      -chown $OPENACS_SERVICE_NAME.$OPENACS_SERVICE_NAME /cvsroot/$OPENACS_SERVICE_NAME
    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
      -[$OPENACS_SERVICE_NAME $OPENACS_SERVICE_NAME]$ emacs .bashrc

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

      export CVSROOT=/cvsroot
      [$OPENACS_SERVICE_NAME $OPENACS_SERVICE_NAME]$ exit
      +chown $OPENACS_SERVICE_NAME.$OPENACS_SERVICE_NAME /cvsroot/$OPENACS_SERVICE_NAME
    3. 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
      +[$OPENACS_SERVICE_NAME $OPENACS_SERVICE_NAME]$ emacs .bashrc

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

      export CVSROOT=/cvsroot
      [$OPENACS_SERVICE_NAME $OPENACS_SERVICE_NAME]$ exit
       logout
       
      -[root root]#
    4. Import all files into cvs. In order to work on +[root root]#

    5. 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, move aside, and then check out all of the files. In the cvs import command, - $OPENACS_SERVICE_NAME + $OPENACS_SERVICE_NAME refers to the cvs repository to use; it uses the CVSROOT plus this string, i.e. - /cvsroot/$OPENACS_SERVICE_NAME. - "OpenACS" is the vendor tag, and "oacs-5-6-0-final" is the + /cvsroot/$OPENACS_SERVICE_NAME. + "OpenACS" is the vendor tag, and "oacs-5-7-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
      -[$OPENACS_SERVICE_NAME $OPENACS_SERVICE_NAME]$ cd /var/lib/aolserver/$OPENACS_SERVICE_NAME
      -[$OPENACS_SERVICE_NAME $OPENACS_SERVICE_NAME]$ cvs import -m "initial install" $OPENACS_SERVICE_NAME OpenACS oacs-5-6-0-final
      +            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
      +[$OPENACS_SERVICE_NAME $OPENACS_SERVICE_NAME]$ cvs import -m "initial install" $OPENACS_SERVICE_NAME OpenACS oacs-5-7-0-final
       N $OPENACS_SERVICE_NAME/license.txt
       N $OPENACS_SERVICE_NAME/readme.txt
       (many lines omitted)
      @@ -37,19 +37,19 @@
       [root root]#
       su - $OPENACS_SERVICE_NAME
       cd /var/lib/aolserver/$OPENACS_SERVICE_NAME
      -cvs import -m "initial install" $OPENACS_SERVICE_NAME OpenACS oacs-5-6-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
      -[root root]# mkdir /var/lib/aolserver/$OPENACS_SERVICE_NAME
      -[root root]# chown $OPENACS_SERVICE_NAME.$OPENACS_SERVICE_NAME /var/lib/aolserver/$OPENACS_SERVICE_NAME
      -[root root]# su - $OPENACS_SERVICE_NAME
      -[$OPENACS_SERVICE_NAME $OPENACS_SERVICE_NAME]$ cd /var/lib/aolserver
      -[$OPENACS_SERVICE_NAME aolserver]$ cvs checkout $OPENACS_SERVICE_NAME
      +cvs import -m "initial install" $OPENACS_SERVICE_NAME OpenACS oacs-5-7-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
      +[root root]# mkdir /var/lib/aolserver/$OPENACS_SERVICE_NAME
      +[root root]# chown $OPENACS_SERVICE_NAME.$OPENACS_SERVICE_NAME /var/lib/aolserver/$OPENACS_SERVICE_NAME
      +[root root]# su - $OPENACS_SERVICE_NAME
      +[$OPENACS_SERVICE_NAME $OPENACS_SERVICE_NAME]$ cd /var/lib/aolserver
      +[$OPENACS_SERVICE_NAME aolserver]$ cvs checkout $OPENACS_SERVICE_NAME
       cvs checkout: Updating $OPENACS_SERVICE_NAME
       U $OPENACS_SERVICE_NAME/license.txt
       (many lines omitted)
       U $OPENACS_SERVICE_NAME/www/SYSTEM/dbtest.tcl
       U $OPENACS_SERVICE_NAME/www/SYSTEM/flush-memoized-statement.tcl
      -[$OPENACS_SERVICE_NAME aolserver]$ exit
      +[$OPENACS_SERVICE_NAME aolserver]$ exit
       logout
       
       [root root]#
      @@ -60,4 +60,4 @@
       su - $OPENACS_SERVICE_NAME
       cd /var/lib/aolserver
       cvs checkout $OPENACS_SERVICE_NAME
      -exit
    6. If the service starts correctly, come back and remove the temporary copy of the uploaded files.

    View comments on this page at openacs.org
    +exit
  • If the service starts correctly, come back and remove the temporary copy of the uploaded files.

  • View comments on this page at openacs.org
    Index: openacs-4/packages/acs-core-docs/www/database-management.html =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/database-management.html,v diff -u -r1.29.2.1 -r1.29.2.2 --- openacs-4/packages/acs-core-docs/www/database-management.html 12 Jun 2011 20:03:48 -0000 1.29.2.1 +++ openacs-4/packages/acs-core-docs/www/database-management.html 12 Jun 2011 20:52:56 -0000 1.29.2.2 @@ -1,5 +1,5 @@ -Chapter 6. Database Management

    Chapter 6. Database Management

    By Joel Aufrecht

    +Chapter 6. Database Management

    Chapter 6. Database Management

    By Joel Aufrecht

    OpenACS docs are written by the named authors, and may be edited by OpenACS documentation staff. -
    View comments on this page at openacs.org
    +
    View comments on this page at openacs.org
    Index: openacs-4/packages/acs-core-docs/www/db-api-detailed.html =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/db-api-detailed.html,v diff -u -r1.46.2.1 -r1.46.2.2 --- openacs-4/packages/acs-core-docs/www/db-api-detailed.html 12 Jun 2011 20:03:48 -0000 1.46.2.1 +++ openacs-4/packages/acs-core-docs/www/db-api-detailed.html 12 Jun 2011 20:52:56 -0000 1.46.2.2 @@ -1,5 +1,5 @@ -Database Access API

    Database Access API

    By Jon Salz. Revised and expanded by Roberto Mello (rmello at fslc dot usu dot edu), July 2002.

    +Database Access API

    Database Access API

    By Jon Salz. Revised and expanded by Roberto Mello (rmello at fslc dot usu dot edu), July 2002.

    OpenACS docs are written by the named authors, and may be edited by OpenACS documentation staff.
    • Tcl procedures: /packages/acs-kernel/10-database-procs.tcl

    • Tcl initialization: /packages/acs-kernel/database-init.tcl

    The Big Picture

    @@ -384,7 +384,7 @@

     db_null
     

    Returns a value which can be used in a bind variable to represent the SQL -value null. See Nulls and Bind Variables +value null. See Nulls and Bind Variables above.

    db_foreach
    @@ -728,4 +728,4 @@
     			The nsv containing the list is initialized by the bootstrap script and should
     			never be referenced directly by user code.
     			Returns the current rdbms type and version.
    -		

    ($Id$)
    View comments on this page at openacs.org
    +

    ($Id$)
    View comments on this page at openacs.org
    Index: openacs-4/packages/acs-core-docs/www/db-api.html =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/db-api.html,v diff -u -r1.48 -r1.48.2.1 --- openacs-4/packages/acs-core-docs/www/db-api.html 11 Dec 2010 23:36:32 -0000 1.48 +++ openacs-4/packages/acs-core-docs/www/db-api.html 12 Jun 2011 20:52:56 -0000 1.48.2.1 @@ -1,22 +1,22 @@ - -The OpenACS Database Access API

    The OpenACS Database Access API

    + +The OpenACS Database Access API

    The OpenACS Database Access API

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

    Overview

    +

    Overview

    One of OpenACS's great strengths is that code written for it is very close to the database. It is very easy to interact with the database from anywhere within OpenACS, and we have a coherent API for database access which makes this even easier.

    More detailed information about the DB api is available at - Database Access API. -

    DB API Examples

    + Database Access API. +

    DB API Examples

    The OpenACS database API is meant to save developers from making common mistakes and to provide a more structured syntax for specifying database operations, including transactions. Here's an example of the API.

     set count 0
    -set tcl_var "foo"
    +set tcl_var "foo"
     set sql {
           	SELECT foo, bar, baz
            FROM some_table, some_other_table
    @@ -35,30 +35,30 @@
     }

    There are several things to note here: -

    1. +

      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 +

      3. + The db_transaction command makes the scope of a transaction - clear; db_transaction takes the + clear; db_transaction takes the code block argument and automatically runs it in the context of a transaction. If you use something like db_foreach though, you need to make sure that there are no calls in the code block which would take a second db handle since the transaction is only valid for one handle (thats why we build up a list of returned values and call a second proc outside the db_foreach loop). -

      4. - The command db_foreach writes +

      5. + The command db_foreach writes our old while loop for us. -

      6. +

      7. Every SQL query has a name, which is used in conjunction with .XQL files to support multiple databases. -

      8. +

      9. Finally and most importantly, there API implements bind variables, which we will cover next.

      -

    Bind Variables

    +

    Bind Variables

    Bind variables are placeholders for literal values in an SQL query being sent to the server. In the old way, data was generally passed to directly to the DB backend, via Tcl string @@ -69,14 +69,14 @@ where some_table.id=some_other_table.id and some_table.condition_p = '$foo'

    There are a few problems with this: -

    1. +

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

      3. Second, if the literal value contains characters like single quotes, we have to be careful to properly escape them, because not quoting them will lead to surprising errors. -

      4. +

      5. Third, no type checking occurs on the literal value. Finally, if the Tcl variable is passed in or between web forms or otherwise subject to external modification, @@ -129,8 +129,8 @@ query, and Tcl style string interpolation does not happen. So you cannot do something like:

        -set table "baz"
        -set condition "where foo = bar"
        +set table "baz"
        +set condition "where foo = bar"
         
         db_foreach my_query { select :table from some_table where :condition }
             

        @@ -142,24 +142,24 @@ Finally, the DB API has several different styles for passing bind variable values to queries. In general, use the style presented here because it is the most convenient. -

        Usage

        Every db_* command accepting a SQL command as an argument - supports bind variables. You can either

        • - Specify the -bind switch to provide a set with bind variable +

          Usage

          Every db_* command accepting a SQL command as an argument + supports bind variables. You can either

          • + Specify the -bind switch to provide a set with bind variable values, or -

          • - Specify the -bind switch to explicitly provide a list of +

          • + Specify the -bind switch to explicitly provide a list of bind variable names and values, or -

          • +

          • Not specify a bind variable list at all, in which case Tcl variables are used as bind variables.

          - The default behavior (i.e., if the -bind switch is omitted) is + The default behavior (i.e., if the -bind switch is omitted) is that these procedures expect to find local variables that correspond in name to the referenced bind variables, e.g.:

           
           set user_id 123456
          -set role "administrator"
          +set role "administrator"
           
           db_foreach user_group_memberships_by_role {
               select g.group_id, g.group_name
          @@ -169,18 +169,18 @@
               and map.role = :role
           } {
               # do something for each group of which user 123456 is in the role
          -    # of "administrator"
          +    # of "administrator"
           }
           
                 

          - 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 + 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, e.g.:

           
           set bind_vars [ns_set create]
           ns_set put $bind_vars user_id 123456
          -ns_set put $bind_vars role "administrator"
          +ns_set put $bind_vars role "administrator"
           
           db_foreach user_group_memberships_by_role {
               select g.group_id, g.group_name
          @@ -190,11 +190,11 @@
               and map.role = :role
           } -bind $bind_vars {
               # do something for each group in which user 123456 has the role
          -    # of "administrator"
          +    # of "administrator"
           }
           
                 

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

           	
          @@ -204,22 +204,22 @@
               where g.group_id = map.user_id
               and map.user_id = :user_id
               and map.role = :role
          -} -bind [list user_id 123456 role "administrator"] {
          +} -bind [list user_id 123456 role "administrator"] {
               # do something for each group in which user 123456 has the role
          -    # of "administrator"
          +    # of "administrator"
           }
           
          -      

          Nulls and Bind Variables

          +

          Nulls and Bind Variables

          When processing a DML statement, Oracle coerces empty strings into - null. (This coercion does not occur in the - WHERE clause of a query, i.e. - col = '' and - col is null are not equivalent.) + null. (This coercion does not occur in the + WHERE clause of a query, i.e. + col = '' and + col is null are not equivalent.)

          As a result, when using bind variables, the only way to make Oracle set a - column value to null is to set the corresponding bind variable + column value to null is to set the corresponding bind variable to the empty string, since a bind variable whose value is the string - "null" will be interpreted as the literal string - "null".

          These Oracle quirks complicate the process of writing clear and abstract + "null" will be interpreted as the literal string + "null".

          These Oracle quirks complicate the process of writing clear and abstract DML difficult. Here is an example that illustrates why:

           
           #
          @@ -231,43 +231,43 @@
           #   );
           #
           
          -set bar ""
          -set baz ""
          +set bar ""
          +set baz ""
           
          -db_dml foo_create "insert into foo(bar, baz) values(:bar, :baz)"
          +db_dml foo_create "insert into foo(bar, baz) values(:bar, :baz)"
           #
          -# the values of the "bar" and "baz" columns in the new row are both
          +# the values of the "bar" and "baz" columns in the new row are both
           # null, because Oracle has coerced the empty string (even for the
          -# numeric column "bar") into null in both cases
          +# numeric column "bar") into null in both cases
           
                 

          Since databases other than Oracle do not coerce empty strings into - null, this code has different semantics depending on the + 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]
          +	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]
           set baz [db_null]
           
          -db_dml foo_create "insert into foo(bar, baz) values(:bar, :baz)"
          +db_dml foo_create "insert into foo(bar, baz) values(:bar, :baz)"
           #
          -# sets the values for both the "bar" and "baz" columns to null

        Sequence Pooling

        +# sets the values for both the "bar" and "baz" columns to null

        Sequence Pooling

        The database library can transparently maintain pools of sequence values, so - that each request for a new sequence value (using db_nextval) + that each request for a new sequence value (using db_nextval) does not incur a roundtrip to the server. For instance, this functionality is very useful in the security/sessions library, which very frequently allocates - values from the sec_id_seq sequence. To utilize this + values from the sec_id_seq sequence. To utilize this functionality for a particular sequence, register the sequence to be pooled, - either using the db_register_pooled_sequence procedure at server + either using the db_register_pooled_sequence procedure at server startup time, or by including a configuration parameter of the form

         
         PoolSequence.sequence_name_seq=count
         
             

        - in any configuration section in the yourservername.ini + in any configuration section in the yourservername.ini file, e.g.,

         
        @@ -279,49 +279,49 @@
               startup. It will periodically scan pools and allocate new values for
               sequences which are less than half-full. (This normally occurs every 60
               seconds, and is configurable via the
        -      PooledSequenceUpdateInterval parameter in the
        -      [ns/server/
        -      yourservername
        -      /acs/database] configuration
        +      PooledSequenceUpdateInterval parameter in the
        +      [ns/server/
        +      yourservername
        +      /acs/database] configuration
               section.) 
        -    

        Basic API

        +

        Basic API

        The Database API has several functions that wrap familiar parts of the AOLserver database API.

        - Note that you never have to use ns_db anymore (including - ns_db gethandle)! Just start doing stuff, and (if you want) call - db_release_unused_handles when you're done as a hint to + Note that you never have to use ns_db anymore (including + ns_db gethandle)! Just start doing stuff, and (if you want) call + db_release_unused_handles when you're done as a hint to release the database handle.

        - + db_abort_transaction - +
         db_abort_transaction
         	  

        Aborts all levels of a transaction. That is if this is called within several nested transactions, all of them are terminated. Use this insetead of - db_dml "abort" "abort transaction". + db_dml "abort" "abort transaction". -

        db_multirow
        -db_multirow [ -local ] [ -append ] [ -extend column_list ] \
        +	  

        db_multirow
        +db_multirow [ -local ] [ -append ] [ -extend column_list ] \
             var-name statement-name sql \
             [ -bind bind_set_id | -bind bind_value_list ] \
             code_block [ if_no_rows if_no_rows_block ]
         	

        - Performs the SQL query sql, saving results in variables + Performs the SQL query sql, saving results in variables of the form - var_name:1, var_name:2, etc, - setting var_name:rowcount to the total number - of rows, and setting var_name:columns to a + var_name:1, var_name:2, etc, + setting var_name:rowcount to the total number + of rows, and setting var_name:columns to a list of column names.

        Each row also has a column, rownum, automatically added and set to the row number, starting with 1. Note that this will override any column in the SQL statement named 'rownum', also if you're using the Oracle rownum pseudo-column.

        - If the -local is passed, the variables defined + If the -local is passed, the variables defined by db_multirow will be set locally (useful if you're compiling dynamic templates in a function or similar situations).

        @@ -334,19 +334,19 @@ multirow.

        You may also add additional, computed columns to the multirow, using the - -extend { col_1 col_2 ... } switch. This is + -extend { col_1 col_2 ... } switch. This is useful for things like constructing a URL for the object retrieved by the query.

        If you're constructing your multirow through multiple queries with the same set of columns, but with different rows, you can use the - -append switch. This causes the rows returned by this query + -append switch. This causes the rows returned by this query to be appended to the rows already in the multirow, instead of starting a clean multirow, as is the normal behavior. The columns must match the columns in the original multirow, or an error will be thrown.

        - Your code block may call continue in order to skip a row - and not include it in the multirow. Or you can call break + Your code block may call continue in order to skip a row + and not include it in the multirow. Or you can call break to skip this row and quit looping.

        Notice the nonstandard numbering (everything @@ -380,240 +380,240 @@

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

        - + db_null - +
        -db_null
        +db_null
         	  

        Returns a value which can be used in a bind variable to represent the SQL value - null. - See Nulls and + null. + See Nulls and Bind Variables above.

        - + db_foreach - +
         db_foreach statement-name sql [ -bind bind_set_id | -bind bind_value_list ] \
             [ -column_array array_name | -column_set set_name ] \
             code_block [ if_no_rows if_no_rows_block ]
         	  

        Performs the SQL query - sql + sql , executing - code_block - once for each row + code_block + once for each row with variables set to column values (or a set or array populated if - -column_array or - column_set is + -column_array or + column_set is specified). If the query returns no rows, executes - if_no_rows_block - (if provided). + if_no_rows_block + (if provided).

        Example:

         
        -db_foreach select_foo "select foo, bar from greeble" {
        -    doc_body_append "<li>foo=$foo; bar=$bar\n"
        +db_foreach select_foo "select foo, bar from greeble" {
        +    doc_body_append "<li>foo=$foo; bar=$bar\n"
         } if_no_rows {
        -    doc_body_append "<li>There are no greebles in the database.\n"
        +    doc_body_append "<li>There are no greebles in the database.\n"
         }
         
         	  

        - The code block may contain break statements (which terminate the - loop and flush the database handle) and continue statements + 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-name sql [ -bind bind_set_id | -bind bind_value_list ] \
             [ -column_array array_name | -column_set set_name ]
         	  

        Performs the SQL query - sql, + 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"
        +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-name sql [ -bind bind_set_id | -bind bind_value_list ] \
             [ -column_array array_name | -column_set set_name ]
         	  

        Performs the SQL query - sql. + 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. -

        db_nextval
        +	  

        db_nextval
         db_nextval sequence-name
         	  

        Returns the next value for the sequence sequence-name (using a - SQL statement like SELECT - sequence-name.nextval FROM - DUAL). If sequence pooling is enabled for the sequence, transparently + SQL statement like SELECT + sequence-name.nextval FROM + DUAL). If sequence pooling is enabled for the sequence, transparently uses a value from the pool if available to save a round-trip to the database - (see Sequence Pooling). + (see Sequence Pooling).

        - + db_register_pooled_sequence - +
         db_register_pooled_sequence sequence-name pool-size
         	  

        Registers the sequence sequence-name to be pooled, with a pool size of pool-size sequence values - (see Sequence Pooling). + (see Sequence Pooling). -

        db_string
        +	  

        db_string
         db_string statement-name sql [ -default default ] [ -bind bind_set_id | -bind bind_value_list ]
         	  

        Returns the first column of the result of SQL query - sql. - If sql doesn't return a + sql. + If sql doesn't return a row, returns - default + default (or throws an error if - default is unspecified). Analogous to - database_to_tcl_string and - database_to_tcl_string_or_null. + default is unspecified). Analogous to + database_to_tcl_string and + database_to_tcl_string_or_null. -

        db_list
        +	  

        db_list
         db_list statement-name sql [ -bind bind_set_id | -bind bind_value_list ]
         	  

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

        db_list_of_lists
        +	  

        db_list_of_lists
         db_list_of_lists statement-name sql [ -bind bind_set_id | -bind bind_value_list ]
         	  

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

        db_dml
        +	  

        db_dml
         db_dml statement-name sql \
             [ -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 blobs or clobs is provided, then the SQL +

        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, + :1, :2, ... :n. + blobs or clobs, if specified, should be a list of individual BLOBs or CLOBs to insert; - blob_files or clob_files, if + blob_files or clob_files, if specified, should be a list of paths to files containing the data to - insert. Only one of -blobs, -clobs, - -blob_files, and -clob_files may be provided.

        Example:

        +	    insert. Only one of -blobs, -clobs,
        +	    -blob_files, and -clob_files may be provided.

        Example:

         
        -db_dml insert_photos "
        +db_dml insert_photos "
                 insert photos(photo_id, image, thumbnail_image)
                 values(photo_id_seq.nextval, empty_blob(), empty_blob())
                 returning image, thumbnail_image into :1, :2
        -    "  -blob_files [list "/var/tmp/the_photo" "/var/tmp/the_thumbnail"] 
        +    "  -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 files /var/tmp/the_photo and - /var/tmp/the_thumbnail in the image and - thumbnail columns, respectively. + 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.

        - db_write_clob, - db_write_blob, - db_blob_get_file + db_write_clob, + db_write_blob, + db_blob_get_file
         db_write_clob statement-name sql [ -bind bind_set_id | -bind bind_value_list ]
         
         db_write_blob statement-name sql [ -bind bind_set_id | -bind bind_value_list ]
         
         db_blob_get_file statement-name sql [ -bind bind_set_id | -bind bind_value_list ]
        -	  

        Analagous to ns_ora write_clob/write_blob/blob_get_file. +

        Analagous to ns_ora write_clob/write_blob/blob_get_file. -

        db_release_unused_handles
        +	  

        db_release_unused_handles
         	    db_release_unused_handles
        -	  

        Releases any allocated, unused database handles.

        db_transaction
        +	  

        Releases any allocated, unused database handles.

        db_transaction
         db_transaction code_block [ on_error { code_block } ]
        -	  

        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 abort all levels of - transactions. It is possible to specify an optional on_error +

        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 abort all levels of + transactions. It is possible to specify an optional on_error code block that will be executed if some code in code_block throws - an exception. The variable errmsg will be bound in that scope. - If there is no on_error code, any errors will be propagated.

        Example:

        +	    an exception. The variable errmsg will be bound in that scope.
        +	    If there is no on_error code, any errors will be propagated. 

        Example:

         
         proc replace_the_foo { col } {
             db_transaction {
        -        db_dml "delete from foo"
        -        db_dml "insert into foo(col) values($col)"
        +        db_dml "delete from foo"
        +        db_dml "insert into foo(col) values($col)"
             }
         }
         
         proc print_the_foo {} {
        -    doc_body_append "foo is [db_string "select col from foo"]<br>\n"
        +    doc_body_append "foo is [db_string "select col from foo"]<br>\n"
         }
         
         replace_the_foo 8
        -print_the_foo ; # Writes out "foo is 8"
        +print_the_foo ; # Writes out "foo is 8"
         
         db_transaction {
             replace_the_foo 14
        -    print_the_foo ; # Writes out "foo is 14"
        -    db_dml "insert into some_other_table(col) values(999)"
        +    print_the_foo ; # Writes out "foo is 14"
        +    db_dml "insert into some_other_table(col) values(999)"
             ...
             db_abort_transaction
         } on_error {
        -    doc_body_append "Error in transaction: $errmsg"
        +    doc_body_append "Error in transaction: $errmsg"
         }
             
         
        -print_the_foo ; # Writes out "foo is 8"
        +print_the_foo ; # Writes out "foo is 8"
         
        -	  
        db_resultrows
        +	  
        db_resultrows
         db_resultrows
         	  

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

        db_with_handle
        +	  

        db_with_handle
         db_with_handle var code_block
        -	  

        Places a database handle into the variable var and - executes code_block. This is useful when you don't - want to have to use the new API (db_foreach, - db_1row, etc.), but need to use database handles explicitly.

        Example:

        +	  

        Places a database handle into the variable var and + executes code_block. This is useful when you don't + want to have to use the new API (db_foreach, + db_1row, etc.), but need to use database handles explicitly.

        Example:

         
         proc lookup_the_foo { foo } {
             db_with_handle db {
        -        return [db_string unused "select ..."]
        +        return [db_string unused "select ..."]
             }
         }
         
         db_with_handle db {
             # Now there's a database handle in $db.
        -    set selection [ns_db select $db "select foo from bar"]
        +    set selection [ns_db select $db "select foo from bar"]
             while { [ns_db getrow $db $selection] } {
                 set_variables_after_query
         
        @@ -623,51 +623,51 @@
         
         	  
        - + db_nullify_empty_string - +
         db_nullify_empty_string string
         	  

        For true SQL purists, we provide the convenience function - db_nullify_empty_string, which returns - [db_null] if its string argument is the empty string + db_nullify_empty_string, which returns + [db_null] if its string argument is the empty string and can be used to encapsulate another Oracle quirk:

         
        -set baz ""
        +set baz ""
         
         # Clean out the foo table
         #
        -db_dml unused "delete from foo"
        +db_dml unused "delete from foo"
         
        -db_dml unused "insert into foo(baz) values('$baz')"
        +db_dml unused "insert into foo(baz) values('$baz')"
         
        -set n_rows [db_string unused "select count(*) from foo where baz is null"]
        +set n_rows [db_string unused "select count(*) from foo where baz is null"]
         #
        -# $n_rows is 1; in effect, the "baz is null" criterion is matching
        +# $n_rows is 1; in effect, the "baz is null" criterion is matching
         # the empty string we just inserted (because of Oracle's coercion
         # quirk)
         
         	  

        - To balance out this asymmetry, you can explicitly set baz to - null by writing: + 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]}
        +db_dml foo_insert "insert into foo(baz) values(:1)" {[db_nullify_empty_string $baz]}
         
         	  

        ($Id$)

        -

        Caching Database API Results

        The database API allows for direct caching of query results. Repeated calls will +

        Caching Database API Results

        The database API allows for direct caching of query results. Repeated calls will return the cached value until it is either explicitly flushed using db_flush_cache, times out (configured the ns_cache is called to create the cache), or another cached query fills the cache, causing older entries to be flushed. -

        Values returned by a query are cached if you pass the "-cache_key" switch +

        Values returned by a query are cached if you pass the "-cache_key" switch to the database procedure. The switch value will be used as the key in the ns_cache eval call used to execute the query and processing code. The db_flush proc should be called to flush the cache when appropriate. The - "-cache_pool" parameter can be used to specify the cache pool to be used, + "-cache_pool" parameter can be used to specify the cache pool to be used, and defaults to db_cache_pool. The size of the default cache is governed - by the kernel parameter "DBCacheSize" in the "caching" section. + by the kernel parameter "DBCacheSize" in the "caching" section.

        Currently db_string, db_list, db_list_of_lists, db_1row, db_0or1row, and db_multirow support caching. @@ -677,7 +677,7 @@ more object_ids and a name that identifies the operation being done.

        Here is an example from the layout-manager package:

         
        -# Query to return the elements of a page as a list. The prefix "page_" is used to denote
        +# Query to return the elements of a page as a list. The prefix "page_" is used to denote
         # that this is a page-related query, page_id is used to uniquely identify the query
         # by object, and the suffix uniquely defines the operation being performed on the
         # page object.
        Index: openacs-4/packages/acs-core-docs/www/dev-guide.html
        ===================================================================
        RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/dev-guide.html,v
        diff -u -r1.34.2.1 -r1.34.2.2
        --- openacs-4/packages/acs-core-docs/www/dev-guide.html	12 Jun 2011 20:03:48 -0000	1.34.2.1
        +++ openacs-4/packages/acs-core-docs/www/dev-guide.html	12 Jun 2011 20:52:56 -0000	1.34.2.2
        @@ -1,2 +1,2 @@
         
        -Chapter 8. Development Reference
        View comments on this page at openacs.org
        +Chapter 9. Development Reference
        View comments on this page at openacs.org
        Index: openacs-4/packages/acs-core-docs/www/doc-standards.html =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/doc-standards.html,v diff -u -r1.16.2.1 -r1.16.2.2 --- openacs-4/packages/acs-core-docs/www/doc-standards.html 12 Jun 2011 20:03:48 -0000 1.16.2.1 +++ openacs-4/packages/acs-core-docs/www/doc-standards.html 12 Jun 2011 20:52:56 -0000 1.16.2.2 @@ -1,2 +1,2 @@ -Chapter 10. Documentation Standards
        View comments on this page at openacs.org
        +Chapter 11. Documentation Standards
        View comments on this page at openacs.org
        Index: openacs-4/packages/acs-core-docs/www/docbook-primer.html =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/docbook-primer.html,v diff -u -r1.50.2.1 -r1.50.2.2 --- openacs-4/packages/acs-core-docs/www/docbook-primer.html 12 Jun 2011 20:03:48 -0000 1.50.2.1 +++ openacs-4/packages/acs-core-docs/www/docbook-primer.html 12 Jun 2011 20:52:56 -0000 1.50.2.2 @@ -1,5 +1,5 @@ -OpenACS Documentation Guide

        OpenACS Documentation Guide

        +OpenACS Documentation Guide

        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 @@ -578,7 +578,7 @@ DTD. The remaining discussion is about publishing using Docbook.

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

        • @@ -641,7 +641,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: - +

          • Always close your tags with corresponding end-tags and to not use other tag minimization @@ -690,7 +690,7 @@ The documentation for each package will make up a little "book" that is structured like this - examples are emphasized: - +

                 book                        : Docs for one package - templating
            @@ -714,20 +714,20 @@
                   sources of these DocBook documents
                   to get an idea of how they are tied together.
                 

          Headlines, Sections

          - + 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 Section , “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 that will appear as the link when referring to this sect1.

          @@ -742,7 +742,7 @@ </sect1>

        - + Inside this container your document will be split up into <sect2>'s, each with the same requirements - id and xreflabel @@ -751,7 +751,7 @@ When it comes to naming your sect2's and below, prefix them with some abbreviation of the id in the sect1 such as requirements-overview.

        Code

        - + 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> @@ -769,12 +769,12 @@ tag around text that has been wrapped by combinations of <computeroutput> and <userinput>

        Links

        - + 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 the Developer's Guide:

        Put this in your XML:

        +      

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

        And the output is:

        @@ -798,7 +798,7 @@
                 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 documentation, it works almost the same way as HTML - the tag is just a little different @@ -819,7 +819,7 @@ for you.

        - + To insert a graphic we use the elements <mediaobject>, <imageobject>, @@ -845,7 +845,7 @@ Put your graphics in a separate directory ("images") and link to them only with relative paths.

        Lists

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

        1. How to make an <ul>

        Making an unordered list is pretty much like doing the same thing in HTML - if you close your <li>, that is. The only differences are that each list item has to be wrapped in something more, such as @@ -890,7 +890,7 @@ </variablelist>

        Tables

        - + DocBook supports several types of tables, but in most cases, the <informaltable> is enough: @@ -927,7 +927,7 @@ <table> for an example.

        Emphasis

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

        @@ -1003,4 +1003,4 @@ script with directions (now via archive.org) that gets you most of the way. -

    View comments on this page at openacs.org
    +

    View comments on this page at openacs.org
    Index: openacs-4/packages/acs-core-docs/www/eng-standards-constraint-naming.html =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/eng-standards-constraint-naming.html,v diff -u -r1.46.2.1 -r1.46.2.2 --- openacs-4/packages/acs-core-docs/www/eng-standards-constraint-naming.html 12 Jun 2011 20:03:48 -0000 1.46.2.1 +++ openacs-4/packages/acs-core-docs/www/eng-standards-constraint-naming.html 12 Jun 2011 20:52:56 -0000 1.46.2.2 @@ -1,5 +1,5 @@ -Constraint naming standard

    Constraint naming standard

    By Michael Bryzek

    +Constraint naming standard

    Constraint naming standard

    By Michael Bryzek

    OpenACS docs are written by the named authors, and may be edited by OpenACS documentation staff.

    The Big Picture

    Index: openacs-4/packages/acs-core-docs/www/eng-standards-filenaming.html =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/eng-standards-filenaming.html,v diff -u -r1.46.2.1 -r1.46.2.2 --- openacs-4/packages/acs-core-docs/www/eng-standards-filenaming.html 12 Jun 2011 20:03:48 -0000 1.46.2.1 +++ openacs-4/packages/acs-core-docs/www/eng-standards-filenaming.html 12 Jun 2011 20:52:56 -0000 1.46.2.2 @@ -1,5 +1,5 @@ -ACS File Naming and Formatting Standards

    ACS File Naming and Formatting Standards

    By Michael Yoon and Aurelius Prochazka

    +ACS File Naming and Formatting Standards

    ACS File Naming and Formatting Standards

    By Michael Yoon and Aurelius Prochazka

    OpenACS docs are written by the named authors, and may be edited by OpenACS documentation staff.

    @@ -228,4 +228,4 @@

    Tcl Library Files

    Further standards for Tcl library files are under discussion; we plan to include naming conventions for procs. -

    ($Id$)
    View comments on this page at openacs.org
    +

    ($Id$)
    View comments on this page at openacs.org
    Index: openacs-4/packages/acs-core-docs/www/eng-standards-versioning.html =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/eng-standards-versioning.html,v diff -u -r1.49.2.1 -r1.49.2.2 --- openacs-4/packages/acs-core-docs/www/eng-standards-versioning.html 12 Jun 2011 20:03:48 -0000 1.49.2.1 +++ openacs-4/packages/acs-core-docs/www/eng-standards-versioning.html 12 Jun 2011 20:52:56 -0000 1.49.2.2 @@ -1,7 +1,7 @@ -Release Version NumberingRelease Version Numbering

    Release Version Numbering

    ($Id$)

    By Ron Henderson, Revised by Joel Aufrecht

    + ">

    Release Version Numbering

    ($Id$)

    By Ron Henderson, Revised by Joel Aufrecht

    OpenACS docs are written by the named authors, and may be edited by OpenACS documentation staff.

    Index: openacs-4/packages/acs-core-docs/www/eng-standards.html =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/eng-standards.html,v diff -u -r1.30.2.1 -r1.30.2.2 --- openacs-4/packages/acs-core-docs/www/eng-standards.html 12 Jun 2011 20:03:48 -0000 1.30.2.1 +++ openacs-4/packages/acs-core-docs/www/eng-standards.html 12 Jun 2011 20:52:56 -0000 1.30.2.2 @@ -1,4 +1,4 @@ -Chapter 9. Engineering Standards

    View comments on this page at openacs.org
    Index: openacs-4/packages/acs-core-docs/www/ext-auth-requirements.html =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/ext-auth-requirements.html,v diff -u -r1.38.2.1 -r1.38.2.2 --- openacs-4/packages/acs-core-docs/www/ext-auth-requirements.html 12 Jun 2011 20:03:48 -0000 1.38.2.1 +++ openacs-4/packages/acs-core-docs/www/ext-auth-requirements.html 12 Jun 2011 20:52:57 -0000 1.38.2.2 @@ -1,5 +1,5 @@ -External Authentication Requirements

    External Authentication Requirements

    Vision

    People have plenty of usernames and passwords already, we +External Authentication Requirements

    External Authentication Requirements

    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 @@ -45,7 +45,7 @@ only one implementation of the authentication API, namly the one included in OpenACS Core.

  • Authentication Driver API: The service contract which authentication drivers implement.

  • Conceptual Pictures

    Authentication:

    -

    Account Management (NO PICTURE YET)

    Batch Synchronization (NO PICTURE YET)

    Requirements

    New API

    FeatureStatusDescription
    New API
    EXT-AUTH-01AExtend Authentication/Acct Status API
    EXT-AUTH-03AAccount Creation API
    EXT-AUTH-05APassword Management API
    EXT-AUTH-30AAuthority Management API

    Login

    FeatureStatusDescription
    Login
    EXT-AUTH-04ARewrite login, register, and admin pages to use APIs
    EXT-AUTH-38Aad_form complain feature
    EXT-AUTH-19ARewrite password recovery to use API
    EXT-AUTH-21ARewrite email verification with API
    EXT-AUTH-28AUsername is email switch

    Users will log in using a username, a authority, and a +

    Account Management (NO PICTURE YET)

    Batch Synchronization (NO PICTURE YET)

    Requirements

    New API

    FeatureStatusDescription
    New API
    EXT-AUTH-01AExtend Authentication/Acct Status API
    EXT-AUTH-03AAccount Creation API
    EXT-AUTH-05APassword Management API
    EXT-AUTH-30AAuthority Management API

    Login

    FeatureStatusDescription
    Login
    EXT-AUTH-04ARewrite login, register, and admin pages to use APIs
    EXT-AUTH-38Aad_form complain feature
    EXT-AUTH-19ARewrite password recovery to use API
    EXT-AUTH-21ARewrite email verification with API
    EXT-AUTH-28AUsername is email switch

    Users will log in using a username, a authority, and a password. The authority is the source for user/password verification. OpenACS can be an authority itself.

    Each user in OpenACS will belong to exactly one authority, which can either be the "local" OpenACS users table, in which case the @@ -376,4 +376,4 @@ PAM specification

  • Draft Proposal by Andrew Grumet.

  • Yale CAS, a centrl authentication service a' la - Passport.

  • Revision History

    Document Revision #Action Taken, NotesWhen?By Whom?
    1Updated work-in-progress for consortium-sponsored ext-auth work at Collaboraid.20 Aug 2003Joel Aufrecht
    View comments on this page at openacs.org
    + Passport.

    Revision History

    Document Revision #Action Taken, NotesWhen?By Whom?
    1Updated work-in-progress for consortium-sponsored ext-auth work at Collaboraid.20 Aug 2003Joel Aufrecht
    View comments on this page at openacs.org
    Index: openacs-4/packages/acs-core-docs/www/filename.html =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/filename.html,v diff -u -r1.46.2.1 -r1.46.2.2 --- openacs-4/packages/acs-core-docs/www/filename.html 12 Jun 2011 20:03:48 -0000 1.46.2.1 +++ openacs-4/packages/acs-core-docs/www/filename.html 12 Jun 2011 20:52:57 -0000 1.46.2.2 @@ -1,5 +1,5 @@ -Detailed Design Documentation Template

    Detailed Design Documentation Template

    By You

    Start Note

    +Detailed Design Documentation Template

    Detailed Design Documentation Template

    By You

    Start Note

    NOTE: Some of the sections of this template may not apply to your package, e.g. there may be no user-visible UI elements for a component of the OpenACS Core. Furthermore, it may be easier in some circumstances @@ -115,7 +115,7 @@ within the OpenACS, this section's details are likely to shift from UI specifics to template interface specifics.

    Configuration/Parameters

    - Under OpenACS 5.6.0, parameters are set at two levels: at the global level by + Under OpenACS 5.7.0, parameters are set at two levels: at the global level by the OpenACS-admin, and at the subsite level by a sub-admin. In this section, list and discuss both levels of parameters.

    Future Improvements/Areas of Likely Change

    Index: openacs-4/packages/acs-core-docs/www/form-builder.html =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/form-builder.html,v diff -u -r1.28 -r1.28.2.1 --- openacs-4/packages/acs-core-docs/www/form-builder.html 11 Dec 2010 23:36:32 -0000 1.28 +++ openacs-4/packages/acs-core-docs/www/form-builder.html 12 Jun 2011 20:52:57 -0000 1.28.2.1 @@ -1,30 +1,30 @@ - -Using Form Builder: building html forms dynamically

    Using Form Builder: building html forms dynamically

    Overview

    ($Id$)
    + +Using Form Builder: building html forms dynamically

    Using Form Builder: building html forms dynamically

    Overview

    ($Id$)
    OpenACS docs are written by the named authors, and may be edited by OpenACS documentation staff.

    OpenACS has a form manager called ad_form. Ad_form has an adaptable UI. Error handling includes inline error reporting, and is customizable. However, ad_form can be tricky to use. In addition to this document, - the ad_form api - documentation is helpful.

    Multi-part Elements

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

    SELECT elements

    1. 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 "
      + the ad_form api
      + documentation is helpful.

    Multi-part Elements

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

    SELECT elements

    1. 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
             from foos
      -"]
      -

      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)
      -        {label "Which Foo"}
      +"]
      +

      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)
      +        {label "Which Foo"}
               {options $foo_options}
      -    }

      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

    See also the - W3C spec for "The SELECT, OPTGROUP, and OPTION elements". -

    Using refreshes to pull additional information from the - database

    A situation you may run into often is where you want to pull + }

    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

    See also the + W3C spec for "The SELECT, OPTGROUP, and OPTION elements". +

    Using refreshes to pull additional information from the + database

    A situation you may run into often is where you want to pull in form items from a sub-category when the first category is selected. Ad_form makes this fairly easy to do. In the definition of your form element, include an html section

        {pm_task_id:integer(select),optional
    -        {label "Subject"}
    +        {label "Subject"}
             {options {$task_options}}
    -        {html {onChange "document.form_name.__refreshing_p.value='1';submit()"}}
    +        {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 @@ -39,17 +39,17 @@ -on_refresh section of your ad_form. In that section, you'll get the values from the database, and set the values as so:

        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 +

    Troubleshooting

    A good way to troubleshoot when you're using ad_form is to add the following code at the top of the .tcl page (thanks Jerry Asher):

     ns_log notice it's my page!
     set mypage [ns_getform]
    -if {[string equal "" $mypage]} {
    +if {[string equal "" $mypage]} {
         ns_log notice no form was submitted on my page
     } else {
         ns_log notice the following form was submitted on my page
         ns_set print $mypage
     }
    -    

    Tips for form widgets

    Here are some tips for dealing with some of the form widgets:

    Current widget

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

    View comments on this page at openacs.org
    +

    Tips for form widgets

    Here are some tips for dealing with some of the form widgets:

    Current widget

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

    View comments on this page at openacs.org
    Index: openacs-4/packages/acs-core-docs/www/groups-design.html =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/groups-design.html,v diff -u -r1.32.2.1 -r1.32.2.2 --- openacs-4/packages/acs-core-docs/www/groups-design.html 12 Jun 2011 20:03:48 -0000 1.32.2.1 +++ openacs-4/packages/acs-core-docs/www/groups-design.html 12 Jun 2011 20:52:57 -0000 1.32.2.2 @@ -1,5 +1,5 @@ -Groups Design

    Groups Design

    By Rafael H. Schloming and Mark Thomas

    +Groups Design

    Groups Design

    By Rafael H. Schloming and Mark Thomas

    OpenACS docs are written by the named authors, and may be edited by OpenACS documentation staff.

    Essentials

    • User directory

    • Sitewide administrator directory

    • Subsite administrator directory

    • TCL script directory

    • OpenACS 4 Groups Requirements

    • Data model

    • PL/SQL 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 -r1.32.2.1 -r1.32.2.2 --- openacs-4/packages/acs-core-docs/www/groups-requirements.html 12 Jun 2011 20:03:48 -0000 1.32.2.1 +++ openacs-4/packages/acs-core-docs/www/groups-requirements.html 12 Jun 2011 20:52:57 -0000 1.32.2.2 @@ -1,5 +1,5 @@ -Groups Requirements

        Groups Requirements

        By Rafael H. Schloming, Mark Thomas

        +Groups Requirements

        Groups Requirements

        By Rafael H. Schloming, Mark Thomas

        OpenACS docs are written by the named authors, and may be edited by OpenACS documentation staff.

        Introduction

        Almost all database-backed websites have users, and need to model the Index: openacs-4/packages/acs-core-docs/www/how-do-I.html =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/how-do-I.html,v diff -u -r1.25 -r1.25.2.1 --- openacs-4/packages/acs-core-docs/www/how-do-I.html 11 Dec 2010 23:36:32 -0000 1.25 +++ openacs-4/packages/acs-core-docs/www/how-do-I.html 12 Jun 2011 20:52:57 -0000 1.25.2.1 @@ -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?

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

        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 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?

        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. cp /var/lib/aolserver/$OPENACS_SERVICE_NAME/packages/acs-subsite/www/index* /var/lib/aolserver/$OPENACS_SERVICE_NAME/www
        2. 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?

        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:

        • + +How Do I?

          How Do I?

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

          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 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?

          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. cp /var/lib/aolserver/$OPENACS_SERVICE_NAME/packages/acs-subsite/www/index* /var/lib/aolserver/$OPENACS_SERVICE_NAME/www
          2. 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?

          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 template processer 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 and the associated .tcl file. -

          • The default-master is itself a normal ADP page. It draws the subsite navigation elements and invokes site-master (/var/lib/aolserver/$OPENACS_SERVICE_NAME/www/site-master.adp and .tcl)

          • The site-master draws site-wide navigation elements and invokes blank-master (/var/lib/aolserver/$OPENACS_SERVICE_NAME/www/blank-master.adp and .tcl).

          • 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

          Site Templates

          How do I diagnose a permissions problem?

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

          • 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 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 the event in order to register. Let's assume that the priviliges inherit, so that if a user has the write privilige on the whole package, they will have the write privilege on the event.

          • 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 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 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

          View comments on this page at openacs.org
          +

          <master>

          If it appears exactly like this, without any arguments, the template processer 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 and the associated .tcl file. +

        • The default-master is itself a normal ADP page. It draws the subsite navigation elements and invokes site-master (/var/lib/aolserver/$OPENACS_SERVICE_NAME/www/site-master.adp and .tcl)

        • The site-master draws site-wide navigation elements and invokes blank-master (/var/lib/aolserver/$OPENACS_SERVICE_NAME/www/blank-master.adp and .tcl).

        • 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

        Site Templates

        How do I diagnose a permissions problem?

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

        • 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 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 the event in order to register. Let's assume that the priviliges inherit, so that if a user has the write privilige on the whole package, they will have the write privilege on the event.

        • 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 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 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
        View comments on this page at openacs.org
        Index: openacs-4/packages/acs-core-docs/www/i18n-convert.html =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/i18n-convert.html,v diff -u -r1.24.2.1 -r1.24.2.2 --- openacs-4/packages/acs-core-docs/www/i18n-convert.html 12 Jun 2011 20:03:48 -0000 1.24.2.1 +++ openacs-4/packages/acs-core-docs/www/i18n-convert.html 12 Jun 2011 20:52:57 -0000 1.24.2.2 @@ -1,5 +1,5 @@ -How to Internationalize a Package

        How to Internationalize a Package

        Tip

        +How to Internationalize a Package

        How to Internationalize a Package

        Tip

        For multilingual websites we recommend using the UTF8 charset. In order for AOLserver to use utf8 you need to set the config parameters OutputCharset and @@ -72,7 +72,7 @@ test. If you don't provide the package_key argument then all packages with catalog files will be checked. The script will run its checks primarily on en_US xml catalog files. -

      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 command at the end of a word which adds "s" if a count is anything but 1. This pluralizes nouns correctly based on the data. However, it is confusing to read and, when internationalized, may result in message keys that are both confusing and impossible to set correctly in some languages. While internationalizing, watch out that the automate converter does not create such keys. Also, refactor compound text as you encounter it.

        The automated system can easily get confused by tags within message texts, so that it tries to create two or three message keys for one long string with a tag in the middle. In these cases, uncheck those keys during the conversion and then edit the files directly. For example, this code:

          <p class="form-help-text"><b>Invitations</b> are sent,
        +      

      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 command at the end of a word which adds "s" if a count is anything but 1. This pluralizes nouns correctly based on the data. However, it is confusing to read and, when internationalized, may result in message keys that are both confusing and impossible to set correctly in some languages. While internationalizing, watch out that the automate converter does not create such keys. Also, refactor compound text as you encounter it.

        The automated system can easily get confused by tags within message texts, so that it tries to create two or three message keys for one long string with a tag in the middle. In these cases, uncheck those keys during the conversion and then edit the files directly. For example, this code:

          <p 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, 
         when this wizard is completed and casting begins.#>
           </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
        Index: openacs-4/packages/acs-core-docs/www/i18n-design.html
        ===================================================================
        RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/i18n-design.html,v
        diff -u -r1.14.2.1 -r1.14.2.2
        --- openacs-4/packages/acs-core-docs/www/i18n-design.html	12 Jun 2011 20:03:48 -0000	1.14.2.1
        +++ openacs-4/packages/acs-core-docs/www/i18n-design.html	12 Jun 2011 20:52:57 -0000	1.14.2.2
        @@ -1,3 +1,3 @@
         
        -Design Notes

        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 following in order of precedence:

        1. Use user preference for this package (stored in ad_locale_user_prefs)

        2. Use system preference for the package (stored in apm_packages)

        3. Use user's general preference (stored in user_preferences)

        4. Use Browser header (Accept-Language HTTP header)

        5. Use system locale (an APM parameter for acs_lang)

        6. default to en_US

        For ADP pages, message key lookup occurs in the templating engine. For TCL pages, message key lookup happens with the _ function. In both cases, if the requested locale is not found but a locale which is the default for the language which matches your locale's language is +Design Notes

        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 following in order of precedence:

        1. Use user preference for this package (stored in ad_locale_user_prefs)

        2. Use system preference for the package (stored in apm_packages)

        3. Use user's general preference (stored in user_preferences)

        4. Use Browser header (Accept-Language HTTP header)

        5. Use system locale (an APM parameter for acs_lang)

        6. default to en_US

        For ADP pages, message key lookup occurs in the templating engine. For TCL pages, message key lookup happens with the _ function. In both cases, if the requested locale is not found but a locale which is the default for the language which matches your locale's language is found, then that locale is offered instead.

        View comments on this page at openacs.org
        Index: openacs-4/packages/acs-core-docs/www/i18n-introduction.html =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/i18n-introduction.html,v diff -u -r1.16.2.1 -r1.16.2.2 --- openacs-4/packages/acs-core-docs/www/i18n-introduction.html 12 Jun 2011 20:03:48 -0000 1.16.2.1 +++ openacs-4/packages/acs-core-docs/www/i18n-introduction.html 12 Jun 2011 20:52:57 -0000 1.16.2.2 @@ -1,5 +1,5 @@ -How Internationalization/Localization works in OpenACS

        How Internationalization/Localization works in OpenACS

        +How Internationalization/Localization works in OpenACS

        How Internationalization/Localization works in OpenACS

        This document describes how to develop internationalized OpenACS packages, including writing new packages with internationalization and converting old packages. Text that Index: openacs-4/packages/acs-core-docs/www/i18n-overview.html =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/i18n-overview.html,v diff -u -r1.14.2.1 -r1.14.2.2 --- openacs-4/packages/acs-core-docs/www/i18n-overview.html 12 Jun 2011 20:03:48 -0000 1.14.2.1 +++ openacs-4/packages/acs-core-docs/www/i18n-overview.html 12 Jun 2011 20:52:57 -0000 1.14.2.2 @@ -1,2 +1,2 @@ -Internationalization and Localization Overview

        Internationalization and Localization Overview

        Table 11.1. Internationalization and Localization Overview

        StageTaskWho
        InternationalizationPackage Developer uses the acs-lang tools to replace all visible text in a package with message keys. (More information)Package Developer
        Release ManagementThe newly internationalized package is released.Package Developer
        The translation server is updated with the new package.Translation server maintainers
        LocalizationTranslators work in their respective locales to write text for each message key. (More information)Translators
        Release ManagementThe translated text in the database of the translation server is compared to the current translations in the OpenACS code base, conflicts are resolved, and the new text is written to catalog files on the translation server.Translation server maintainers
        The catalog files are committed to the OpenACS code base.Translation server maintainers
        A new version of OpenACS core and/or affected packages is released and published in the OpenACS.org repository.Release Manager
        UpgradingSite Administrators upgrade their OpenACS sites, either via the automatic upgrade from the Repository or via tarball or CVS Site Administrators
        Site Administrators import the new translations. Existing local translations, if they exist, are not overwritten.Site Administrators
        View comments on this page at openacs.org
        +Internationalization and Localization Overview

        Internationalization and Localization Overview

        Table 12.1. Internationalization and Localization Overview

        StageTaskWho
        InternationalizationPackage Developer uses the acs-lang tools to replace all visible text in a package with message keys. (More information)Package Developer
        Release ManagementThe newly internationalized package is released.Package Developer
        The translation server is updated with the new package.Translation server maintainers
        LocalizationTranslators work in their respective locales to write text for each message key. (More information)Translators
        Release ManagementThe translated text in the database of the translation server is compared to the current translations in the OpenACS code base, conflicts are resolved, and the new text is written to catalog files on the translation server.Translation server maintainers
        The catalog files are committed to the OpenACS code base.Translation server maintainers
        A new version of OpenACS core and/or affected packages is released and published in the OpenACS.org repository.Release Manager
        UpgradingSite Administrators upgrade their OpenACS sites, either via the automatic upgrade from the Repository or via tarball or CVS Site Administrators
        Site Administrators import the new translations. Existing local translations, if they exist, are not overwritten.Site Administrators
        View comments on this page at openacs.org
        Index: openacs-4/packages/acs-core-docs/www/i18n-requirements.html =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/i18n-requirements.html,v diff -u -r1.24 -r1.24.2.1 --- openacs-4/packages/acs-core-docs/www/i18n-requirements.html 11 Dec 2010 23:36:32 -0000 1.24 +++ openacs-4/packages/acs-core-docs/www/i18n-requirements.html 12 Jun 2011 20:52:57 -0000 1.24.2.1 @@ -1,19 +1,19 @@ - -OpenACS Internationalization Requirements

        OpenACS Internationalization Requirements

        by Henry Minsky, - Yon Feldman, - Lars Pind, - Peter Marklund, - Christian Hvid, + +OpenACS Internationalization Requirements

        OpenACS Internationalization Requirements

        by Henry Minsky, + Yon Feldman, + Lars Pind, + Peter Marklund, + Christian Hvid, and others.

        OpenACS docs are written by the named authors, and may be edited by OpenACS documentation staff. -

        Introduction

        +

        Introduction

        This document describes the requirements for functionality in the OpenACS platform to support globalization of the core and optional modules. The goal is to make it possible to support delivery of applications which work properly in multiple locales with the lowest development and maintenance cost. -

        Definitions

        internationalization (i18n)

        +

        Definitions

        internationalization (i18n)

        The provision within a computer program of the capability of making itself adaptable to the requirements of different native languages, local customs and coded character sets. @@ -28,8 +28,8 @@ A product development approach which ensures that software products are usable in the worldwide markets through a combination of internationalization and localization. -

        Vision Statement

        The Mozilla project suggests keeping two catchy phrases in -mind when thinking about globalization:

        • One code base for the world

        • English is just another language

        Building an application often involves making a number of +

        Vision Statement

        The Mozilla project suggests keeping two catchy phrases in +mind when thinking about globalization:

        • One code base for the world

        • English is just another language

        Building an application often involves making a number of assumptions on the part of the developers which depend on their own culture. These include constant strings in the user interface and system error messages, names of countries, cities, order of given @@ -44,21 +44,21 @@ kind of globalization support would be large and ongoing, since without a mechanism to incorporate the locale-specific changes cleanly back into the code base, it would require making a new fork -of the source code for each locale.

        System/Application Overview

        A globalized application will perform some or all of the +of the source code for each locale.

        System/Application Overview

        A globalized application will perform some or all of the following steps to handle a page request for a specific -locale:

        1. Decide what the target locale is for an incoming page -request

        2. Decide which character set encoding the output should be -delivered in

        3. If a script file to handle the request needs to be loaded +locale:

          1. Decide what the target locale is for an incoming page +request

          2. Decide which character set encoding the output should be +delivered in

          3. If a script file to handle the request needs to be loaded from disk, determine if a character set conversion needs to be -performed when loading the script

          4. If needed, locale-specific resources are fetched. These can +performed when loading the script

          5. If needed, locale-specific resources are fetched. These can include text, graphics, or other resources that would vary with the -target locale.

          6. If content data is fetched from the database, check for -locale-specific versions of the data (e.g. country names).

          7. Source code should use a message catalog API to translate -constant strings in the code to the target locale

          8. Perform locale-specific linguistic sorting on data if -needed

          9. If the user submitted form input data, decide what character +target locale.

          10. If content data is fetched from the database, check for +locale-specific versions of the data (e.g. country names).

          11. Source code should use a message catalog API to translate +constant strings in the code to the target locale

          12. Perform locale-specific linguistic sorting on data if +needed

          13. If the user submitted form input data, decide what character set encoding conversion if any is needed. Parse locale-specific -quantities if needed (number formats, date formats).

          14. If templating is being used, select correct locale-specific -template to merge with content

          15. Format output data quantities in locale-specific manner +quantities if needed (number formats, date formats).

          16. If templating is being used, select correct locale-specific +template to merge with content

          17. Format output data quantities in locale-specific manner (date, time, numeric, currency). If templating is being used, this may be done either before and/or after merging the data with a template.

          Since the internationalization APIs may potentially be used @@ -69,68 +69,68 @@ Java which we will want to move to. So the design to meet the requirements will tend to rely on these capabilities, or close approximations to them where possible, in order to make it easier -to maintain Tcl and Java OpenACS versions.

        Use-cases and User-scenarios

        Here are the cases that we need to be able to handle -efficiently:

        1. A developer needs to author a web site/application in a +to maintain Tcl and Java OpenACS versions.

        Use-cases and User-scenarios

        Here are the cases that we need to be able to handle +efficiently:

        1. A developer needs to author a web site/application in a language besides English, and possibly a character set besides ISO-8859-1. This includes the operation of the OpenACS itself, i.e., navigation, admin pages for modules, error messages, as well as additional modules or content supplied by the web site developer.

          What do they need to modify to make this work? Can their localization work be easily folded in to future releases of -OpenACS?

        2. A developer needs to author a web site which operates in +OpenACS?

        3. A developer needs to author a web site which operates in multiple languages simultaneously. For example, www.un.org with content and navigation in multiple languages.

          The site would have an end-user visible UI to support these languages, and the content management system must allow articles to be posted in these languages. In some cases it may be necessary to make the modules' admin UI's operate in more than one supported language, while in other cases the backend admin -interface can operate in a single language.

        4. A developer is writing a new module, and wants to make it +interface can operate in a single language.

        5. A developer is writing a new module, and wants to make it easy for someone to localize it. There should be a clear path to author the module so that future developers can easily add support for other locales. This would include support for creating resources such as message catalogs, non-text assets such as graphics, and use of templates which help to separate application -logic from presentation.

        Competitive -Analysis

        Other application servers: ATG Dyanmo, Broadvision, Vignette, -... ? Anyone know how they deal with i18n ?

        Related -Links

        Competitive +Analysis

        Other application servers: ATG Dyanmo, Broadvision, Vignette, +... ? Anyone know how they deal with i18n ?

        Requirements

        Because the requirements for globalization affect many areas +http://www.niso.org/3166.html

        IANA +Registry of Character Sets

      • Test plan

      • Competitive system(s)

      Requirements

      Because the requirements for globalization affect many areas of the system, we will break up the requirements into phases, with a base required set of features, and then stages of increasing -functionality.

      Locales

      10.0

      A standard representation of locale will be used throughout +functionality.

      Locales

      10.0

      A standard representation of locale will be used throughout the system. A locale refers to a language and territory, and is uniquely identified by a combination of ISO language and ISO country abbreviations.

      See -Content +Content Repository Requirement 100.20

      10.10 Provide a consistent representation and API for creating and referencing a locale

      10.20 There will be a Tcl library of locale-aware formatting and parsing functions for numbers, dates and times. Note that Java has builtin support for these already.

      10.30 For each locale there will be -default date, number and currency formats. Currency i18n is -NOT IMPLEMENTED for 5.0.0.

      10.40Administrators can upgrade their -servers to use new locales via the APM. NOT IMPLEMENTED in +default date, number and currency formats. Currency i18n is +NOT IMPLEMENTED for 5.0.0.

      10.40Administrators can upgrade their +servers to use new locales via the APM. NOT IMPLEMENTED in 5.0.0; current workaround is to get an xml file and load it -manually.

      Associating a Locale with a Request

      20.0

      The request processor must have a mechanism for associating a +manually.

      Associating a Locale with a Request

      20.0

      The request processor must have a mechanism for associating a locale with each request. This locale is then used to select the appropriate template for a request, and will also be passed as the locale argument to the message catalog or locale-specific formatting functions.

      20.10 The locale for a request should be computed by the following method, in descending order of -priority:

      • get locale associated with subsite or package id

      • get locale from user preference

      • get locale from site wide default

        20.20 An API will be provided for +priority:

        • get locale associated with subsite or package id

        • get locale from user preference

        • get locale from site wide default

          20.20 An API will be provided for getting the current request locale from the -ad_conn structure.

      Resource Bundles / Content Repository

      30.0

      A mechanism must be provided for a developer to group a set +ad_conn structure.

    Resource Bundles / Content Repository

    30.0

    A mechanism must be provided for a developer to group a set of arbitrary content resources together, keyed by a unique identifier and a locale.

    For example, what approaches could be used to implement a localizable nav-bar mechanism for a site? A navigation bar might be @@ -142,7 +142,7 @@ functionality might include using templates, Java ResourceBundles, content-item containers in the Content Repository, or some convention assigning a common prefix to key strings in the message -catalog.

    Message Catalog for String Translation

    40.0

    A message catalog facility will provide a database of +catalog.

    Message Catalog for String Translation

    40.0

    A message catalog facility will provide a database of translations for constant strings for multilingual applications. It must support the following:

    40.10 Each message will referenced via unique a key.

    40.20 The key for a message will have @@ -167,7 +167,7 @@ is modified, the other translations of that string can be flagged as needing update.

    40.90 The message lookup must be as efficient as possible so as not to slow down the delivery of -pages.

    Character Set Encoding

    Character Sets

    50.0 A locale will have a primary +pages.

    Character Set Encoding

    Character Sets

    50.0 A locale will have a primary associated character set which is used to encode text in the language. When given a locale, we can query the system for the associated character set to use.

    The assumption is that we are going to use Unicode in our @@ -177,12 +177,12 @@ browsers and authoring tools, the system must be able to read and write other character sets. In particular, conversions to and from Unicode will need to be explicitly performed at the following -times:

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

    • 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 writes an an ADP or +times:

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

      • 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 writes an an ADP or TCL file, it assumes the file is iso-8859-1. If the output charset (OutputCharset) in the AOLserver config file is set, - then acs-templating assumes it's that charset.

      Tcl Source File Character Set

      There are two classes of Tcl files loaded by the system; + then acs-templating assumes it's that charset.

    Tcl Source File Character Set

    There are two classes of Tcl files loaded by the system; library files loaded at server startup, and page script files, which are run on each page request.

    Should we require all Tcl files be stored as UTF8? That seems too much of a burden on developers.

    50.10 Tcl library files can be authored @@ -191,31 +191,31 @@ filename.

    50.20 Tcl page script files can be authored in any character set. The system must have a way to determine the character set before loading the files, probably from - the filename.

    Submitted Form Data Character Set

    50.30 Data which is submitted with a + the filename.

    Submitted Form Data Character Set

    50.30 Data which is submitted with a HTTP request using a GET or POST method may be in any character set. The system must be able to determine the encoding of the form data and convert it to Unicode on demand.

    50.35 The developer must be able to override the default system choice of character set when parsing - and validating user form data. INCOMPLETE - form + and validating user form data. INCOMPLETE - form widgets in acs-templating/tcl/date-procs.tcl are not internationalized. Also, acs-templating's UI needs to be internationalized by replacing all user-visible strings with - message keys.

    50.30.10In Japan and some + message keys.

    50.30.10In Japan and some other Asian languages where there are multiple character set encodings in common use, the server may need to attempt to do an auto-detection of the character set, because buggy browsers may - submit form data in an unexpected alternate encoding.

    Output Character Set

    50.40 The output character set for a + submit form data in an unexpected alternate encoding.

    Output Character Set

    50.40 The output character set for a page request will be determined by default by the locale associated with the request (see requirement 20.0).

    50.50 It must be possible for a developer to manually override the output character set encoding for a request using an API function. -

    ACS Kernel Issues

    60.10 All OpenACS error messages must use +

    ACS Kernel Issues

    60.10 All OpenACS error messages must use the message catalog and the request locale to generate error -message for the appropriate locale.NOT IMPLEMENTED for 5.0.0.

    60.20 Web server error messages such as +message for the appropriate locale.NOT IMPLEMENTED for 5.0.0.

    60.20 Web server error messages such as 404, 500, etc must also be delivered in the appropriate locale.

    60.30 Where files are written or read from disk, their filenames must use a character set and character -values which are safe for the underlying operating system.

    Templates

    70.0 For a given abstract URL, the +values which are safe for the underlying operating system.

    Templates

    70.0 For a given abstract URL, the designer may create multiple locale-specific template files may be created (one per locale or language)

    70.10 For a given page request, the system must be able to select an approprate locale-specific @@ -226,28 +226,28 @@ current request locale.

    70.30 A template file may be created in any character set. The system must have a way to know which character set a template file contains, so it can properly process -it.

    Formatting -Datasource Output in Templates

    70.50 The properties of a datasource +it.

    Formatting +Datasource Output in Templates

    70.50 The properties of a datasource column may include a datatype so that the templating system can format the output for the current locale. The datatype is defined by a standard OpenACS datatype plus a format token or format string, for example: a date column might be specified as 'current_date:date LONG,' or 'current_date:date -"YYYY-Mon-DD"'

    Forms

    70.60 The forms API must support +"YYYY-Mon-DD"'

    Forms

    70.60 The forms API must support construction of locale-specific HTML form widgets, such as date entry widgets, and form validation of user input data for locale-specific data, such as dates or numbers. NOT IMPLEMENTED in 5.0.0.

    70.70 For forms which allow users to upload files, a standard method for a user to indicate the charset of a text file being uploaded must be provided.

    Design note: this presumably applies to uploading -data to the content repository as well

    Sorting and Searching

    80.10 Support API for correct collation +data to the content repository as well

    Sorting and Searching

    80.10 Support API for correct collation (sorting order) on lists of strings in locale-dependent way.

    80.20 For the Tcl API, we will say that locale-dependent sorting will use Oracle SQL operations (i.e., we won't provide a Tcl API for this). We require a Tcl API function to return the correct incantation of NLS_SORT to use for a -given locale with ORDER BY clauses in +given locale with ORDER BY clauses in queries.

    80.40 The system must handle full-text -search in any supported language.

    Time Zones

    90.10 Provide API support for specifying +search in any supported language.

    Time Zones

    90.10 Provide API support for specifying a time zone

    90.20 Provide an API for computing time and date operations which are aware of timezones. So for example a calendar module can properly synchronize items inserted into a @@ -258,29 +258,29 @@ zone preference should be attached via a session or else UTC should be used to display every date and time.

    90.60 The default if we can't determine a time zone is to display all dates and times in some -universal time zone such as GMT.

    Database

    100.10 Since UTF8 strings can use up to +universal time zone such as GMT.

    Database

    100.10 Since UTF8 strings can use up to three (UCS2) or six (UCS4) bytes per character, make sure that column size declarations in the schema are large enough to accomodate required data (such as email addresses in -Japanese). Since 5.0.0, this is covered in the database -install instructions for both PostgreSQL and Oracle.

    Email and Messaging

    When sending an email message, just as when delivering the +Japanese). Since 5.0.0, this is covered in the database +install instructions for both PostgreSQL and Oracle.

    Email and Messaging

    When sending an email message, just as when delivering the content in web page over an HTTP connection, it is necessary to be able to specify what character set encoding to use, defaulting to UTF-8.

    110.10 The email message sending API will allow for a character set encoding to be specified.

    110.20 The email accepting API allows for character set to be parsed correctly (the message has a MIME - character set content type header)

    Mail is not internationalized. The following issues must be addressed.

    • + character set content type header)

    Mail is not internationalized. The following issues must be addressed.

    • Many functions still call ns_sendmail. This means that there are different end points for sending mail. This should be changed to use the acs-mail-lite API instead. -

    • +

    • Consumers of email services must do the following: Determine the appropriate language or languages to use for the message subject and message body and localize them (as in notifications). -

    • Extreme Use case: Web site has a default language of Danish. A forum is set up for Swedes, so the forum has a package_id and a language setting of Swedish. A poster posts to the forum in Russian (is this possible?). A user is subscribed to the forum and has a language preference of Chinese. What should be in the message body and message subject?

    • Incoming mail should be localized.

    Implementation Notes

    +

  • Extreme Use case: Web site has a default language of Danish. A forum is set up for Swedes, so the forum has a package_id and a language setting of Swedish. A poster posts to the forum in Russian (is this possible?). A user is subscribed to the forum and has a language preference of Chinese. What should be in the message body and message subject?

  • Incoming mail should be localized.

  • Implementation Notes

    Because globalization touches many different parts of the system, we want to reduce the implementation risk by breaking the implementation into phases. -

    Revision History

    Document Revision #Action Taken, NotesWhen?By Whom?
    1Updated with results of MIT-sponsored i18n work at Collaboraid.14 Aug 2003Joel Aufrecht
    0.4converting from HTML to DocBook and importing the document to the OpenACS +

    Revision History

    Document Revision #Action Taken, NotesWhen?By Whom?
    1Updated with results of MIT-sponsored i18n work at Collaboraid.14 Aug 2003Joel Aufrecht
    0.4converting from HTML to DocBook and importing the document to the OpenACS kernel documents. This was done as a part of the internationalization of OpenACS and .LRN for the Heidelberg University in Germany12 September 2002Peter Marklund
    0.3comments from Christian1/14/2000Henry Minsky
    0.2Minor typos fixed, clarifications to wording11/14/2000Henry Minsky
    0.1Creation11/08/2000Henry Minsky
    View comments on this page at openacs.org
    Index: openacs-4/packages/acs-core-docs/www/i18n-translators.html =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/i18n-translators.html,v diff -u -r1.14.2.1 -r1.14.2.2 --- openacs-4/packages/acs-core-docs/www/i18n-translators.html 12 Jun 2011 20:03:48 -0000 1.14.2.1 +++ openacs-4/packages/acs-core-docs/www/i18n-translators.html 12 Jun 2011 20:52:57 -0000 1.14.2.2 @@ -1,2 +1,2 @@ -Translator's Guide

    Translator's Guide

    Most translators use the OpenACS Public Translation Server, because the process of getting new message keys onto the server and getting new translations back into the distribution are handled by the maintainers of that machine. You can also do translation work on your own OpenACS site; this makes your own translations more readily available to you but also means that your work will not be shared with other users unless you take extra steps (contacting an OpenACS core developer or submitting a patch) to get your work back to the OpenACS core.

    The basic steps for translators:

    • Go to the Localization page and choose the locale that you are translating to. If the locale is not present you need to visit Administration of Localization and create the locale.

    • Translating with Translator Mode. To translate messages in the pages they appear, Toggle Translator Mode and then browse to the page you want to translate. Untranslated messages will have a yellow background and a red star that you click to translate the message. Translated messages have a green star next to them that is a hyperlink to editing your translation. There is a history mechanism that allows you to see previous translations in case you would want to revert a translation.

      While in Translator mode, a list of all message keys appears at the bottom of each page.

    • Batch translation. To translate many messages at once, go to Administration of Localization, click on the locale to translate, then click on a package, and then click Batch edit these messages.

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

    View comments on this page at openacs.org
    +Translator's Guide

    Translator's Guide

    Most translators use the OpenACS Public Translation Server, because the process of getting new message keys onto the server and getting new translations back into the distribution are handled by the maintainers of that machine. You can also do translation work on your own OpenACS site; this makes your own translations more readily available to you but also means that your work will not be shared with other users unless you take extra steps (contacting an OpenACS core developer or submitting a patch) to get your work back to the OpenACS core.

    The basic steps for translators:

    • Go to the Localization page and choose the locale that you are translating to. If the locale is not present you need to visit Administration of Localization and create the locale.

    • Translating with Translator Mode. To translate messages in the pages they appear, Toggle Translator Mode and then browse to the page you want to translate. Untranslated messages will have a yellow background and a red star that you click to translate the message. Translated messages have a green star next to them that is a hyperlink to editing your translation. There is a history mechanism that allows you to see previous translations in case you would want to revert a translation.

      While in Translator mode, a list of all message keys appears at the bottom of each page.

    • Batch translation. To translate many messages at once, go to Administration of Localization, click on the locale to translate, then click on a package, and then click Batch edit these messages.

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

    View comments on this page at openacs.org
    Index: openacs-4/packages/acs-core-docs/www/i18n.html =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/i18n.html,v diff -u -r1.32.2.1 -r1.32.2.2 --- openacs-4/packages/acs-core-docs/www/i18n.html 12 Jun 2011 20:03:48 -0000 1.32.2.1 +++ openacs-4/packages/acs-core-docs/www/i18n.html 12 Jun 2011 20:52:57 -0000 1.32.2.2 @@ -1,5 +1,5 @@ -Chapter 11. Internationalization

    Chapter 11. Internationalization

    +Chapter 12. Internationalization

    Chapter 12. Internationalization

    By Peter Marklund and Lars Pind

    Index: openacs-4/packages/acs-core-docs/www/index.html =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/index.html,v diff -u -r1.51.2.1 -r1.51.2.2 --- openacs-4/packages/acs-core-docs/www/index.html 12 Jun 2011 20:03:48 -0000 1.51.2.1 +++ openacs-4/packages/acs-core-docs/www/index.html 12 Jun 2011 20:52:57 -0000 1.51.2.2 @@ -1,4 +1,4 @@ -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 OpenACS 5.6.0
    OpenACS Installation Guide for Windows2000
    OpenACS Installation Guide for Mac OS X
    4. 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
    5. 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
    6. Database Management
    Running a PostgreSQL database on another server
    Deleting a tablespace
    Vacuum Postgres nightly
    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 Full Text Search using OpenFTS (deprecated see 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
    III. For OpenACS Package Developers
    7. Development Tutorial
    Creating an Application Package
    Setting Up Database Objects
    Creating Web Pages
    Debugging and Automated Testing
    8. Development Reference
    OpenACS Packages
    OpenACS Data Models and the Object System
    The Request Processor
    Using Templates in OpenACS
    Groups, Context, Permissions
    Writing OpenACS Application Pages
    Parties in OpenACS
    OpenACS Permissions Tediously Explained
    Object Identity
    Programming with AOLserver
    9. 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.7.0
    OpenACS Installation Guide for Windows2000
    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. Database Management
    Running a PostgreSQL database on another server
    Deleting a tablespace
    Vacuum Postgres nightly
    7. 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 Full Text Search using OpenFTS (deprecated see 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
    III. For OpenACS Package Developers
    8. Development Tutorial
    Creating an Application Package
    Setting Up Database Objects
    Creating Web Pages
    Debugging and Automated Testing
    9. 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
    10. 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
    10. Documentation Standards
    OpenACS Documentation Guide
    Using PSGML mode in Emacs
    Using nXML mode in Emacs
    Detailed Design Documentation Template
    System/Application Requirements Template
    11. Internationalization
    Internationalization and Localization Overview
    How Internationalization/Localization works in OpenACS
    How to Internationalize a Package
    Design Notes
    Translator's Guide
    IV. For OpenACS Platform Developers
    12. 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
    Security Requirements
    Security Design
    Request Processor Requirements
    Request Processor Design
    Documenting Tcl Files: Page Contracts and Libraries
    Bootstrapping OpenACS
    External Authentication Requirements
    13. 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
    View comments on this page at openacs.org
    +
    Release Version Numbering
    Constraint naming standard
    ACS File Naming and Formatting Standards
    Variables
    Automated Testing
    11. Documentation Standards
    OpenACS Documentation Guide
    Using PSGML mode in Emacs
    Using nXML mode in Emacs
    Detailed Design Documentation Template
    System/Application Requirements Template
    12. Internationalization
    Internationalization and Localization Overview
    How Internationalization/Localization works in OpenACS
    How to Internationalize a Package
    Design Notes
    Translator's Guide
    C. Using CVS with an OpenACS Site
    IV. For OpenACS Platform Developers
    13. Kernel Documentation
    Overview
    Object Model Requirements
    Object Model Design
    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
    Request Processor Requirements
    Request Processor Design
    Documenting Tcl Files: Page Contracts and Libraries
    Bootstrapping OpenACS
    External Authentication Requirements
    14. 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
    View comments on this page at openacs.org
    Index: openacs-4/packages/acs-core-docs/www/individual-programs.html =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/individual-programs.html,v diff -u -r1.31.2.1 -r1.31.2.2 --- openacs-4/packages/acs-core-docs/www/individual-programs.html 12 Jun 2011 20:03:48 -0000 1.31.2.1 +++ openacs-4/packages/acs-core-docs/www/individual-programs.html 12 Jun 2011 20:52:57 -0000 1.31.2.2 @@ -10,7 +10,7 @@

    Table 2.2. Version Compatibility Matrix

    OpenACS Version3.2.5 4.5 4.6 4.6.14.6.24.6.35.05.15.25.35.45.5
    AOLserver3YesNo
    3.3+ad13MaybeYesNo
    3.3oacs1MaybeYesNo
    3.4.4No
    3.4.4oacs1MaybeYesNo
    3.5.5MaybeYesNo
    4.0MaybeYes
    4.5NoYes
    Tcl8.4Yes
    8.5.4 -Maybe
    PostgreSQL7.0YesNo
    7.2MaybeYesNo
    7.3.2 - 7.3.xNoYesNo
    7.4NoYesNo
    8.0NoMaybeYes
    8.1NoYes
    8.2NoCVS version onlyYes
    8.3NoYes
    Oracle8.1.6MaybeYesMaybe
    8.1.7MaybeYesMaybe
    9iNoYes
    10gNoYes
    11gNoMaybe

    The OpenACS installation instructions assume the operating system and build environment are installed. The instructions explain installation of TCL, Tcllib, tDOM, tclwebtest, a Web Server, a Database, a Process Controller, and Source Control software. The following external links are for reference only. -

    • OpenACS 5.6.0The OpenACS tarball comprises the core packages and +

      • OpenACS 5.7.0The OpenACS tarball comprises the core packages and many useful additional packages. This includes a full set of documentation. The tarball works with both PostgreSQL and Oracle. Some scripts require bash shell.

      • Operating System. OpenACS is designed for a Unix-like system. It is @@ -43,8 +43,8 @@ compile. (Debian users: apt-get install tcl8.4-dev). You need this to install OpenFTS.

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

    • tDOM, REQUIRED. OpenACS 5.6.0 stores + OpenACS 5.7.0 uses those Tcl extensions to send e-mail out, among others. +

    • tDOM, REQUIRED. OpenACS 5.7.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.

    • Web Server. The web server handles incoming HTTP requests, provides @@ -53,7 +53,7 @@ errors. OpenACS uses AOLserver; some people have had success running Apache with mod_nsd.

      • 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.6.0. These + includes all the patches and modules needed to run OpenACS 5.7.0. These instructions will describe how to install using his source distribution. He also has binaries for SuSE 7.3 and OpenBSD 2.8 (and perhaps more to come), currently located at uptime.openacs.org. Index: openacs-4/packages/acs-core-docs/www/install-cvs.html =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/install-cvs.html,v diff -u -r1.38.2.1 -r1.38.2.2 --- openacs-4/packages/acs-core-docs/www/install-cvs.html 12 Jun 2011 20:03:48 -0000 1.38.2.1 +++ openacs-4/packages/acs-core-docs/www/install-cvs.html 12 Jun 2011 20:52:57 -0000 1.38.2.2 @@ -1,5 +1,5 @@ -Initialize CVS (OPTIONAL)

      Initialize CVS (OPTIONAL)

      CVS is a source control system. Create and initialize a +Initialize CVS (OPTIONAL)

      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]#
      Index: openacs-4/packages/acs-core-docs/www/install-daemontools.html
      ===================================================================
      RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/install-daemontools.html,v
      diff -u -r1.39.2.1 -r1.39.2.2
      --- openacs-4/packages/acs-core-docs/www/install-daemontools.html	12 Jun 2011 20:03:48 -0000	1.39.2.1
      +++ openacs-4/packages/acs-core-docs/www/install-daemontools.html	12 Jun 2011 20:52:57 -0000	1.39.2.2
      @@ -4,7 +4,7 @@
             installed in /package.  These commands install daemontools and
             svgroup.  svgroup is a script for granting permissions, to allow
             users other than root to use daemontools for specific
      -      services.

      1. Install Daemontools

        download daemontools and install it.

        • Red Hat 8

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

          1. Install Daemontools

            download daemontools and install it.

            • 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
              @@ -80,7 +80,7 @@
               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]#
            • Install a script to grant non-root users permission to - control daemontools services.

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

              [root root]# cp /tmp/openacs-5.7.0/packages/acs-core-docs/www/files/svgroup.txt /usr/local/bin/svgroup
               [root root]# chmod 755 /usr/local/bin/svgroup
              -cp /tmp/openacs-5.6.0/packages/acs-core-docs/www/files/svgroup.txt /usr/local/bin/svgroup 
              +cp /tmp/openacs-5.7.0/packages/acs-core-docs/www/files/svgroup.txt /usr/local/bin/svgroup 
               chmod 755 /usr/local/bin/svgroup
        View comments on this page at openacs.org
        Index: openacs-4/packages/acs-core-docs/www/install-full-text-search-openfts.html =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/install-full-text-search-openfts.html,v diff -u -r1.9.2.1 -r1.9.2.2 --- openacs-4/packages/acs-core-docs/www/install-full-text-search-openfts.html 12 Jun 2011 20:03:48 -0000 1.9.2.1 +++ openacs-4/packages/acs-core-docs/www/install-full-text-search-openfts.html 12 Jun 2011 20:52:57 -0000 1.9.2.2 @@ -6,7 +6,7 @@ Tsearch2. See Install Full Text Search using Tsearch2. Tsearch2 is much easier to install, requiring only compilation of one module from PostgreSQL contrib, with an - automated install process using the tsearch2-driver package.

        Install OpenFTS module

        If you want full text search, and you are running PostgreSQL, install this module to support FTS. Do this step after you have installed both PostgreSQL and + automated install process using the tsearch2-driver package.

        Install OpenFTS module

        If you want full text search, and you are running PostgreSQL, install this module to support FTS. Do this step after you have installed both PostgreSQL and AOLserver. You will need the openfts tarball in /tmp.

        1. Install Tsearch. This is a PostgreSQL module that OpenFTS requires.

          [root root]# su - postgres
          @@ -81,7 +81,7 @@
           make
           su postgres
           make install
          -exit

        Install OpenFTS prerequisites in PostgreSQL instance

        If you are installing Full Text Search, add required +exit

    Install OpenFTS prerequisites in PostgreSQL instance

    If you are installing Full Text Search, add required packages to the new database. (In order for full text search to work, you must also install the PostgreSQL OpenFTS module and prerequisites.)

    [$OPENACS_SERVICE_NAME $OPENACS_SERVICE_NAME]$ /usr/local/pgsql/bin/psql $OPENACS_SERVICE_NAME -f /usr/local/src/postgresql-7.3.4/contrib/tsearch/tsearch.sql
    Index: openacs-4/packages/acs-core-docs/www/install-full-text-search-tsearch2.html
    ===================================================================
    RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/install-full-text-search-tsearch2.html,v
    diff -u -r1.9.2.1 -r1.9.2.2
    --- openacs-4/packages/acs-core-docs/www/install-full-text-search-tsearch2.html	12 Jun 2011 20:03:48 -0000	1.9.2.1
    +++ openacs-4/packages/acs-core-docs/www/install-full-text-search-tsearch2.html	12 Jun 2011 20:52:57 -0000	1.9.2.2
    @@ -6,7 +6,7 @@
           V2 Introduction by Andrew J. Kopciuch

    OpenACS docs are written by the named authors, and may be edited by OpenACS documentation staff. -

    Install Tsearch2 module

    If you want full text search, and you are running PostgreSQL, install this module to support FTS. Do this step after you have installed both PostgreSQL and +

    Install Tsearch2 module

    If you want full text search, and you are running PostgreSQL, install this module to support FTS. Do this step after you have installed both PostgreSQL and AOLserver. You will need the tseach2 module form PostgreSQL contrib. This is included with the PostgreSQL full source distribution. It is also available with the PostgreSQL contrib Index: openacs-4/packages/acs-core-docs/www/install-next-backups.html =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/install-next-backups.html,v diff -u -r1.10 -r1.10.2.1 --- openacs-4/packages/acs-core-docs/www/install-next-backups.html 17 Oct 2010 21:06:08 -0000 1.10 +++ openacs-4/packages/acs-core-docs/www/install-next-backups.html 12 Jun 2011 20:52:57 -0000 1.10.2.1 @@ -1,5 +1,5 @@ -Backup Strategy

    Backup Strategy

    +Backup Strategy

    Backup Strategy

    The purpose of backup is to enable recovery. Backup and recovery are always risky; here are some steps that minimize the chance recovery is necessary: @@ -33,4 +33,4 @@ /var/lib/aolserver/$OPENACS_SERVICE_NAME/database-backup, then you can apply standard file-based backup strategies to /var/lib/aolserver/$OPENACS_SERVICE_NAME -

    View comments on this page at openacs.org
    +

    View comments on this page at openacs.org
    Index: openacs-4/packages/acs-core-docs/www/install-next-nightly-vacuum.html =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/install-next-nightly-vacuum.html,v diff -u -r1.21.2.1 -r1.21.2.2 --- openacs-4/packages/acs-core-docs/www/install-next-nightly-vacuum.html 12 Jun 2011 20:03:48 -0000 1.21.2.1 +++ openacs-4/packages/acs-core-docs/www/install-next-nightly-vacuum.html 12 Jun 2011 20:52:57 -0000 1.21.2.2 @@ -1,5 +1,5 @@ -Vacuum Postgres nightly

    Vacuum Postgres nightly

    +Vacuum Postgres nightly

    Vacuum Postgres nightly

    The "vacuum" command must be run periodically to reclaim space in versions of PostgreSQL before 7.4. The "vacuum analyze" form additionally collects statistics on the @@ -16,4 +16,4 @@ 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$)
    View comments on this page at openacs.org
    +0 1 * * * /usr/local/pgsql/bin/vacuumdb $OPENACS_SERVICE_NAME
    ($Id$)
    View comments on this page at openacs.org
    Index: openacs-4/packages/acs-core-docs/www/install-nsopenssl.html =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/install-nsopenssl.html,v diff -u -r1.24.2.1 -r1.24.2.2 --- openacs-4/packages/acs-core-docs/www/install-nsopenssl.html 12 Jun 2011 20:03:48 -0000 1.24.2.1 +++ openacs-4/packages/acs-core-docs/www/install-nsopenssl.html 12 Jun 2011 20:52:57 -0000 1.24.2.2 @@ -6,7 +6,7 @@ https. These commands compile nsopenssl and install it, along with a tcl helper script to handle https connections. You will also need ssl certificates. Because those should - be different for each server service, you won't need those instructions until + be different for each server service, you won't need those instructions until later.

    Install on AOLserver3

    You will need the unpacked Aolserver tarball in /usr/local/src/aolserver and the nsopenssl tarball in @@ -62,7 +62,7 @@

    SSL support must be enabled seperately in each OpenACS - server (Generate ssl certificates.

    If your ports for SSL are privileged (below 1024), you + server (???.

    If your ports for SSL are privileged (below 1024), you will have to start AOLserver with prebinds for both your HTTP and your HTTPS port (usually by adding -b your_ip:your_http_port,your_ip:your_https_port Index: openacs-4/packages/acs-core-docs/www/install-qmail.html =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/install-qmail.html,v diff -u -r1.39.2.1 -r1.39.2.2 --- openacs-4/packages/acs-core-docs/www/install-qmail.html 12 Jun 2011 20:03:48 -0000 1.39.2.1 +++ openacs-4/packages/acs-core-docs/www/install-qmail.html 12 Jun 2011 20:52:57 -0000 1.39.2.2 @@ -30,7 +30,7 @@ tcpserver: usage: tcpserver [ -1UXpPhHrRoOdDqQv ] [ -c limit ] [ -x rules.cdb ] [ -B banner ] [ -g gid ] [ -u uid ] [ -b backlog ] [ -l localname ] [ -t timeout ] host port program [root ucspi-tcp-0.88]# -

    +

    (I'm not sure if this next step is 100% necessary, but when I skip it I get problems. If you get the error 553 sorry, that domain isn't in my list of allowed rcpthosts (#5.7.1) then you need to do this.) AOLserver sends outgoing mail via the ns_sendmail command, which pipes a command to the sendmail executable. Or, in our @@ -41,10 +41,10 @@ Unless this mail is addressed to the same machine, qmail thinks that it's an attempt to relay mail, and rejects it. So these two commands set up an exception so that any mail sent from 127.0.0.1 is allowed to -send outgoing mail.

    [root ucspi-tcp-0.88]# cp /tmp/openacs-5.6.0/packages/acs-core-docs/www/files/tcp.smtp.txt /etc/tcp.smtp
    +send outgoing mail.

    [root ucspi-tcp-0.88]# cp /tmp/openacs-5.7.0/packages/acs-core-docs/www/files/tcp.smtp.txt /etc/tcp.smtp
     [root ucspi-tcp-0.88]# tcprules /etc/tcp.smtp.cdb /etc/tcp.smtp.tmp < /etc/tcp.smtp
    -cp /tmp/openacs-5.6.0/packages/acs-core-docs/www/files/tcp.smtp.txt /etc/tcp.smtp 
    -tcprules /etc/tcp.smtp.cdb /etc/tcp.smtp.tmp < /etc/tcp.smtp 
  • Install Qmail. 

    Download qmail, +cp /tmp/openacs-5.7.0/packages/acs-core-docs/www/files/tcp.smtp.txt /etc/tcp.smtp +tcprules /etc/tcp.smtp.cdb /etc/tcp.smtp.tmp < /etc/tcp.smtp

  • Install Qmail. 

    Download qmail, set up the standard supporting users and build the binaries:

    [root root]# cd /usr/local/src
     [root src]# wget http://www.qmail.org/netqmail-1.04.tar.gz
     [root src]# tar xzf netqmail-1.04.tar.gz
    @@ -103,7 +103,7 @@
     cd netqmail-1.04
     ./collate.sh
     cd netqmail-1.04
    -make setup check

    Replace sendmail with qmail's wrapper.

    [root qmail-1.03]# rm -f /usr/bin/sendmail /usr/sbin/sendmail
    +make setup check

    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
    @@ -125,13 +125,13 @@
     cd ~alias; touch .qmail-postmaster .qmail-mailer-daemon .qmail-root 
     chmod 644 ~alias/.qmail* 
     /var/qmail/bin/maildirmake ~alias/Maildir/ 
    -chown -R alias.nofiles /var/qmail/alias/Maildir

    Configure qmail to use the Maildir delivery format +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
    -[root alias]# cp /tmp/openacs-5.6.0/packages/acs-core-docs/www/files/qmail.rc.txt /var/qmail/rc
    +[root alias]# cp /tmp/openacs-5.7.0/packages/acs-core-docs/www/files/qmail.rc.txt /var/qmail/rc
     [root alias]# chmod 755 /var/qmail/rc
     [root alias]# 
     echo "./Maildir" > /var/qmail/bin/.qmail 
    -cp /tmp/openacs-5.6.0/packages/acs-core-docs/www/files/qmail.rc.txt /var/qmail/rc 
    +cp /tmp/openacs-5.7.0/packages/acs-core-docs/www/files/qmail.rc.txt /var/qmail/rc 
     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
    @@ -143,13 +143,13 @@
     [root root]# mkdir -p /var/qmail/supervise/qmail-smtpd/log
     [root root]# mkdir /var/log/qmail
     [root root]# chown qmaill /var/log/qmail
    -[root root]# cp /tmp/openacs-5.6.0/packages/acs-core-docs/www/files/qmailctl.txt /var/qmail/bin/qmailctl
    +[root root]# cp /tmp/openacs-5.7.0/packages/acs-core-docs/www/files/qmailctl.txt /var/qmail/bin/qmailctl
     [root root]# chmod 755 /var/qmail/bin/qmailctl
     [root root]# ln -s /var/qmail/bin/qmailctl /usr/bin
    -[root root]# cp /tmp/openacs-5.6.0/packages/acs-core-docs/www/files/qmail-send-run.txt /var/qmail/supervise/qmail-send/run 
    -[root root]# cp /tmp/openacs-5.6.0/packages/acs-core-docs/www/files/qmail-send-log-run.txt /var/qmail/supervise/qmail-send/log/run
    -[root root]# cp /tmp/openacs-5.6.0/packages/acs-core-docs/www/files/qmail-smtpd-run.txt /var/qmail/supervise/qmail-smtpd/run
    -[root root]# cp /tmp/openacs-5.6.0/packages/acs-core-docs/www/files/qmail-smtpd-log-run.txt /var/qmail/supervise/qmail-smtpd/log/run
    +[root root]# cp /tmp/openacs-5.7.0/packages/acs-core-docs/www/files/qmail-send-run.txt /var/qmail/supervise/qmail-send/run 
    +[root root]# cp /tmp/openacs-5.7.0/packages/acs-core-docs/www/files/qmail-send-log-run.txt /var/qmail/supervise/qmail-send/log/run
    +[root root]# cp /tmp/openacs-5.7.0/packages/acs-core-docs/www/files/qmail-smtpd-run.txt /var/qmail/supervise/qmail-smtpd/run
    +[root root]# cp /tmp/openacs-5.7.0/packages/acs-core-docs/www/files/qmail-smtpd-log-run.txt /var/qmail/supervise/qmail-smtpd/log/run
     [root root]# chmod 755 /var/qmail/supervise/qmail-send/run
     [root root]# chmod 755 /var/qmail/supervise/qmail-send/log/run
     [root root]# chmod 755 /var/qmail/supervise/qmail-smtpd/run
    @@ -160,13 +160,13 @@
     mkdir -p /var/qmail/supervise/qmail-smtpd/log
     mkdir /var/log/qmail
     chown qmaill /var/log/qmail
    -cp /tmp/openacs-5.6.0/packages/acs-core-docs/www/files/qmailctl.txt /var/qmail/bin/qmailctl
    +cp /tmp/openacs-5.7.0/packages/acs-core-docs/www/files/qmailctl.txt /var/qmail/bin/qmailctl
     chmod 755 /var/qmail/bin/qmailctl
     ln -s /var/qmail/bin/qmailctl /usr/bin
    -cp /tmp/openacs-5.6.0/packages/acs-core-docs/www/files/qmail-send-run.txt /var/qmail/supervise/qmail-send/run
    -cp /tmp/openacs-5.6.0/packages/acs-core-docs/www/files/qmail-send-log-run.txt /var/qmail/supervise/qmail-send/log/run
    -cp /tmp/openacs-5.6.0/packages/acs-core-docs/www/files/qmail-smtpd-run.txt /var/qmail/supervise/qmail-smtpd/run
    -cp /tmp/openacs-5.6.0/packages/acs-core-docs/www/files/qmail-smtpd-log-run.txt /var/qmail/supervise/qmail-smtpd/log/run
    +cp /tmp/openacs-5.7.0/packages/acs-core-docs/www/files/qmail-send-run.txt /var/qmail/supervise/qmail-send/run
    +cp /tmp/openacs-5.7.0/packages/acs-core-docs/www/files/qmail-send-log-run.txt /var/qmail/supervise/qmail-send/log/run
    +cp /tmp/openacs-5.7.0/packages/acs-core-docs/www/files/qmail-smtpd-run.txt /var/qmail/supervise/qmail-smtpd/run
    +cp /tmp/openacs-5.7.0/packages/acs-core-docs/www/files/qmail-smtpd-log-run.txt /var/qmail/supervise/qmail-smtpd/log/run
     chmod 755 /var/qmail/supervise/qmail-send/run
     chmod 755 /var/qmail/supervise/qmail-send/log/run
     chmod 755 /var/qmail/supervise/qmail-smtpd/run
    Index: openacs-4/packages/acs-core-docs/www/install-redhat.html
    ===================================================================
    RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/install-redhat.html,v
    diff -u -r1.39.2.1 -r1.39.2.2
    --- openacs-4/packages/acs-core-docs/www/install-redhat.html	12 Jun 2011 20:03:48 -0000	1.39.2.1
    +++ openacs-4/packages/acs-core-docs/www/install-redhat.html	12 Jun 2011 20:52:57 -0000	1.39.2.2
    @@ -1,5 +1,5 @@
     
    -Appendix A. Install Red Hat 8/9

    Appendix A. Install Red Hat 8/9

    by Joel Aufrecht

    +Appendix A. Install Red Hat 8/9

    Appendix A. Install Red Hat 8/9

    by Joel Aufrecht

    OpenACS docs are written by the named authors, and may be edited by OpenACS documentation staff.

    This section takes a blank PC and sets up some supporting @@ -27,7 +27,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 @@ -55,7 +55,7 @@ Review (and modify if needed) the partitions created and click Next

    2. On the pop-up window asking "Are you sure you want to do this?" click Yes - IF YOU ARE WIPING YOUR HARD DRIVE.

    3. Click Next on the boot loader screen

  • Configure Networking. + IF YOU ARE WIPING YOUR HARD DRIVE.

  • Click Next on the boot loader screen

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

    1. DHCP is a system by which a computer that @@ -76,7 +76,7 @@ Mail (SMTP). In the Other ports box, enter 443, 8000, 8443. Click 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 +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 computer to support and then click Next

  • Choose your time zone and click Next.

  • Type in a root password, twice.

  • On the Package selection page, we're going to @@ -88,13 +88,13 @@ risk that's still screened by the firewall, or a resource hog. Just don't install a database or web server, because that would conflict with the database and web server we'll install later. -

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

    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. The same rules apply as in the last step - you can add more stuff, but you shouldn't remove anything the guide adds. We're going to go through all the packages in one big list, so select 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
  • Red Hat isn't completely happy with the combination +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
  • Red Hat isn't completely happy with the combination of packages we've selected, and wants to satisfy some dependencies. Don't let it. On the next screen, choose Ignore Package @@ -120,7 +120,7 @@ upgrading all of that. Since you are upgrading the kernel, reboot after this step.

  • 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 @@ -201,4 +201,4 @@ cd /var/tmp wget http://updates.redhat.com/7.1/en/os/i686/kernel-2.4.18-27.7.x.i686.rpm rpm -Uvh kernel-2.4.18-27.7.x.i686.rpm -reboot

  • View comments on this page at openacs.org
    +reboot
    View comments on this page at openacs.org
    Index: openacs-4/packages/acs-core-docs/www/install-steps.html =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/install-steps.html,v diff -u -r1.33.2.1 -r1.33.2.2 --- openacs-4/packages/acs-core-docs/www/install-steps.html 12 Jun 2011 20:03:48 -0000 1.33.2.1 +++ openacs-4/packages/acs-core-docs/www/install-steps.html 12 Jun 2011 20:52:57 -0000 1.33.2.2 @@ -2,10 +2,10 @@ Basic Steps

    Basic Steps

    The basic steps for installing OpenACS are:

    1. Install an OS and supporting software (see Install a Unix-like OS or Appendix A, Install Red Hat 8/9 for more details). See the Table 2.2.

    2. Install a database (see Section , “Install Oracle 8.1.7” or - Install PostgreSQL).

    3. Install AOLserver (???) .

    4. Create a unique database and system user. + 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.6.0).

    Specific instructions are available for Mac OS X and + (see Install OpenACS 5.7.0).

    Specific instructions are available for Mac OS X and Windows2000 (see Section , “OpenACS Installation Guide for Mac OS X” or Section , “OpenACS Installation Guide for Windows2000”).

    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 @@ -41,9 +41,9 @@ su - $OPENACS_SERVICE_NAME svc -d /service/$OPENACS_SERVICE_NAME dropdb $OPENACS_SERVICE_NAME -createdb $OPENACS_SERVICE_NAME

    Setting a global shell 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

    Paths and Users

    Table 2.1. Default directories for a standard install

    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 +createdb $OPENACS_SERVICE_NAME

    Setting a global shell 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

    Paths and Users

    Table 2.1. Default directories for a standard install

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

    + files are located at:

    /var/tmp/openacs-5.7.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

    None of these locations are set in stone - they're simply the values that we've chosen. The values that you'll probably want to change, such as service name, are Index: openacs-4/packages/acs-core-docs/www/ix01.html =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/ix01.html,v diff -u -r1.27.2.1 -r1.27.2.2 --- openacs-4/packages/acs-core-docs/www/ix01.html 12 Jun 2011 20:03:48 -0000 1.27.2.1 +++ openacs-4/packages/acs-core-docs/www/ix01.html 12 Jun 2011 20:52:57 -0000 1.27.2.2 @@ -1,2 +1,2 @@ -Index

    Index

    Symbols

    $OPENACS_SERVICE_NAME, Paths and Users

    C

    computeroutput
    code, Code
    cvs
    initializing, Initialize CVS (OPTIONAL)

    E

    emacs
    installation, Install Red Hat 8/9
    emphasis
    bold, italics, Emphasis

    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

    Q

    qmail
    installation, Install qmail (OPTIONAL)
    Maildir, Install qmail (OPTIONAL)
    rcpthosts error message, Install qmail (OPTIONAL)

    U

    ulink, Links
    upgrade
    OpenACS 4.5 to 4.6.x
    Linux/Unix, Upgrading 4.5 or higher to 4.6.3
    View comments on this page at openacs.org
    +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

    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

    Q

    qmail
    installation, Install qmail (OPTIONAL)
    Maildir, Install qmail (OPTIONAL)
    rcpthosts error message, Install qmail (OPTIONAL)

    U

    ulink, Links
    upgrade
    OpenACS 4.5 to 4.6.x
    Linux/Unix, Upgrading 4.5 or higher to 4.6.3
    View comments on this page at openacs.org
    Index: openacs-4/packages/acs-core-docs/www/kernel-doc.html =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/kernel-doc.html,v diff -u -r1.35.2.1 -r1.35.2.2 --- openacs-4/packages/acs-core-docs/www/kernel-doc.html 12 Jun 2011 20:03:48 -0000 1.35.2.1 +++ openacs-4/packages/acs-core-docs/www/kernel-doc.html 12 Jun 2011 20:52:57 -0000 1.35.2.2 @@ -1,2 +1,2 @@ -Chapter 12. Kernel Documentation
    View comments on this page at openacs.org
    +Chapter 13. Kernel Documentation
    View comments on this page at openacs.org
    Index: openacs-4/packages/acs-core-docs/www/kernel-overview.html =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/kernel-overview.html,v diff -u -r1.29.2.1 -r1.29.2.2 --- openacs-4/packages/acs-core-docs/www/kernel-overview.html 12 Jun 2011 20:03:48 -0000 1.29.2.1 +++ openacs-4/packages/acs-core-docs/www/kernel-overview.html 12 Jun 2011 20:52:57 -0000 1.29.2.2 @@ -1,5 +1,5 @@ -Overview

    Overview

    View comments on this page at openacs.org
    Index: openacs-4/packages/acs-core-docs/www/mac-installation.html =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/mac-installation.html,v diff -u -r1.40.2.1 -r1.40.2.2 --- openacs-4/packages/acs-core-docs/www/mac-installation.html 12 Jun 2011 20:03:48 -0000 1.40.2.1 +++ openacs-4/packages/acs-core-docs/www/mac-installation.html 12 Jun 2011 20:52:57 -0000 1.40.2.2 @@ -1,9 +1,9 @@ -OpenACS Installation Guide for Mac OS X

    OpenACS Installation Guide for Mac OS X

    Prerequisites. Install readline:

    1. Download readline from http://ftp.gnu.org/pub/gnu/readline/readline-4.3.tar.gz into /usr/local/src

    2. Extract readline in /usr/local/src, configure, compile, and install:

      su - root
      +OpenACS Installation Guide for Mac OS X

      OpenACS Installation Guide for Mac OS X

      Prerequisites. Install readline:

      1. Download readline from http://ftp.gnu.org/pub/gnu/readline/readline-4.3.tar.gz into /usr/local/src

      2. Extract readline in /usr/local/src, configure, compile, and install:

        su - root
         cd /usr/local/src
         tar xvfz readline-4.3.tar.gz
         readline-4.3
         ./configure
         make
         make install
      3. Proceed with the Unix-like system instructions. OS X is incompatible with Oracle 8, and Oracle 9i on OSX is not yet verified for OpenACS. So continue with Install PostgreSQL. Additional special steps for OS X are documented inline with the standard Unix-like instructions.

      Additional resources for installing on OS X.

      ($Id$)
      View comments on this page at openacs.org
      + older forum thread

    ($Id$)
    View comments on this page at openacs.org
    Index: openacs-4/packages/acs-core-docs/www/nxml-mode.html =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/nxml-mode.html,v diff -u -r1.16.2.1 -r1.16.2.2 --- openacs-4/packages/acs-core-docs/www/nxml-mode.html 12 Jun 2011 20:03:48 -0000 1.16.2.1 +++ openacs-4/packages/acs-core-docs/www/nxml-mode.html 12 Jun 2011 20:52:57 -0000 1.16.2.2 @@ -1,5 +1,5 @@ -Using nXML mode in Emacs

    Using nXML mode in Emacs

    By Jeff Davis

    +Using nXML mode in Emacs

    Using nXML mode in Emacs

    By Jeff Davis

    OpenACS docs are written by the named authors, and may be edited by OpenACS documentation staff.

    Index: openacs-4/packages/acs-core-docs/www/object-identity.html =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/object-identity.html,v diff -u -r1.47.2.1 -r1.47.2.2 --- openacs-4/packages/acs-core-docs/www/object-identity.html 12 Jun 2011 20:03:48 -0000 1.47.2.1 +++ openacs-4/packages/acs-core-docs/www/object-identity.html 12 Jun 2011 20:52:57 -0000 1.47.2.2 @@ -1,19 +1,19 @@ -Object Identity

    Object Identity

    By Rafael H. Schloming

    +Object Identity

    Object Identity

    By Rafael H. Schloming

    OpenACS docs are written by the named authors, and may be edited by OpenACS documentation staff. -

    One of the major design features of OpenACS 5.6.0 is the explicit representation +

    One of the major design features of OpenACS 5.7.0 is the explicit representation of object identity. The reason I say "explicit representation" is because the concept of object identity has been around forever. It is inherent to our problem domain. Consider the example of 3.x style scoping. The 3.x data models use the triple (user_id, group_id, -scope) to identify an object. In the 5.6.0 data model this +scope) to identify an object. In the 5.7.0 data model this object is explicitly represented by a single party_id.

    Another good example of this is can be found in the user groups data model. The 3.x user groups data model contains another example of an implied identity. Every mapping between a user and a group could have an arbitrary number of attached values (user_group_member_fields, etc.). In this case it is the pair (group_id, user_id) that implicitly refers to an -object (the person's membership in a group). In the 5.6.0 data model this +object (the person's membership in a group). In the 5.7.0 data model this object identity is made explicit by adding an integer primary key to the table that maps users to groups.

    Coming from a purely relational world, this might seem slightly weird at first. The pair (group_id, user_id) is sufficient to uniquely identify the Index: openacs-4/packages/acs-core-docs/www/object-system-design.html =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/object-system-design.html,v diff -u -r1.32.2.1 -r1.32.2.2 --- openacs-4/packages/acs-core-docs/www/object-system-design.html 12 Jun 2011 20:03:48 -0000 1.32.2.1 +++ openacs-4/packages/acs-core-docs/www/object-system-design.html 12 Jun 2011 20:52:57 -0000 1.32.2.2 @@ -1,13 +1,13 @@ -Object Model Design

    Object Model Design

    By Pete Su, Michael Yoon, Richard Li, Rafael Schloming

    +Object Model Design

    Object Model Design

    By Pete Su, Michael Yoon, Richard Li, Rafael Schloming

    OpenACS docs are written by the named authors, and may be edited by OpenACS documentation staff.

    Introduction

    Before OpenACS 4, software developers writing OpenACS applications or modules would develop each data model separately. However, many applications built on OpenACS share certain characteristics or require certain common services. @@ -858,4 +858,4 @@ on par with the old user/groups system in a more general way.

    Future Improvements/Areas of Likely Change

    Nothing here yet.

    Authors

    Pete Su generated this document from material culled from other documents by Michael Yoon, Richard Li and Rafael Schloming. But, any remaining lies are his and his alone.

    Revision History

    Document Revision #Action Taken, NotesWhen?By Whom?
    0.1Creation9/09/2000Pete Su
    0.2Edited for ACS 4 Beta9/30/2000Kai Wu
    0.3Edited for ACS 4.0.1, fixed some mistakes, removed use of term -"OM"11/07/2000Pete Su
    View comments on this page at openacs.org
    +"OM"
    11/07/2000Pete Su
    View comments on this page at openacs.org
    Index: openacs-4/packages/acs-core-docs/www/object-system-requirements.html =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/object-system-requirements.html,v diff -u -r1.32.2.1 -r1.32.2.2 --- openacs-4/packages/acs-core-docs/www/object-system-requirements.html 12 Jun 2011 20:03:48 -0000 1.32.2.1 +++ openacs-4/packages/acs-core-docs/www/object-system-requirements.html 12 Jun 2011 20:52:57 -0000 1.32.2.2 @@ -1,5 +1,5 @@ -Object Model Requirements

    Object Model Requirements

    By Pete Su

    +Object Model Requirements

    Object Model Requirements

    By Pete Su

    OpenACS docs are written by the named authors, and may be edited by OpenACS documentation staff.

    I. Introduction

    A major goal in OpenACS 4 is to unify and normalize many of the core services @@ -203,7 +203,7 @@ contexts are used as the basis for the permissions system. In general, if an object has no explicit permissions attached to it, then it inherits permissions from its context.

    The context data model also forms the basis of the subsites system, and is -a basic part of the permissions system, +a basic part of the permissions system, described in separate documents.

    The context data model should provide the following facilities:

    50.10 Unique ID

    Every context should have a unique ID in the system.

    50.20 Tree Structure

    The data model should support a tree structured organization of contexts. That is, contexts can be logically "contained" within other contexts (i.e. contexts have parents) and contexts can contain other contexts Index: openacs-4/packages/acs-core-docs/www/objects.html =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/objects.html,v diff -u -r1.50.2.1 -r1.50.2.2 --- openacs-4/packages/acs-core-docs/www/objects.html 12 Jun 2011 20:03:48 -0000 1.50.2.1 +++ openacs-4/packages/acs-core-docs/www/objects.html 12 Jun 2011 20:52:57 -0000 1.50.2.2 @@ -1,9 +1,9 @@ -OpenACS Data Models and the Object System

    OpenACS Data Models and the Object System

    By Pete Su

    +OpenACS Data Models and the Object System

    OpenACS Data Models and the Object System

    By Pete Su

    OpenACS docs are written by the named authors, and may be edited by OpenACS documentation staff.

    Overview

    -Developing data models in OpenACS 5.6.0 is much like developing data models +Developing data models in OpenACS 5.7.0 is much like developing data models for OpenACS 3, save for the implementation. As usual, you need to examine how to model the information that the application must store and manipulate, and define a suitable set of SQL tables. In our Notes @@ -79,7 +79,7 @@ Fire up your text editor and open the ROOT/packages/notes/sql/oracle/notes-create.sql (ROOT/packages/notes/sql/postgresql/notes-create.sql for the PG version) file created when we created the package. Then, do the following: -

    Describe the new type to the type system

    +

    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 @@
     because the new type note is a subtype of
     acs_object, it will inherit these attributes, so there is
     no need for us to define them.
    -

    Define a table in which to store your objects

    +

    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 @@ -164,7 +164,7 @@ use the acs_objects table to find objects will transparently find any objects that are instances of any subtype of acs_objects. -

    Define a package for type specific procedures

    +

    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: @@ -212,7 +212,7 @@ object OBJ was "read only", then any other object that used OBJ as its context would also be "read only" by default. We'll talk about this more later. -

    Define a package body for type specific procedures

    +

    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 to insert a row into @@ -315,7 +315,7 @@ models that are meant to be integrated with the OpenACS object system.

    -There are two basic rules you should follow when designing OpenACS 5.6.0 data +There are two basic rules you should follow when designing OpenACS 5.7.0 data models: @@ -370,7 +370,7 @@ requires a good amount of thought at design time even for simple applications.

    Summary

    -Hooking into the OpenACS 5.6.0 object system brings the application developer +Hooking into the OpenACS 5.7.0 object system brings the application developer numerous benefits, and doing it involves only four easy steps: Index: openacs-4/packages/acs-core-docs/www/openacs-unpack.html =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/openacs-unpack.html,v diff -u -r1.27.2.1 -r1.27.2.2 --- openacs-4/packages/acs-core-docs/www/openacs-unpack.html 12 Jun 2011 20:03:48 -0000 1.27.2.1 +++ openacs-4/packages/acs-core-docs/www/openacs-unpack.html 12 Jun 2011 20:52:57 -0000 1.27.2.2 @@ -2,17 +2,17 @@ Unpack the OpenACS tarball

    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
    -[root tmp]# tar xzf openacs-5.6.0.tgz
    +[root tmp]# tar xzf openacs-5.7.0.tgz
     cd /tmp
    -tar xzf openacs-5.6.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
    +tar xzf openacs-5.7.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
     [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
     U openacs-4/packages/acs-core-docs/www/files/README.TXT
     (many lines omitted)
     U openacs-4/packages/acs-core-docs/www/files/template-ini.ini
     U openacs-4/packages/acs-core-docs/www/files/winnsd.txt
    -[root tmp]# mv openacs-4 openacs-5.6.0
    +[root tmp]# mv openacs-4 openacs-5.7.0
     cd /tmp
     cvs -d :pserver:anonymous@cvs.openacs.org:/cvsroot co openacs-4/packages/acs-core-docs/www/files/
     mv openacs-4 openacs-5.0.0a4
    View comments on this page at openacs.org
    Index: openacs-4/packages/acs-core-docs/www/openacs.html =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/openacs.html,v diff -u -r1.49.2.1 -r1.49.2.2 --- openacs-4/packages/acs-core-docs/www/openacs.html 12 Jun 2011 20:03:48 -0000 1.49.2.1 +++ openacs-4/packages/acs-core-docs/www/openacs.html 12 Jun 2011 20:52:57 -0000 1.49.2.2 @@ -1,5 +1,5 @@ -Install OpenACS 5.6.0

    Install OpenACS 5.6.0

    by Vinod Kurup

    +Install OpenACS 5.7.0

    Install OpenACS 5.7.0

    by Vinod Kurup

    OpenACS docs are written by the named authors, and may be edited by OpenACS documentation staff.

    Set up a user account for each site.

    @@ -87,8 +87,8 @@ /var/tmp and proceed:

    1. Unpack the OpenACS tarball and rename it to $OPENACS_SERVICE_NAME. Secure the directory so that only the owner can access it. Check the permissions by listing the directory.

      FreeBSD note: Change the period in chown -R $OPENACS_SERVICE_NAME.$OPENACS_SERVICE_NAME $OPENACS_SERVICE_NAME to a colon: chown -R $OPENACS_SERVICE_NAME:$OPENACS_SERVICE_NAME $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.6.0.tgz
      -[$OPENACS_SERVICE_NAME aolserver]$ mv openacs-5.6.0 $OPENACS_SERVICE_NAME
      +[$OPENACS_SERVICE_NAME aolserver]$ tar xzf /var/tmp/openacs-5.7.0.tgz
      +[$OPENACS_SERVICE_NAME aolserver]$ mv openacs-5.7.0 $OPENACS_SERVICE_NAME
       [$OPENACS_SERVICE_NAME aolserver]$ chmod -R 775 $OPENACS_SERVICE_NAME
       [$OPENACS_SERVICE_NAME aolserver]$ chown -R $OPENACS_SERVICE_NAME.$OPENACS_SERVICE_NAME $OPENACS_SERVICE_NAME
       [$OPENACS_SERVICE_NAME aolserver]$ ls -al
      @@ -101,11 +101,11 @@
       [root root]#
       su - $OPENACS_SERVICE_NAME
       cd /var/lib/aolserver
      -tar xzf /var/tmp/openacs-5.6.0.tgz
      -mv openacs-5.6.0 $OPENACS_SERVICE_NAME
      +tar xzf /var/tmp/openacs-5.7.0.tgz
      +mv openacs-5.7.0 $OPENACS_SERVICE_NAME
       chmod -R 755 $OPENACS_SERVICE_NAME
       chown -R $OPENACS_SERVICE_NAME.$OPENACS_SERVICE_NAME $OPENACS_SERVICE_NAME
      -exit
    2. Add the Service to CVS (OPTIONAL)

    3. Prepare the database

      • Prepare Oracle for OpenACS. If you won't be using Oracle, skip to Prepare PostgreSQL for an OpenACS Service

        +exit

      • Add the Service to CVS (OPTIONAL)

      • Prepare the database

        • Prepare Oracle 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. @@ -238,7 +238,7 @@ CREATE DATABASE [$OPENACS_SERVICE_NAME $OPENACS_SERVICE_NAME]$ su - $OPENACS_SERVICE_NAME -/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
          +/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
           0 0 * * * /usr/local/pgsql/bin/vacuumdb --full --analyze $OPENACS_SERVICE_NAME

          Depending on your distribution, you may receive email when the crontab items are executed. If you don't want to receive email for those crontab items, @@ -251,7 +251,7 @@ 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
           

          @@ -275,7 +275,7 @@ AOLserver is very configurable. These settings should get you started, but for more options, read the AOLserver docs. -

        • Enable OpenFTS Full Text Search (OPTIONAL)

        • Install nsopenssl +

        • Enable OpenFTS Full Text Search (OPTIONAL)

        • Install nsopenssl for SSL support. (OPTIONAL)

  • Verify AOLserver startup. 

    1. Kill any current running AOLserver processes and start a new one. The recommended way to start an AOLserver process is by running the included script, /var/lib/aolserver/$OPENACS_SERVICE_NAME/etc/daemontools/run. If you are not using the default file paths and names, you will need to edit run.

      If you want to use port 80, there are complications. AOLserver must be root to use system ports such as @@ -294,7 +294,7 @@ [$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.

    2. Attempt to connect to the service from a web browser. You should specify a URL like: http://yourserver.test:8000

      - You should see a page that looks like this. If you imported your files into + You should see a page that looks like this. If you imported your files into cvs, now that you know it worked you can erase the temp directory with rm -rf /var/lib/aolserver/$OPENACS_SERVICE_NAME.orig.

      @@ -308,11 +308,11 @@ permissions errors or missing files. If you need to make changes, don't forget to kill any running servers with killall nsd. -

    3. Automate +

    4. Automate AOLserver keepalive (OPTIONAL)

  • Configure a Service with the OpenACS Installer.  Now that you've got AOLserver up and running, let's install OpenACS - 5.6.0. + 5.7.0.

    • You should see a page from the webserver titled OpenACS Installation: @@ -362,20 +362,20 @@ You'll see the final Installer page, "OpenACS Installation: Complete." It will tell you that the server is being restarted; note that unless you already set up a way for - AOLserver to restart itself (ie. inittab or daemontools), + AOLserver to restart itself (ie. inittab or daemontools), you'll need to manually restart your service.

      [$OPENACS_SERVICE_NAME $OPENACS_SERVICE_NAME]$ /usr/local/aolserver/bin/nsd-postgres -t /var/lib/aolserver/$OPENACS_SERVICE_NAME/config.tcl
    • Give the server a few minutes to start up. Then reload the final page above. You should see the front page, with an area to login near the upper right. Congratulations, OpenACS - 5.6.0 is now up and running! -

  • Installation Option 3: Install from CVS

    If you want to track fresh code developments inbetween releases, or you are an OpenACS core developer, you may want to install from CVS. This is identical to Option 2 except that you get the files from CVS instead of the tarball: CVS Checkout Instructions. So, instead of tar xzf /var/tmp/openacs-5.6.0.tgz, cvs -z3 -d :pserver:anonymous@openacs.org:/cvsroot co acs-core.

    Next Steps

    Installation Option 3: Install from CVS

    If you want to track fresh code developments inbetween releases, or you are an OpenACS core developer, you may want to install from CVS. This is identical to Option 2 except that you get the files from CVS instead of the tarball: CVS Checkout Instructions. So, instead of tar xzf /var/tmp/openacs-5.7.0.tgz, cvs -z3 -d :pserver:anonymous@openacs.org:/cvsroot co acs-core.

    Next Steps

    • Use daemontools supervise and svc, or inittab, to automate server startup and shutdown.

    • Install Full Text Search (OPTIONAL). If you have installed OpenFTS and enabled OpenFTS, you can now install the OpenFTS Driver package and - Full Text Search Engine package in the OpenACS service.

    • This is a good time to make a backup of your service. If this is a - production site, you should set up automatic nightly backups.

    • If you want traffic reports, set up analog or another log + Full Text Search Engine package in the OpenACS service.

    • This is a good time to make a backup of your service. If this is a + production site, you should set up automatic nightly 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.

    • Set up database environment variables for the site + packages. (more 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 @@ -407,4 +407,4 @@ LD_LIBRARY_PATH=/ora8/m01/app/oracle/product/8.1.7/lib:/lib:/usr/lib ORACLE_SID=ora8 ORACLE_TERM=vt100 -ORA_NLS33=$ORACLE_HOME/ocommon/nls/admin/data

  • Test your backup and recovery procedure.

  • Set up Section , “External uptime validation”.

  • ($Id$)
    View comments on this page at openacs.org
    +ORA_NLS33=$ORACLE_HOME/ocommon/nls/admin/data
  • Test your backup and recovery procedure.

  • Set up ???.

  • ($Id$)
    View comments on this page at openacs.org
    Index: openacs-4/packages/acs-core-docs/www/oracle.html =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/oracle.html,v diff -u -r1.47.2.1 -r1.47.2.2 --- openacs-4/packages/acs-core-docs/www/oracle.html 12 Jun 2011 20:03:48 -0000 1.47.2.1 +++ openacs-4/packages/acs-core-docs/www/oracle.html 12 Jun 2011 20:52:57 -0000 1.47.2.2 @@ -5,7 +5,7 @@

    If you are installing PostGreSQL instead of Oracle, skip this section.

    - OpenACS 5.6.0 will install with Oracle 9i but has not been extensively tested so may still have bugs or tuning issues. See Andrew Piskorski's Oracle 9i notes for guidance. + OpenACS 5.7.0 will install with Oracle 9i but has not been extensively tested so may still have bugs or tuning issues. See Andrew Piskorski's Oracle 9i notes for guidance.

    This installation guide attempts to present all of the information necessary to complete an OpenACS installation. We try hard to make all of the steps possible in one pass, rather than having a step which amounts to "go away and develop a profound understanding of software X and then come back and, in 99% of all cases, type these two lines." The exception to our rule is Oracle production systems. This page describes a set of steps to get a working Oracle development server, but it is unsuitable for production systems. If you will be using OpenACS on Oracle in a production environment, you will experience many problems unless you develop a basic understanding of Oracle which is outside the scope of this document. T

    @@ -1233,7 +1233,7 @@

     SQL> drop tablespace table_space_name including contents cascade constraints;

    For more information on Oracle, please consult the documentation. -

    Defaults

    We used the following defaults while installing Oracle.

    VariableValueReason
    ORACLE_HOME/ora8/m01/app/oracle/product/8.1.7This is the default Oracle installation directory.
    ORACLE_SERVICEora8The service name is a domain-qualified identifier for +

    Oracle Next Steps

    ???

    Defaults

    We used the following defaults while installing Oracle.

    VariableValueReason
    ORACLE_HOME/ora8/m01/app/oracle/product/8.1.7This is the default Oracle installation directory.
    ORACLE_SERVICEora8The service name is a domain-qualified identifier for your Oracle server.
    ORACLE_SIDora8This is an identifier for your Oracle server.
    ORACLE_OWNERoracleThe user who owns all of the oracle files.
    ORACLE_GROUPdbaThe special oracle group. Users in the dba group are authorized to do a connect internal within Index: openacs-4/packages/acs-core-docs/www/packages.html =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/packages.html,v diff -u -r1.49.2.1 -r1.49.2.2 --- openacs-4/packages/acs-core-docs/www/packages.html 12 Jun 2011 20:03:48 -0000 1.49.2.1 +++ openacs-4/packages/acs-core-docs/www/packages.html 12 Jun 2011 20:52:57 -0000 1.49.2.2 @@ -1,5 +1,5 @@ -OpenACS Packages

    OpenACS Packages

    By Pete Su and Bryan Quinn

    +OpenACS Packages

    OpenACS Packages

    By Pete Su and Bryan Quinn

    OpenACS docs are written by the named authors, and may be edited by OpenACS documentation staff.

    Overview

    @@ -13,7 +13,7 @@

    Server file layout

    Here is how an OpenACS 5 server is laid out starting from the Server root (ROOT): -

    Figure 8.1. Server file layout diagram

    +    

    Figure 9.1. Server file layout diagram

     ROOT/
         bin/
             Various executables and scripts for server maintanence.
    @@ -51,7 +51,7 @@
           
           To illustrate the general structure of a package, let's see what the
           package for the "notes" application should look like.
    -    

    Figure 8.2. Package file layout diagram

    +    

    Figure 9.2. Package file layout diagram

     ROOT/
       +-- packages/    APM Root
             |
    @@ -124,7 +124,7 @@
           directories.  This makes it suitable for storing icons, css
           files, javascript, and other static content which can be treated
           this way.
    -    

    Table 8.1. Package files

    File TypeIts UseNaming Convention
    Package Specification FileThe package specification file is an XML file generated and +

    Table 9.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 information about the package including its parameters and its files.notes.info
    Data Model Creation Script @@ -333,7 +333,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: + this appendix. If so, then you just do this:

    % cd ROOT/packages
     % cvs add notes
     % cd notes
    @@ -411,4 +411,4 @@
         

  • Writes out package distribution files for other people to download and install. We'll cover this later. -

  • View comments on this page at openacs.org
    +

    View comments on this page at openacs.org
    Index: openacs-4/packages/acs-core-docs/www/parties.html =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/parties.html,v diff -u -r1.49.2.1 -r1.49.2.2 --- openacs-4/packages/acs-core-docs/www/parties.html 12 Jun 2011 20:03:48 -0000 1.49.2.1 +++ openacs-4/packages/acs-core-docs/www/parties.html 12 Jun 2011 20:52:57 -0000 1.49.2.2 @@ -1,5 +1,5 @@ -Parties in OpenACS

    Parties in OpenACS

    By Rafael H. Schloming

    +Parties in OpenACS

    Parties in OpenACS

    By Rafael H. Schloming

    OpenACS docs are written by the named authors, and may be edited by OpenACS documentation staff.

    Introduction

    While many applications must deal with individuals and many applications Index: openacs-4/packages/acs-core-docs/www/permissions-design.html =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/permissions-design.html,v diff -u -r1.32.2.1 -r1.32.2.2 --- openacs-4/packages/acs-core-docs/www/permissions-design.html 12 Jun 2011 20:03:48 -0000 1.32.2.1 +++ openacs-4/packages/acs-core-docs/www/permissions-design.html 12 Jun 2011 20:52:57 -0000 1.32.2.2 @@ -1,8 +1,8 @@ -Permissions Design

    Permissions Design

    By John Prevost and Rafael H. Schloming

    +Permissions Design

    Permissions Design

    By John Prevost and Rafael H. Schloming

    OpenACS docs are written by the named authors, and may be edited by OpenACS documentation staff. -

    Essentials

    Essentials

    Introduction

    The goal of the Permissions system is to provide generic means to both @@ -183,4 +183,4 @@

    Rafael H. Schloming

    Documentation author -

    John Prevost

    Revision History

    Document Revision #Action Taken, NotesWhen?By Whom?
    0.1Creation9/11/2000John Prevost
    0.2Edited for ACS 4 Beta release10/04/2000Kai Wu
    View comments on this page at openacs.org
    +

    John Prevost

    Revision History

    Document Revision #Action Taken, NotesWhen?By Whom?
    0.1Creation9/11/2000John Prevost
    0.2Edited for ACS 4 Beta release10/04/2000Kai Wu
    View comments on this page at openacs.org
    Index: openacs-4/packages/acs-core-docs/www/permissions-tediously-explained.html =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/permissions-tediously-explained.html,v diff -u -r1.44.2.1 -r1.44.2.2 --- openacs-4/packages/acs-core-docs/www/permissions-tediously-explained.html 12 Jun 2011 20:03:48 -0000 1.44.2.1 +++ openacs-4/packages/acs-core-docs/www/permissions-tediously-explained.html 12 Jun 2011 20:52:57 -0000 1.44.2.2 @@ -1,5 +1,5 @@ -OpenACS Permissions Tediously Explained

    OpenACS Permissions Tediously Explained

    +OpenACS Permissions Tediously Explained

    OpenACS Permissions Tediously Explained

    by Vadim Nasardinov. Modified and converted to Docbook XML by Roberto Mello

    The code has been modified since this document was written so it is now out of date. See this forum thread.

    Permissions Overview

    Who (grantee_id) can do what @@ -105,7 +105,7 @@

    Context Hierarchy

    Suppose objects A, B, ..., and F form the following hierarchy. -

    Table 8.2. Context Hierarchy Example

    A

    +

    Table 9.2. Context Hierarchy Example

    A

    object_id=10

    B

    object_id=20 @@ -121,7 +121,7 @@ This can be represented in the acs_objects table by the following entries: -

    Table 8.3. acs_objects example data

    object_idcontext_id
    2010
    3010
    4020
    5020
    6030

    +

    Table 9.3. acs_objects example data

    object_idcontext_id
    2010
    3010
    4020
    5020
    6030

    The first entry tells us that object 20 is the descendant of object 10, and the third entry shows that object 40 is the descendant of object 20. By running a CONNECT BY query, Index: openacs-4/packages/acs-core-docs/www/permissions.html =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/permissions.html,v diff -u -r1.48.2.1 -r1.48.2.2 --- openacs-4/packages/acs-core-docs/www/permissions.html 12 Jun 2011 20:03:48 -0000 1.48.2.1 +++ openacs-4/packages/acs-core-docs/www/permissions.html 12 Jun 2011 20:52:57 -0000 1.48.2.2 @@ -1,9 +1,9 @@ -Groups, Context, Permissions

    Groups, Context, Permissions

    By Pete Su

    +Groups, Context, Permissions

    Groups, Context, Permissions

    By Pete Su

    OpenACS docs are written by the named authors, and may be edited by OpenACS documentation staff.

    Overview

    -The OpenACS 5.6.0 Permissions system allows developers and administrators to +The OpenACS 5.7.0 Permissions system allows developers and administrators to set access control policies at the object level, that is, any application or system object represented by a row in the acs_objects table can be access-controlled via a @@ -21,7 +21,7 @@

    The rest of this document discusses each of these parts, and how they fit together with the permissions system.

    Groups

    -OpenACS 5.6.0 has an abstraction called a party. Parties have a recursive +OpenACS 5.7.0 has an abstraction called a party. Parties have a recursive definition. We can illustrate how it works with the following simplified data model. First, we define the parties table, where each party has an email address and a URL for contact @@ -84,14 +84,14 @@ some object. Privileges are the basic units out of which we build access control policies. For example in the Unix filesystem, access is controlled by granting users some combination of read, write, or execute privileges on files and directories. In -OpenACS 5.6.0, +OpenACS 5.7.0, the table of privileges is organized hierarchically so that developers can define privileges that aggregate some set of privileges together. For example, if we have read, write, create and delete privileges, it might be convenient to combine them into a new privilege called "admin". Then, when a user is granted "admin" privilege, she is automatically granted all the child privileges that the privilege -contains. The OpenACS 5.6.0 kernel data model defines these +contains. The OpenACS 5.7.0 kernel data model defines these privileges:

     # 
    @@ -136,7 +136,7 @@
     OpenACS provides a object contexts as a means for controlling permissions of a large group
     of objects at the same time. 
     

    Object Context

    -In OpenACS 5.6.0, object context is a scoping +In OpenACS 5.7.0, object context is a scoping mechanism. "Scoping" and "scope" are terms best explained by example: consider some hypothetical rows in the address_book table: @@ -199,7 +199,7 @@

    See the package developer tutorials for examples on how to use permissions code.

    Summary

    -OpenACS 5.6.0 defines three separate mechanisms for specifying access control +OpenACS 5.7.0 defines three separate mechanisms for specifying access control in applications.

    1. The Groups data model allows you to define hierarchical organizations of users and groups of users. Index: openacs-4/packages/acs-core-docs/www/postgres.html =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/postgres.html,v diff -u -r1.49.2.1 -r1.49.2.2 --- openacs-4/packages/acs-core-docs/www/postgres.html 12 Jun 2011 20:03:48 -0000 1.49.2.1 +++ openacs-4/packages/acs-core-docs/www/postgres.html 12 Jun 2011 20:52:57 -0000 1.49.2.2 @@ -1,8 +1,8 @@ -Install PostgreSQL

      Install PostgreSQL

      by Vinod Kurup

      +Install PostgreSQL

      Install PostgreSQL

      by Vinod Kurup

      OpenACS docs are written by the named authors, and may be edited by OpenACS documentation staff. -

      Skip this section if you will run only Oracle.

      OpenACS 5.6.0 will run with PostgreSQL 7.3.2, 7.3.3, and 7.3.4 and 7.4.x. 7.4.7 is the recommended version of PostgreSQL.

      • Special notes for Mac OS X. If you are running Mac OS X prior to 10.3, you should be +

      Skip this section if you will run only Oracle.

      OpenACS 5.7.0 will run with PostgreSQL 7.3.2, 7.3.3, and 7.3.4 and 7.4.x. 7.4.7 is the recommended version of PostgreSQL.

      • Special notes for Mac OS X. If you are running Mac OS X prior to 10.3, you should be able to install and use PostGreSQL 7.3.x. Mac OS X 10.3 requires PostGreSQL 7.4.

      • Special Notes for Debian. 

        Debian stable user should install PostGreSQL from source as detailed below, or they should use the www.backports.org @@ -215,11 +215,11 @@ state. Red Hat and Debian and SuSE each work a little differently. If you haven't untarred the OpenACS tarball, you will need to do so now to access the postgresql.txt file.

        • Red Hat RPM:

          The init script is already installed; just turn it on for the appropriate run levels.

          [root root]# chkconfig --level 345 postgresql on
          -[root root]# 
        • Red Hat from source:

          [root src]# cp /var/tmp/openacs-5.6.0/packages/acs-core-docs/www/files/postgresql.txt /etc/init.d/postgresql
          +[root root]# 
        • Red Hat from source:

          [root src]# cp /var/tmp/openacs-5.7.0/packages/acs-core-docs/www/files/postgresql.txt /etc/init.d/postgresql
           [root src]# chown root.root /etc/rc.d/init.d/postgresql
           [root src]# chmod 755 /etc/rc.d/init.d/postgresql
           [root src]# 
          -cp /var/tmp/openacs-5.6.0/packages/acs-core-docs/www/files/postgresql.txt /etc/init.d/postgresql
          +cp /var/tmp/openacs-5.7.0/packages/acs-core-docs/www/files/postgresql.txt /etc/init.d/postgresql
           chown root.root /etc/rc.d/init.d/postgresql
           chmod 755 /etc/rc.d/init.d/postgresql

          Test the script.

          [root root]# service postgresql stop
           Stopping PostgreSQL: ok
          @@ -242,7 +242,7 @@
           [root ~]# chown root.root /etc/init.d/postgresql
           [root ~]# chmod 755 /etc/init.d/postgresql
           [root ~]# 
          -cp /var/tmp/openacs-5.6.0/packages/acs-core-docs/www/files/postgresql.txt /etc/init.d/postgresql
          +cp /var/tmp/openacs-5.7.0/packages/acs-core-docs/www/files/postgresql.txt /etc/init.d/postgresql
           chown root.root /etc/init.d/postgresql
           chmod 755 /etc/init.d/postgresql

          Test the script

          [root ~]# /etc/init.d/postgresql stop
           Stopping PostgreSQL: ok
          @@ -260,11 +260,11 @@
              /etc/rc5.d/S20postgresql -> ../init.d/postgresql
           [root ~]# /etc/init.d/postgresql start
           Starting PostgreSQL: ok
          -[root ~]#
        • FreeBSD:

          [root ~]# cp /tmp/openacs-5.6.0/packages/acs-core-docs/www/files/postgresql.txt /usr/local/etc/rc.d/postgresql.sh
          +[root ~]#
        • FreeBSD:

          [root ~]# cp /tmp/openacs-5.7.0/packages/acs-core-docs/www/files/postgresql.txt /usr/local/etc/rc.d/postgresql.sh
           [root ~]# chown root:wheel /usr/local/etc/rc.d/postgresql.sh
           [root ~]# chmod 755 /usr/local/etc/rc.d/postgresql.sh
           [root ~]# 
          -cp /tmp/openacs-5.6.0/packages/acs-core-docs/www/files/postgresql.txt /usr/local/etc/rc.d/postgresql.sh
          +cp /tmp/openacs-5.7.0/packages/acs-core-docs/www/files/postgresql.txt /usr/local/etc/rc.d/postgresql.sh
           chown root:wheel /usr/local/etc/rc.d/postgresql.sh
           chmod 755 /usr/local/etc/rc.d/postgresql.sh

          Test the script

          [root ~]# /usr/local/etc/rc.d/postgresql.sh stop
           Stopping PostgreSQL: ok
          @@ -282,7 +282,7 @@
                       rc.d/ part in each of the
                       following commands.
           
          -          

        [root ~]# cp /var/tmp/openacs-5.6.0/packages/acs-core-docs/www/files/postgresql.txt /etc/rc.d/init.d/postgresql
        +          

      [root ~]# cp /var/tmp/openacs-5.7.0/packages/acs-core-docs/www/files/postgresql.txt /etc/rc.d/init.d/postgresql
       [root ~]# chown root.root /etc/rc.d/init.d/postgresql
       [root ~]# chmod 755 /etc/rc.d/init.d/postgresql

      @@ -381,4 +381,4 @@ PostgreSQL Performance Tuning -

    ($Id$)
    View comments on this page at openacs.org
    +

    ($Id$)
    View comments on this page at openacs.org
    Index: openacs-4/packages/acs-core-docs/www/programming-with-aolserver.html =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/programming-with-aolserver.html,v diff -u -r1.47.2.1 -r1.47.2.2 --- openacs-4/packages/acs-core-docs/www/programming-with-aolserver.html 12 Jun 2011 20:03:48 -0000 1.47.2.1 +++ openacs-4/packages/acs-core-docs/www/programming-with-aolserver.html 12 Jun 2011 20:52:57 -0000 1.47.2.2 @@ -1,5 +1,5 @@ -Programming with AOLserver

    Programming with AOLserver

    By Michael Yoon, Jon Salz and Lars Pind.

    +Programming with AOLserver

    Programming with AOLserver

    By Michael Yoon, Jon Salz and Lars Pind.

    OpenACS docs are written by the named authors, and may be edited by OpenACS documentation staff.

    The global command

    @@ -210,4 +210,4 @@ 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$)
    View comments on this page at openacs.org
    +

    ($Id$)
    View comments on this page at openacs.org
    Index: openacs-4/packages/acs-core-docs/www/psgml-for-emacs.html =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/psgml-for-emacs.html,v diff -u -r1.39.2.1 -r1.39.2.2 --- openacs-4/packages/acs-core-docs/www/psgml-for-emacs.html 12 Jun 2011 20:03:48 -0000 1.39.2.1 +++ openacs-4/packages/acs-core-docs/www/psgml-for-emacs.html 12 Jun 2011 20:52:57 -0000 1.39.2.2 @@ -1,9 +1,9 @@ -Add PSGML commands to emacs init file (OPTIONAL)

    Add PSGML commands to emacs init file (OPTIONAL)

    +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 fixes the backspace -> help mis-mapping that often occurs in - terminals.

    [root tmp]# cp /tmp/openacs-5.6.0/packages/acs-core-docs/www/files/emacs.txt /etc/skel/.emacs
    +      terminals.

    [root tmp]# cp /tmp/openacs-5.7.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 psgml, provides a pretty good set of functionality that makes DocBook editing much less painless. In particular, nxml does syntax testing in real-time so that you can see syntax errors immediately instead of in the output of the xsltproc hours or days later. For debian, apt-get install nxml.

    View comments on this page at openacs.org
    Index: openacs-4/packages/acs-core-docs/www/psgml-mode.html =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/psgml-mode.html,v diff -u -r1.46.2.1 -r1.46.2.2 --- openacs-4/packages/acs-core-docs/www/psgml-mode.html 12 Jun 2011 20:03:48 -0000 1.46.2.1 +++ openacs-4/packages/acs-core-docs/www/psgml-mode.html 12 Jun 2011 20:52:57 -0000 1.46.2.2 @@ -1,5 +1,5 @@ -Using PSGML mode in Emacs

    Using PSGML mode in Emacs

    By David Lutterkort

    +Using PSGML mode in Emacs

    Using PSGML mode in Emacs

    By David Lutterkort

    OpenACS docs are written by the named authors, and may be edited by OpenACS documentation staff.

    Note: nxml mode replaces and/or complements psgml mode. More information.

    What it is

    PSGML Mode is a mode for editing, umm, SGML and XML documents in emacs. It Index: openacs-4/packages/acs-core-docs/www/release-notes.html =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/release-notes.html,v diff -u -r1.53.2.1 -r1.53.2.2 --- openacs-4/packages/acs-core-docs/www/release-notes.html 12 Jun 2011 20:03:48 -0000 1.53.2.1 +++ openacs-4/packages/acs-core-docs/www/release-notes.html 12 Jun 2011 20:52:57 -0000 1.53.2.2 @@ -1,6 +1,11 @@ OpenACS Release Notes

    OpenACS Release Notes

    The ChangeLogs include an annotated list of changes (Section , “Changelog (most recent release only)”) since the last release and in the -entire 5.6 release sequence Section , “Changelog for oacs-5-6”.

    Release 5.6.0

    • +entire 5.7 release sequence Section , “Changelog for oacs-5-7”.

      Release 5.7.0

      • + Made changes that extend acs-kernel's create_type and create_attribute procs, + so they're optionally able to create sql tables and columns. Optional metadata + params allow for the automatic generation of foreign key references, check + exprs, etc. +

      Release 5.6.0

      • Added new package dependency type, "embeds". This is a variant of the "extends" package dependency type added in OpenACS 5.5.0. It allows one to write embeddable packages, with scripts made visible in client packages @@ -76,14 +81,14 @@

        Templates have been modified to comply with HTML strict

        The Search package's results page has been improved

        TinyMCE WYSIWYG support has been added, RTE and HTMLArea support dropped

        acs-mail-lite's send has been cleaned up to properly encode content, to handle file attachments, etc. "complex-send" will disappear from acs-core in a future release.

      The ChangeLogs include an annotated list of changes (Section , “Changelog (most recent release only)”) since the last release and in the -entire 5.6 release sequence Section , “Changelog for oacs-5-6”.

      Release 5.3.1

      • Bug fixes.

        New TIPs implemented.

        All Core Automated Tests for Postgres pass.

        New Site and Blank master templates and CSS compatible with the .LRN Zen +entire 5.7 release sequence Section , “Changelog for oacs-5-7”.

        Release 5.3.1

        • Bug fixes.

          New TIPs implemented.

          All Core Automated Tests for Postgres pass.

          New Site and Blank master templates and CSS compatible with the .LRN Zen work. Compatibility master templates are provided for existing sites.

        The ChangeLogs include an annotated list of changes (Section , “Changelog (most recent release only)”) since the last release and in the -entire 5.6 release sequence Section , “Changelog for oacs-5-6”.

        Release 5.3.0

        • Bug fixes.

          New TIPs implemented.

          All Core Automated Tests for Postgres pass.

        Release 5.2.0

        • Bug fixes.

          New TIPs implemented.

          This release does not include new translations.

        Release 5.1.4

        • Bug fixes.

          The missing CR TCL API has been filled in, thanks to Rocael and +entire 5.7 release sequence Section , “Changelog for oacs-5-7”.

          Release 5.3.0

          • Bug fixes.

            New TIPs implemented.

            All Core Automated Tests for Postgres pass.

          Release 5.2.0

          • Bug fixes.

            New TIPs implemented.

            This release does not include new translations.

          Release 5.1.4

          • Bug fixes.

            The missing CR TCL API has been filled in, thanks to Rocael and his team and Dave Bauer.

            This release does not include new translations.

          Release 5.1.3

          • Bug fixes, primarily for .LRN compatibility in support of upcoming .LRN 2.1.0 releases. This release does not include new translations since 5.1.2.

          Release 5.1.2

          Release 5.1.1

          • This is the first release using the newest adjustment to the versioning convention. The OpenACS 5.1.1 tag will apply to OpenACS core as well as to the most recent released version of every package, including .LRN.

          • Translations syncronized with the translation server. + 5.1.0 in Section , “Changelog for oacs-5-7”.

          Release 5.1.1

          • This is the first release using the newest adjustment to the versioning convention. The OpenACS 5.1.1 tag will apply to OpenACS core as well as to the most recent released version of every package, including .LRN.

          • Translations syncronized with the translation server.

          • Bug 1519 fixed. This involved renaming all catalog files for ch_ZH, TH_TH, AR_EG, AR_LB, ms_my, RO_RO, FA_IR, @@ -94,7 +99,7 @@ the files and database before upgrading.)

          • Other bug fixes since 5.1.0: 1785, 1793, and over a dozen additional bug fixes.

          • For a complete change list, see the Change list since - 5.0.0 in Section , “Changelog for oacs-5-6”.

          Release 5.1.0

          • Lots of little tweaks and fixes

          • Complete Change list since 5.0.0 in Changelog

          • Many Bug fixes

          Release 5.0.4

          • New translations, including for .LRN 2.0.2.

          Release 5.0.1

          • All work on the translation server from 7 Nov 2003 to 7 Feb 2004 is now included in catalogs.

          • One new function in acs-tcl, util::age_pretty

          • Complete Change list since 5.0.0 in Changelog

          • Many documentation updates and doc bug fixes

          Release 5.0.0

          + 5.0.0 in Section , “Changelog for oacs-5-7”.

        Release 5.1.0

        • Lots of little tweaks and fixes

        • Complete Change list since 5.0.0 in Changelog

        • Many Bug fixes

        Release 5.0.4

        • New translations, including for .LRN 2.0.2.

        Release 5.0.1

        • All work on the translation server from 7 Nov 2003 to 7 Feb 2004 is now included in catalogs.

        • One new function in acs-tcl, util::age_pretty

        • Complete Change list since 5.0.0 in Changelog

        • Many documentation updates and doc bug fixes

        Release 5.0.0

        This is OpenACS 5.0.0. This version contains no known security, data loss, or crashing bugs, nor any bugs judged release blockers. This version has received manual testing. It has passed current automated testing, which is not comprehensive. This release contains work done on the translation server http://translate.openacs.org through 7 Nov 2003.

        Please report bugs using our @@ -103,7 +108,7 @@

        You may want to begin by reading our installation documentation for Section , “a Unix-like system”. Note that the Windows documentation is - not current for OpenACS 5.6.0, but an alternative is to use John + not current for OpenACS 5.7.0, but an alternative is to use John Sequeira's Oasis VM project.

        @@ -191,11 +196,11 @@

      • Serving backup files and files from the CVS directories is turned off by default via the acs-kernel parameter ExcludedFiles in section request-processor (The variable provides a string match glob list of files and is defaulted to "*/CVS/* *~") -

      ($Id$)

      Changelog (most recent release only)

      ChangeLog missing
      +

    ($Id$)

    Changelog (most recent release only)

    ChangeLog missing
    --> -

    Changelog for oacs-5-6

    +

    Changelog for oacs-5-7

     2009-09-05 21:44  donb
     
     	* packages/acs-content-repository/tcl/apm-callback-procs.tcl: The
    Index: openacs-4/packages/acs-core-docs/www/releasing-openacs-core.html
    ===================================================================
    RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/releasing-openacs-core.html,v
    diff -u -r1.18.2.1 -r1.18.2.2
    --- openacs-4/packages/acs-core-docs/www/releasing-openacs-core.html	12 Jun 2011 20:03:48 -0000	1.18.2.1
    +++ openacs-4/packages/acs-core-docs/www/releasing-openacs-core.html	12 Jun 2011 20:52:57 -0000	1.18.2.2
    @@ -1,5 +1,5 @@
     
    -OpenACS Core and .LRN

    OpenACS Core and .LRN

    1. Update Translations. Section , “How to Update the translations”

    2. Rebuild the Changelog. Rebuild the Changelog. I use a tool called cvs2cl. Run this command from the package root to automatically generate a Changelog file in the same dir. We generate two changelogs, one for the minor branch and one for the most recent release. The example below is for OpenACS 5.0.2:

      cd /var/lib/aolserver/$OPENACS_SERVICE_NAME
      +OpenACS Core and .LRN

      OpenACS Core and .LRN

      1. Update Translations. Section , “How to Update the translations”

      2. Rebuild the Changelog. Rebuild the Changelog. I use a tool called cvs2cl. Run this command from the package root to automatically generate a Changelog file in the same dir. We generate two changelogs, one for the minor branch and one for the most recent release. The example below is for OpenACS 5.0.2:

        cd /var/lib/aolserver/$OPENACS_SERVICE_NAME
         cvs2cl -F oacs-5-0 --delta openacs-5-0-0-final:oacs-5-0 -f ChangeLog
         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 repeated for .LRN modules (dotlrn-core in the dotlrn cvs tree) and for any modified modules in the .LRN prerequisites (dotlrn-prereq in openacs cvs tree). My current working model is that I bulk-update .LRN and OpenACS core but that I don't touch dotlrn-prereq modules - I just use the most recent release and it's up to individual package developers to tag and release those packages when they change. This model is already broken because following it means that dotlrn-prereqs don't get new translations.
        1. Update /var/lib/aolserver/$OPENACS_SERVICE_NAME/packages/acs-core-docs/www/xml/variables.ent with the new version number.

        2. Add new section in /var/lib/aolserver/$OPENACS_SERVICE_NAME/packages/acs-core-docs/www/xml/for-everyone/release-notes.xml @@ -139,4 +139,4 @@ # Clean up after ourselves... cd $BASE && rm -rf dotlrn-tarball tarball openacs-4 dotlrn-packages -

      ($Id$)
    View comments on this page at openacs.org
    +
    ($Id$)
    View comments on this page at openacs.org
    Index: openacs-4/packages/acs-core-docs/www/releasing-openacs.html =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/releasing-openacs.html,v diff -u -r1.27.2.1 -r1.27.2.2 --- openacs-4/packages/acs-core-docs/www/releasing-openacs.html 12 Jun 2011 20:03:48 -0000 1.27.2.1 +++ openacs-4/packages/acs-core-docs/www/releasing-openacs.html 12 Jun 2011 20:52:57 -0000 1.27.2.2 @@ -1,2 +1,2 @@ -Chapter 13. Releasing OpenACS
    View comments on this page at openacs.org
    +Chapter 14. Releasing OpenACS
    View comments on this page at openacs.org
    Index: openacs-4/packages/acs-core-docs/www/releasing-package.html =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/releasing-package.html,v diff -u -r1.13.2.1 -r1.13.2.2 --- openacs-4/packages/acs-core-docs/www/releasing-package.html 12 Jun 2011 20:03:48 -0000 1.13.2.1 +++ openacs-4/packages/acs-core-docs/www/releasing-package.html 12 Jun 2011 20:52:57 -0000 1.13.2.2 @@ -1,5 +1,5 @@ -How to package and release an OpenACS Package

    How to package and release an OpenACS Package

    In this example, we are packaging and releasing myfirstpackage as version 1.0.0, which is compatible with OpenACS 5.0.x.

    1. Update the version number, release date, and package maturity of your package in the APM.

    2. Make sure all changes are committed.

    3. Tag the updated work.:

      cd /var/lib/aolserver/$OPENACS_SERVICE_NAME/packages/myfirstpackage
      +How to package and release an OpenACS Package

      How to package and release an OpenACS Package

      In this example, we are packaging and releasing myfirstpackage as version 1.0.0, which is compatible with OpenACS 5.0.x.

      1. Update the version number, release date, and package maturity of your package in the APM.

      2. Make sure all changes are committed.

      3. Tag the updated work.:

        cd /var/lib/aolserver/$OPENACS_SERVICE_NAME/packages/myfirstpackage
         cvs tag myfirstpackages-1-0-0-final
         cvs tag -F openacs-5-0-compat
         

      Done. The package will be added to the repository automatically. If the correct version does not show up within 24 hours, ask for help on the OpenACS.org development forum.

      View comments on this page at openacs.org
      Index: openacs-4/packages/acs-core-docs/www/request-processor.html =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/request-processor.html,v diff -u -r1.47.2.1 -r1.47.2.2 --- openacs-4/packages/acs-core-docs/www/request-processor.html 12 Jun 2011 20:03:48 -0000 1.47.2.1 +++ openacs-4/packages/acs-core-docs/www/request-processor.html 12 Jun 2011 20:52:57 -0000 1.47.2.2 @@ -1,13 +1,13 @@ -The Request Processor

      The Request Processor

      By Pete Su

      +The Request Processor

      The Request Processor

      By Pete Su

      OpenACS docs are written by the named authors, and may be edited by OpenACS documentation staff.

      Overview

      -This document is a brief introduction to the OpenACS 5.6.0 Request Processor; +This document is a brief introduction to the OpenACS 5.7.0 Request Processor; more details can be found in the OpenACS 4 Request Processor Design. Here we cover the high level concepts behind the system, and implications and usage for the application developer.

      Request Processor

      -The 5.6.0 Request Processor is a global filter and set of Tcl procs that +The 5.7.0 Request Processor is a global filter and set of Tcl procs that respond to every incoming URL reaching the server. The following diagram summarizes the stages of the request processor assuming a URL request like http://someserver.com/notes/somepage.adp. @@ -36,7 +36,7 @@ extracts or sets up new session tokens for the user.

      Stage 3: Authorization

      Next, the Request Processor checks if the user has appropriate access -privileges to the requested part of the site. In OpenACS 5.6.0, access control +privileges to the requested part of the site. In OpenACS 5.7.0, access control is dictated by the permissions system. In this case, the RP checks if the user has "read" priviledges on the object in the site map specified by the URL. This object is typically @@ -127,4 +127,4 @@

      In a .vuh file, path_info is the trailing part of the URL not matched by the .vuh file. -

      ($Id$)
      View comments on this page at openacs.org
      +

      ($Id$)
    View comments on this page at openacs.org
    Index: openacs-4/packages/acs-core-docs/www/requirements-template.html =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/requirements-template.html,v diff -u -r1.47.2.1 -r1.47.2.2 --- openacs-4/packages/acs-core-docs/www/requirements-template.html 12 Jun 2011 20:03:48 -0000 1.47.2.1 +++ openacs-4/packages/acs-core-docs/www/requirements-template.html 12 Jun 2011 20:52:57 -0000 1.47.2.2 @@ -1,5 +1,5 @@ -System/Application Requirements Template

    System/Application Requirements Template

    By You

    +System/Application Requirements Template

    System/Application Requirements Template

    By You

    OpenACS docs are written by the named authors, and may be edited by OpenACS documentation staff.

    Introduction

    @@ -81,4 +81,4 @@ pre-existing system or prototype first, and thus you may want to write some thoughts on implementation, for aiding and guiding yourself or other programmers. -

    Revision History

    Document Revision #Action Taken, NotesWhen?By Whom?
    0.3Edited further, incorporated feedback from Michael Yoon9/05/2000Kai Wu
    0.2Edited8/22/2000Kai Wu
    0.1Created8/21/2000Josh Finkler, Audrey McLoghlin
    ($Id$)
    View comments on this page at openacs.org
    +

    Revision History

    Document Revision #Action Taken, NotesWhen?By Whom?
    0.3Edited further, incorporated feedback from Michael Yoon9/05/2000Kai Wu
    0.2Edited8/22/2000Kai Wu
    0.1Created8/21/2000Josh Finkler, Audrey McLoghlin
    ($Id$)
    View comments on this page at openacs.org
    Index: openacs-4/packages/acs-core-docs/www/rp-design.html =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/rp-design.html,v diff -u -r1.35.2.1 -r1.35.2.2 --- openacs-4/packages/acs-core-docs/www/rp-design.html 12 Jun 2011 20:03:48 -0000 1.35.2.1 +++ openacs-4/packages/acs-core-docs/www/rp-design.html 12 Jun 2011 20:52:57 -0000 1.35.2.2 @@ -1,5 +1,5 @@ -Request Processor Design

    Request Processor Design

    By Rafael H. Schloming

    +Request Processor Design

    Request Processor Design

    By Rafael H. Schloming

    OpenACS docs are written by the named authors, and may be edited by OpenACS documentation staff.

    Essentials

    • 13.0 SSL Hardware The system must work when the SSL processing occurs outside of the web server (in specialized hardware, in a -firewall, etc.).

    View comments on this page at openacs.org
    +firewall, etc.).

    View comments on this page at openacs.org
    Index: openacs-4/packages/acs-core-docs/www/snapshot-backup.html =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/snapshot-backup.html,v diff -u -r1.11 -r1.11.2.1 --- openacs-4/packages/acs-core-docs/www/snapshot-backup.html 17 Oct 2010 21:06:08 -0000 1.11 +++ openacs-4/packages/acs-core-docs/www/snapshot-backup.html 12 Jun 2011 20:52:57 -0000 1.11.2.1 @@ -1,5 +1,5 @@ -Manual backup and recovery

    Manual backup and recovery

    This section describes how to make a one-time backup and +Manual backup and recovery

    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 known-good versions of a service, such as at initial installation and just before an upgrade. First, you back up the Index: openacs-4/packages/acs-core-docs/www/style-guide.html =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/style-guide.html,v diff -u -r1.26.2.1 -r1.26.2.2 --- openacs-4/packages/acs-core-docs/www/style-guide.html 12 Jun 2011 20:03:48 -0000 1.26.2.1 +++ openacs-4/packages/acs-core-docs/www/style-guide.html 12 Jun 2011 20:52:57 -0000 1.26.2.2 @@ -1,7 +1,7 @@ -OpenACS Style GuideOpenACS Style Guide

    OpenACS Style Guide

    + ">

    OpenACS Style Guide

    By Jeff Davis

    Motivation

    Why have coding standards for OpenACS? And if the code works why change it to @@ -90,6 +90,6 @@

  • Solicit code reviews.  Ask others to look over your code and provide feedback and do the same for others. -

  • Revision History

    Document Revision #Action Taken, NotesWhen?By Whom?
    0.1Creation12/2003Jeff Davis
    ($Id$)